ADC ATMEGA328P

OP #3250775
Lesenswert?
• ▲
▼
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 :)
OP #3250815
Lesenswert?
• ▲
▼
Dietrich L. schrieb:
> Frank Waller schrieb:
> ADCSRA = (1<<ADATE) | (1 << ADEN) | (1 << ADIE) | (1 << ADPS2) | (1 <<
> ADPS1);
> ...
> ADCSRA= (1<<ADSC); //AD-Wandler starten (Free Running Mode)
> In der unteren Zeile überschreibst Du alle vorher gesetzten Bits.
> Es muss also heißen:ADCSRA |= (1<<ADSC); //AD-Wandler starten (Free
> Running Mode)
>
> Gruß Dietrich

Oh danke wie blöd von mir^^ Eigentlich hatte ich noch daran gedacht aber 
es dann wohl doch nicht gemacht.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.