Again ADC with 12F675 ...


Closed Thread
Results 1 to 30 of 30

Hybrid View

  1. #1
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    Update picture...
    Name:  upd.jpg
Views: 1849
Size:  135.4 KB

  2. #2
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    SOLVED !!!
    In first case the code is :
    "If adval > 419 and adval < 536 then gosub LED" = working fine.
    In second case :
    "If adval > 450 and adval < 600 then gosub LED" = NOT working.

    So I tried this :
    "If adval < 600 and adval > 450 then gosub LED"
    And VOILA, IT'S WORKING !!!

    Thanks for support ! Regards !

  3. #3
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,170


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    I don't get it. That looks identical to me.

    Robert

  4. #4
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    For me too ... But I can prove it (by video) !
    Maybe because when no button is pressed, ADC reading is NOT 1023 ?!

  5. #5
    Join Date
    Jan 2013
    Location
    Texas USA
    Posts
    229


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    I do not know what version of PICBasic you are using or what version of MPASM either.

    I compiled and ran the following code in the MPASM Simulator and it works fine for all (3) IF/THEN statements in main.

    If adval <= 419 then myLED does not increment.
    If adval > 419 and <= 450 then myLED only increments 1 time for each loop (IF/THEN #1 : Not #2 and #3)
    if adval > 450 and < 536, then myLED increments 3 times for each loop (IF/THEN #1, #2 and #3)
    if adval => 536 and < 600 then myLED increments 2 times for each loop (IF/THEN #2 and #3 : Not #1)
    if adval => 600 then myLED does not increment.

    Code:
    'MCU = 12F675
    'PBP v3.0.7.4
    'MPASM v8.90
    
    
    DEFINE OSC  4
    DEFINE ADC_BITS 10
    DEFINE ADC_CLOCK 3
    DEFINE ADC_SAMPLEUS 50
    
    CMCON = 7
    OPTION_REG  = %10000110
    TRISIO      = %00001100	  		
    GPIO        = %00000001
    ANSEL       = %00010100   
    ADCON0      = %10001001
    
    adval var word
    myLED var word
    
    adval = 0
    myLed = 0
    
    goto main
    
    LED:
        myLED = myLEd + 1
    
        return
    
    main:
        for adval = 0 to 700
            If adval > 419 and adval < 536 then gosub LED   'Works
            If adval > 450 and adval < 600 then gosub LED   'Works
            If adval < 600 and adval > 450 then gosub LED   'Works
        next
    	myLed = 0
        
        goto main
    Regards,
    TABSoft

  6. #6
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    Thanks !
    In Proteus my code work fine too ... But not work in "real life".
    Tomorrow I will come with another issue ...

  7. #7
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Again ADC with 12F675 ...

    ...so I'm back !
    After solving first problem, I meet another one ... I can not reading two channel ADC.
    I try two version of code :
    -first variant
    Code:
    @ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _CP_ON 
    DEFINE OSC  4
       
    
    CMCON       = 7
    OPTION_REG.7= 1 
    TRISIO      = %00001110	  	
    GPIO        = %00000001
    ANSEL       = %00110110 
    ADCON0.7    = 1
    
    adval  var word
    advalb var word
    
    PAUSE 200
    
    main:
    
     ADCON0.2 = 1 
     ADCON0.3 = 0      
     ADCON0.1 = 1
     WHILE ADCON0.1 = 1 : WEND
     adval.HighByte = ADRESH
     adval.LowByte = ADRESL
     PAUSE 50
    
    if adval < 950 then
    	if adval < 940 AND adval > 650 THEN gosub Led1
    	IF adval < 600 AND adval > 450 THEN gosub Led2  
    	IF adval < 400 AND adval > 150 THEN gosub Led3
    	IF adval < 100 THEN gosub Led4                   
    endif
    
     ADCON0.2 = 0
     ADCON0.3 = 1
     ADCON0.1 = 1
     WHILE ADCON0.1 = 1 : WEND
     adval.HighByte = ADRESH
     adval.LowByte = ADRESL
     PAUSE 50
    
    if advalb < 950 then
    	if advalb < 940 AND advalb > 650 THEN gosub Led1
    	IF advalb < 600 AND advalb > 450 THEN gosub Led2   
    	IF advalb < 400 AND advalb > 150 THEN gosub Led3
    	IF advalb < 100 THEN gosub Led4                 
    endif
    
    goto main
    -second variant
    Code:
    @ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _CP_ON 
    
    DEFINE OSC  4
    
    DEFINE ADC_BITS     10          
    DEFINE ADC_CLOCK    3
    DEFINE ADC_SAMPLEUS 200      
    
    CMCON = 7
    OPTION_REG  = %10000110
    TRISIO      = %00000110	  	
    GPIO        = %00000110
    ANSEL = %00000110
    ADCON0.7    = 1  
    
    
    
    ADVALA  VAR WORD
    ADVALB  VAR WORD
    
    pAUSE 100
    
    main:
    
    adcin 1, advalA
    pause 5
    if advalA < 950 then
    	if advaLA < 940 AND advalA > 650 THEN gosub LED1
    	IF advalA < 600 AND advalA > 450 THEN gosub LED2     
    	IF advalA < 400 AND advalA > 150 THEN gosub LED3     
    	IF advalA < 100 THEN gosub LED4                   
    endif
    
    adcin 2, advalB
    pause 5
    if advalB < 950 then 
     	if advalB < 940 AND advalB > 655 THEN gosub LED1 
    	IF advalB < 600 AND advalB > 450 THEN gosub LED2   
    	IF advalB < 400 AND advalB > 150 THEN gosub LED3   
    	IF advalB < 100 THEN gosub LED4  
    endif                  
                   
    
    goto main
    ONLY "advalA < 100" is sensing and LED4 command is executed ...
    Can somebody pointing to the right direction ? Thanks in advance !
    Schematic added.
    Name:  ADC_double.jpg
Views: 1985
Size:  139.1 KB

Similar Threads

  1. ADC values above 4095 for 12 bit ADC
    By longpole001 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 1st February 2015, 22:24
  2. ADC problem on 18F46K22 device using all 28 ADC pins
    By JimAvanti in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 23rd February 2012, 20:22
  3. 12f675
    By mystified in forum mel PIC BASIC
    Replies: 6
    Last Post: - 10th September 2007, 02:47
  4. 12F675 ADC 'Issues'
    By harrisondp in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 31st March 2005, 01:55
  5. ADC on 12f675?
    By peu in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 16th March 2005, 17:44

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