Hallo zusammen,
ich sehe momentan wohl den Wald vor lauter Bäumen nicht. Darum poste ich
es hier und hoffe, dass jemand den Fehler gleich erkennt.
Ich versuche eine ADC-Wandlung im Freerunningmode zu starten. Nach einer
Wandlung eines Wertes soll ein Interrupt aufgerufen werden, der den Wert
in einem Array speichert. Nach 200 Werten soll dann mit dem Array
gerechnet werden.
Mein Problem ist nun, dass die AD-Wandlung nicht stattfindet, oder
zumindest der Interrupt nie aufgerufen wird. Eigentlich kann das ja nur
an der Initialisierung liegen oder?
Hier ist die Initialisierung:
1 | //ADC Init
|
2 | ADMUX = (1 << REFS0);//interne Referenz = Betriebsspannung
|
3 |
|
4 | ADCSRA = (1<<ADATE) | (1 << ADEN) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1);
|
5 | //Free Running mode, ADC=Ein, ADC Interrupt enable, Prescaler 64 = 125kHz bei F_CPU = 8Mhz
|
6 |
|
7 | sei(); // Set the I-bit in SREG
|
8 |
|
9 | ADCSRA= (1<<ADSC); //AD-Wandler starten (Free Running Mode)
|
Meine ISR habe ich nun auf das Einschalten einer einzigen LED
komprimiert:
1 | ISR(ADC_vect)
|
2 | {
|
3 | PORTC |= (1<<PORTC3);
|
4 | }
|
Diese LED leuchtet aber nie (sie funktioniert, habe sie im Hauptprogramm
schon öfters zum Debuggen benutzt)
Ich sehe den Fehler leider nicht. Oder funktioniert mein Vorhaben von
Grund auf nicht?
Vielen Dank schon mal im Vorraus
Mfg Franky :)