logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak używać ADC w trybie free w Bascom AVR na Atmega8?

liba 10 Gru 2007 22:16 2289 2
REKLAMA
  • #1 4574470
    liba
    Poziom 14  
    Posty: 235
    Pomógł: 1
    Ocena: 17
    Chcę użyć przetwornika AD w Atmega8. Programuje w bascomie AVR. Jest tam funkcja GetADC i nie mam żadnego problemu z jej uzyciem, ale ma ona taka zasadncizą wadę, że dziala tylko w trybie single i po jej wywołaniu czeka aż konwersja zostanie zakończona. (Jest to dość naturalne, bo przecież musi zwrócić wynik konwersji). Zależało by mi, aby uniknąć tego czekania, właczyć ADC w trybie FREE (ciągła konwersja) i odczytywać wynik konwersji wtedy kiedy będzie mi to akurat potrzebne. Skonfigurowałem więc ADC tak:

    Config Adc = Free , Prescaler = Auto , Reference = Internal
    Start Adc


    Help Bascoma twierdzi, że w zmiennej ADCD jest wynik ostatniej konwersji i że jest to odzwierciedlenie odpowiednich rejestrów procka. Niestety nie udało mi się uzyskać wyniku konwersji bez wywołania getADC, nie wiem też jak określić w bascomie kanał z którego napięcie ma być konwertowane.

    Proszę o jakąs porade, jak sobie poradzić z tym problemem... chciałbym używać ADC w trybie free i odczytywać wynik konwersji w momencie kiedy mi się to ubzdura, chciałbym też móc określać kanał... Obawiam się że konieczne sa wstawki w ASM, niestety nie mam o tym pojęcia, może mi ktoś pomoże?
    Z góry dzięki
  • REKLAMA
  • #2 4574675
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 131
    Możesz robić wpisy do rejestrów przez zwykłe przypisanie np:
    
    Admux = &B01100001
    Adcsr = &B11100101 
    

    i tak samo z nich odczytywać, np:
    
    A1 = Adch
    Locate 1 , 1 : Lcd A1
    

    Dokumentacja w dłoń i do dzieła ;)
  • #3 4681170
    Sind
    Poziom 16  
    Posty: 182
    Pomógł: 9
    Ocena: 3
    WItam

    Mozez odwolywac sie bezposrednio do rejestrow uP, nie potrzeba wstawek asm.

    Tylko pamietaj aby odczytac dane z przetwornika nalezy odczytac najpierw MBS a pozniej LBS, bo gdy odczytasz samo MBS to niestety ale zablokujesz sobie ADC do momentu az odczytasz LBS...

    mozesz to zrobic np tak:
    
    dim Master as byte
    dim lower as byte
    
    master=ADCH
    lower = ADCL
    
    


    pamietaj o odczycie ADCL inaczej nie bedziesz mogl kolejny raz odczytac ADCH


    Pozdrawiam
REKLAMA