Błąd w użyciu wielu kanałów ADC w AVR ATmega8

H

habibparacha

Guest
Staram się korzystać z wielu kanałów ADC za pomocą przerwań ale gdy uruchomić symulację w proteus to daje błąd. Tylko pierwszej konwersji jest zapisywany i rejestru ADCL następnego przekształcenia nie są zapisywane w niej. Daje błąd. Poniżej jest mój kod i obraz pojawia się błąd Uprzejmie Pomoc [syntax = c] # include # include # include # include # include # define NUMCHANNELS 2 volatile uint8_t CurrentCh; volatile uint8_t Channel; ISR (ADC_vect) {PORTD = ADCL; Kanał + +; CurrentCh = kanał & 0b00000111; if (Kanał
 
Problem jest PORTD = ADCL; Jeśli zaznaczysz arkusz jest napisane
[color = "# FF0000"] Kiedy ADCL jest czytać, rejestru danych ADC nie jest aktualizowany do ADCH odczytu [/COLOR]. W związku z tym, jeżeli wynik pozostaje ustawione i nie więcej niż 8-bitowa precyzja wymaga, wystarczy ADCH odczytu. W przeciwnym razie, ADCL należy czytać, potem ADCH.
Więc musisz albo czytać ADCH zbyt lub zastąpić powyższą linię PORTD = ((0xff) i ADCW) lub w lewo i ustawić wynik czytaj ADCH
 

Welcome to EDABoard.com

Sponsor

Back
Top