Forum: Mikrocontroller und Digitale Elektronik AtMega168 resettet sich nach ADCconfig -> Vector falsch?


von Björn G. (tueftler)


Lesenswert?

Hi da.

Benutze WinAVR und das AVR-Studio. Debug per Debugwire.

Habe gerade ein merkwürdiges Problem.
Mein AtMega168 resettet ca. bei Sei() vor der while(1) wenn ich in der 
ADCconfig() (1<<ADIE) gesetzt habe.
Danach bootet er nochmal neu usw...

Ich habe derzeit echt überhaupt keine Ahnung was das Teil gerade von mir 
möchte.
Habe testweise schon die ISR und die ADCconfig() von einem anderen 100% 
lauffähigem Projekt kopiert und eingepflanzt -> gleiches Ergebnis.

Was mich wundert ist, das in der iomx8.h als ADC Interrupthandle-Vector 
"_VECTOR(21)" steht.
Laut Datenblatt ist es aber der Vektor 22!?
Wird hier unterschiedlich gezählt? Einmal ab 0 - einmal ab 1?
Änderung bringt aber auch keine Verbesserung.
Selbst das auskommentieren der kompletten ISR nützt nichts.

Kann mir bitte jemand einen Tip geben wo ich noch suchen kann?

Hier noch die config:
1
void adc_config(void)
2
{
3
  ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIE) | (1<<ADPS1) | (1<<ADPS2) | (1<<ADPS0);  //ADC-Config
4
5
  ADMUX |= (1<<REFS0) | (1<<REFS1);                                  //VCC-Ref intern 1v1
6
}

Björn

von Björn G. (tueftler)


Lesenswert?

Wenn ich nach der Config ADIE = false setze, läuft der Controller 
wunderbar.
Sobald ich mittem im Programm dieses wieder auf true setze gibts wieder 
ein Reset.

...das Problem ist, das dass Projekt morgen zum Kunden muß :(

von g457 (Gast)


Lesenswert?

Implementier mal den BADISR - nur um sicher zu gehen (oder 
auszuschließen) dass es (k)ein fehlgeleiteter Interrupt ist.

> Wird hier unterschiedlich gezählt? Einmal ab 0 - einmal ab 1?

Ja.

von Björn G. (tueftler)


Lesenswert?

Hi g457.

Habe gerade den Handler implementiert und getestet.
...nu bin ich baff...
1) Sie wird nicht angesprungen
2) Nachdem ich sie wieder weg gemacht habe, ist der Fehler 
verschwunden!?

Was ist denn nun los - sowas mag ich ja gar nicht :(

Danke für den Tip erst einmal und witzig das hier unterschiedlich 
gezählt wird :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.