How to read analog signals?


Closed Thread
Results 1 to 24 of 24

Hybrid View

  1. #1
    Join Date
    Dec 2008
    Posts
    24


    Did you find this post helpful? Yes | No

    Default

    still bumping

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    If you post the code that YOU wrote that is giving trouble maybe someone will take a look at it... But who knows...
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Dec 2008
    Posts
    24


    Did you find this post helpful? Yes | No

    Default

    Ye i will try to post a code once i get a list of commands or a setup on how to read analog signals I mean I jsut need osme info thats all.

  4. #4
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by thm ov3rkill View Post
    Ye i will try to post a code once i get a list of commands or a setup on how to read analog signals I mean I jsut need osme info thats all.
    Maybe you missed post #4?
    Bruce also has some really good info here
    http://www.rentron.com/PIC12C67XAD.htm
    You will have to look at it from an ANSEL perspective though.
    Dave
    Always wear safety glasses while programming.

  5. #5
    Join Date
    Mar 2008
    Location
    Gerogetown, Texas
    Posts
    94


    Did you find this post helpful? Yes | No

    Default

    Here is a rapid fire project I made for my son. It has four states, 1) off, 2) 20 shot/sec, 3) 10shots/sec and 4) 5 shots/sec. You control the speed by tapping on the SYNC switch on the 360 controller. I used a 12F683. This will only work for the newer (CG or common ground) controllers.
    The x-box trigger is a pot. when the trigger is pulled the wiper voltage goes from near zero to 3 volts. This circuit changes the pin (GP0) from input (tri-state) to a output with zero volts. There may be a little overkill, I was playing with Darrel's Instant Interrupts

    Code:
    @ __CONFIG   _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSCIO 
    
    ANSEL = %00000000	'Make sure Analog functions are turned OFF (should not be needed)
    CMCON0 = 7    'comparators off
    OPTION_REG.7 = 0            'enable weak pullups
    TRISIO = %00100101
    WPU = %00000100     'weak pullup
    OPTION_REG.6 = 0    'falling edge trigger
    
    ;***** VARIABLE DEFINITIONS******************
    
    STATE		Var  byte		;programmed state
    
    '';************************************************************************
    '                    _______
    '             VDD  -|1     8|- VSS
    '             GP5  -|2     7|- GP0 TriggerR out ->
    '             GP4  -|3     6|- GP1
    '             GP3  -|4_____5|- GP2   <- sync
    '
    '
    '
    '
    '*********GPIO pin names**************************************************
    LED			    var		GPIO.5      'led output useing player 4 led
    Sync    		var		GPIO.2      'sync switch input
    TRIGGERR		var		GPIO.0      'rapid trigger output
    '**********************************************************************
    
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler   TMR1_INT,   ReloadTMR1,   ASM,  no    ; MUST be first
            INT_Handler   TMR1_INT,  _TriggerOut,   PBP,  yes
            INT_Handler    INT_INT,  _ChangeState,   PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
        TMR1H = $A0       ' load timer1 with $00FF
        TMR1L = $B3
    
    T1CON = $00
    @ INT_ENABLE  TMR1_INT            ; enable Timer 1 interrupts
    @ INT_ENABLE   INT_INT     ; enable external (INT) interrupts
    
    ;--- Change these to match the desired interrupt frequency -------------------
    ;--- See http://DarrelTaylor.com/DT_INTS-14/TimerTemplate.html for more Info.
    @Freq       = 20                  ; Frequency of Interrupts in Hz
    @Prescaler  = 1                   ; Timers Prescaler setting
    T1CON = $00                       ; $30 = Prescaler 1:8, TMR1 OFF
    ; $00=1:1, $10=1:2, $20=1:4, $30=1:8 --  Must match @Prescaler value
    
    
    
    State = 0
    
    goto Main
    '***************************************************************************
    ChangeState:       ' Three states rapid fire 20 SPS 10 SPS and off
         pause 10
         if sync = 0 then   ' Switch debounce
             if state = 3 then state = 0
             select case state
              case 0      'twenty shots per sec
                   gosub starttimer
              case 1      'ten shots per sec
                   T1CON = $11
              case 2      ' five shots per second
                   T1CON = $21
              
              case 3   'off
                   T1CON = $00   'timer off
                   TRISIO = %00100101
              end select
             state = state + 1
         endif  
         
    @ INT_RETURN
    
    '***************************************************************************
    TriggerOut:
        TRIGGERR = 0     'Trigger 0
        TRISIO.0 = 0     ' Trigger output the 0
        low LED          'turn on led
        TRISIO.5 = 0     'make led a output
        pause 25         'pause 25 ms
        high led         'turn off led
        TRISIO.0 = 1     'put trigger in tristate mode (float)
        input LED        'put led in tristate mode (PCP method)
    @ INT_RETURN
    '***************************************************************************
    
    Main:
    
    'nothing happening here yet just using interupts for this project
    
    goto main
    ;---[TMR1 reload - interrupt handler]-----------------------------------------
    ASM                               ; Calculate Timer Reload Constant
    ReloadInst  = 8                   ; # of Intructions used to reload timer
      if ((Prescaler == 1)||(Prescaler == 2)||(Prescaler == 4)||(Prescaler == 8))
    MaxCount    = 65536 + (ReloadInst / Prescaler)
    TimerReload = MaxCount - (OSC*1000000/4/Prescaler/Freq)
        if ((TimerReload < 0) || (TimerReload > (65535-ReloadInst)))
            error Invalid Timer Values - check "OSC", "Freq" and "Prescaler"
        endif
      else
          error Invalid Prescaler
      endif
    ENDASM
    
    @Timer1 = TMR1L                   ; map timer registers to a word variable
    Timer1       VAR WORD EXT
    TimerReload  CON EXT              ; Get the External Constant
    TMR1ON       VAR T1CON.0          ; Alias the Timers ON/OFF bit
    
    ;---Reload Timer1------
    ASM
    ReloadTMR1
        MOVE?CT  0, T1CON, TMR1ON     ;  1     stop timer
        MOVLW    LOW(TimerReload)     ;  1     Add TimerReload to the 
        ADDWF    TMR1L,F              ;  1     value in Timer1
        BTFSC    STATUS,C             ;  1/2
        INCF     TMR1H,F              ;  1
        MOVLW    HIGH(TimerReload)    ;  1
        ADDWF    TMR1H,F              ;  1
        MOVE?CT  1, T1CON, TMR1ON     ;  1     start timer
      INT_RETURN
    ENDASM
    ;---Start/Stop controls -----
    StartTimer:
        Timer1  = TimerReload         ; Load Timer
        TMR1ON = 1                    ; start timer
    RETURN
    
    StopTimer:
        TMR1ON = 0                    ; stop timer
    RETURN
    Hope it helps a little

    Dave

Similar Threads

  1. Cleaning up code
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd December 2009, 07:14
  2. pic18f analog comparator problem
    By david.silaghi in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 6th May 2009, 09:38
  3. SEROUT WORD variable problem
    By Tobias in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 19th April 2009, 11:20
  4. Changing declared variables names on the fly
    By jessey in forum mel PIC BASIC Pro
    Replies: 15
    Last Post: - 16th December 2006, 06:34
  5. analog read
    By swordman in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 12th August 2004, 19:37

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts