Hallo, habe ein Problem mit meiner Interrupt Routine. Wahrscheinlich mal wieder nur eine Kleinigkeit aber ich komme einfach nicht darauf. Hier ein Ausschnitt: void init_ADC(void) { //ADC ADMUX = (1<<REFS0) | (1<<ADLAR); // interne Referenzspannung nutzen // linkes Datenregister ADCSRA = (1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // ADC Interrupt Flag enable // ADC Prescaler ADCSRA = (1<<ADEN); // ADC Enable ADCSRA = (1<<ADATE); // Automatisches Convertieren bei steigender Flanke am gewähltem Eingang ADCSRA |= (1<<ADSC); //Data gStatusPoti = Poti_1; } ISR(ADC_vect) { if (gStatusPoti == Poti_1) { ADMUX &= ~(1<<MUX0); ADMUX &= ~(1<<MUX1); ADMUX &= ~(1<<MUX2); //ADCSRA = (1<<ADSC); // Start Conversion gPoti[0] = ADCH; gStatusPoti = Poti_2; } if (gStatusPoti == Poti_2) { ADMUX = (1<<MUX0); ADMUX &= ~(1<<MUX1); ADMUX &= ~(1<<MUX2); //ADCSRA = (1<<ADSC); // Start Conversion gPoti[1] = ADCH; gStatusPoti = Poti_3; } } In meiner Main Funktion rufe ich erst die ADC_init Funktion auf und dann sollte er nach dem Starten des ADC in meine ISR hüpfen....macht er aber (laut Simulation) nicht. Habe aber keine Idee wie ich ihn dazu bringe. Wäre Dankbar, wenn ihr euch mal den Quellcode anseht und evtl. einen Tipp für mich habt. MFG Timm
>ADCSRA = (1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // ADC Interrupt >ADCSRA = (1<<ADEN); // ADC Enable Das ist ungefähr so wie ADCSRA = 0 ADCSRA = 1 ADCSRA = 255 Welchen Wert hat ADCSRA am Ende?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.