ADC-Interrupt springt nicht an
Hallo zusammen,
ich mache im Moment etwas mit vielen Timern und Interrupts. Der Overflow-Interrupt funktioniert auch, Code:
Code:
ISR(TIMER1_OVF_vect) // Timer1 Überlauf
{
TCNT1 = 64202; //64202 vorladen
POS_LED_TOGGLE ();
}
Das "POS_LED_TOGGLE ();" kann ich wunderbar auf dem Oszi sehen, die Zeiten stimmen auch (83µs)
Jetzt soll der ADC bei jedem Überlauf gestartet/getriggert werden und wenn er fertig ist soll er einen Interrupt auslösen:
Code:
void POS_LDR_INIT (void)
{
ADCSRA |= (1 << ADEN) | (1 << ADATE) | (1 << ADIF); // ADC enable + triggern enable + interrupt wenn fertig
SFIOR |= (1 << ADTS2) | (1 << ADTS1); // triggern bei timer1 überlauf
sei();
}
Das LED_TOGGLE hab ich aus dem Timer1-Interrupt rausgeschmissen, dafür hier hinein gepackt:
Code:
ISR(ADC_vect)
{
POS_LED_TOGGLE ();
}
Ich hab aber auf dem Oszi ein dauerhaftes high (<- kommt vom INIT). Nix Rechteck... :-(
Weis jemand warum? Hab ich irgend ein Register beim ADC vergessen?
Viele Grüße und vielen Dank schonmal
-schumi-
PS: µC = Atmega32, Compiler = AVR-GCC
EDIT: Hier gibts alle Sources als Zip: http://dl.dropbox.com/u/19005544/RN-ADC-Interrupt.zip