A/D converter fails?


Closed Thread
Results 1 to 15 of 15

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    That's odd. It works for me without getting stuck.

    I modified your version to include 3 LED's in the last section of each channel read routine,
    and all 3 LED's blink right along.

    It doesn't appear to be getting getting stuck at any point.
    Code:
        @ DEVICE HS_OSC, WDT_ON, LVP_OFF, PROTECT_OFF
        DEFINE OSC 20
        
        SYMBOL AD_Progress = ADCON0.2
        SYMBOL ADON = ADCON0.0
        SYMBOL LED1 = PORTB.0
        SYMBOL LED2 = PORTB.1
        SYMBOL LED3 = PORTB.2
      
        Sound_Level VAR WORD
        Negative_Voltage VAR WORD
        Positive_Voltage VAR WORD
        
        TRISA.0 = 1         ' A/D input
        PORTB = %00000111   ' LED's on at boot
        TRISB = 0           ' LED outputs
          
        ADCON0 = 128    ' A/D clock Fosc/32, RA0/AN0, A/D disabled
        ANSEL = 1       ' RA0 analog
        ADCON1.7 = 1    ' right justify for 10-bit
    
    Main:
        ADON = 1        ' turn on A/D module
        PAUSE 50        ' wait
        AD_Progress = 1 ' start conversion 
        WHILE AD_Progress = 1: WEND
        Sound_Level.lowbyte = ADRESL
        Sound_Level.highbyte = ADRESH
        LED1 = LED1 ^ 1    ' toggle LED for visual
        
        'retrieve negative level
        ADCON0.5 = 0
        ADCON0.4 = 0
        ADCON0.3 = 1
        PAUSE 50
        AD_Progress = 1
        WHILE AD_Progress = 1: WEND
        Negative_Voltage.lowbyte = ADRESL
        Negative_Voltage.highbyte = ADRESH
        LED2 = LED2 ^ 1    ' toggle LED for visual
        
        'retrieve positieve level
        ADCON0.5 = 0
        ADCON0.4 = 1
        ADCON0.3 = 0
        PAUSE 50
        AD_Progress = 1
        WHILE AD_Progress = 1: WEND
        Positive_Voltage.lowbyte = ADRESL
        Positive_Voltage.highbyte = ADRESH
        LED3 = LED3 ^ 1    ' toggle LED for visual
        GOTO Main
        
        END
    Are you reading 0-5 VDC voltage levels?
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  2. #2
    egberttheone's Avatar
    egberttheone Guest


    Did you find this post helpful? Yes | No

    Default

    yes, i'm reading voltage's between 0-5VDC. i found out that it doesn't mather where i place the pause command(in the interrupt routine); it instant freez the pic forever. The AD routine is placed in a interrupt routine is it not possible to place a pause periode into a interrupt handel?

    note: timer0, timer1 and serial interrupt are activated.

  3. #3
    egberttheone's Avatar
    egberttheone Guest


    Did you find this post helpful? Yes | No

    Default

    any one ?

  4. #4
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    Are you using BASIC or assembler interrupts?

    Can you post the code you're having problems with?
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  5. #5
    egberttheone's Avatar
    egberttheone Guest


    Did you find this post helpful? Yes | No

    Default

    i do not want to post the code; but i can email it to you. i'm using the basic interrupt routine (on interrupt goto handel)

  6. #6
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    Are you clearing "all" interrupt flags before exiting your interrupt handler?
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  7. #7
    egberttheone's Avatar
    egberttheone Guest


    Did you find this post helpful? Yes | No

    Default

    Yes, but can i use a pause command in the interupt?

    Code:
    Disable ' interrupt handler
    Handle:
    
    if RCIF = 1 then ' serial intterupt
    RCIF = 0 ' clearing interrupt flags
    IF OERR THEN            ' Clear over-runs if OERR set
    CREN = 0             ' Disable USART receive
    CREN = 1             ' Re-enable USART receive
    ENDIF
    'Serial commands.
    endif
    
    
    IF TMR0IF = 1 THEN 'RECEIVE all A/D value's
    TMR0IF = 0
    gosub CoversionsAD
    gosub saftycontrol  'check al received value's
    ENDIF
    
    if TMR1IF = 1 then
    TMR1IF = 0
    gosub PacketSend
    endif
    
    TimeOut:
    resume
    enable
    Last edited by egberttheone; - 13th February 2006 at 18:14.

Similar Threads

  1. Replies: 9
    Last Post: - 31st July 2008, 08:56
  2. A/D converter sample
    By allan josephus in forum mel PIC BASIC
    Replies: 5
    Last Post: - 23rd February 2008, 19:44
  3. A/D converter with pic16f84, i need a help
    By micro in forum General
    Replies: 0
    Last Post: - 13th December 2005, 21:17
  4. help with pic16f870 a/d converter
    By cammo in forum mel PIC BASIC
    Replies: 3
    Last Post: - 22nd March 2005, 05:16
  5. Re Cs5532 A/d Converter
    By massquip in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 29th April 2004, 16:31

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