Hallo. Ich hoffe nochmals auf Eure Hilfe. Bei meinem ersten Versuch hier zu posten konnte mir leider keiner helfen, aber vielleicht ja jetzt. Ich habe folgendes Problem: Ein Unterprogramm soll hintereinander mehrere Spannungswerte auswerten: 1.)Ausgangsspannung (PA0) 2.)Eingangsspannung (PA1) 3.)Ausgangsspannung (PA0) 4.)Spannung_an_Shunt_1 (PA6) 5.)Ausgangsspannung (PA0) 6.)Spannung_an_Shunt_2 (PA7) Da dies zyklisch mit einem ganz bestimmten Takt geschehen soll, betreibe ich den ADC im Free Running Mode und Interrupt. In der ADC_ISR möchte ich nun synchron dazu die ADC_Kanäle ändern (bzw. einen Takt vorher auf den gewünschten Kanal umstellen). Ich initialisiere meinen ADC mit dem Kanal ADC0 ADC_ISR: PUSH... PUSH... .. SBRS pruefbyte, ZUSTAND_BIT RJMP zustand_inaktiv IN temp, ADCL IN temp, ADCH LDI ZH, high(Tabelle) LDI ZL, low(Tabelle) ADD ZL, adc_channel BRCC kein_ueberlauf_ INC ZH kein_ueberlauf_: IJMP Tabelle: RCALL Kanal_eingangsspg ;Kanal auf PA1 umstellen RJMP end_adc RCALL Kanal_ausgangsspg ;Kanal auf PA0 umstellen RJMP end_adc RCALL Kanal_spg_shunt1 ;Kanal auf PA6 umstellen RJMP end_adc RCALL Kanal_ausgangsspg ;Kanal auf PA0 umstellen RJMP end_adc RCALL Kanal_spg_shunt2 ;Kanal auf PA7 umstellen RJMP end_adc RCALL Kanal_ausgangsspg ;Kanal auf PA0 umstellen end_adc: IN temp_l, ADCL IN temp_h, ADCH SBR pruefbyte, ADC_STATUS POP ... POP ... POP ... RETI Jetzt sollte es so sein daß der ADC beim ersten mal mit ADC0 initalisiert ist. Dann sollte er die Werte der Ausgangsspannung einlesen den Kanal aud ADC1 umstellen, die ISR beenden, das Unterprogramm aufrufen, die Spg. auswerten. Beim nächsten mal sollte er die Eingangspg. einlesen, den Kanal auf ADC0 umstellen usw... Eigentlich klappt ja alles, außer das der ADC nicht den gewünschten Wert einliest obwohl ich doch vorher das Register ADMUX geändert habe. Erst habe ich gedacht, daß der ADC zwei Durchläufe braucht um den Kanal zu ändern, aber ich konnte da auch keine Regelmäßigkeit erkennen. Vielleicht wisst Ihr eine Lösung für mein Problem, da ich den Fehler einfach nicht finden kann. MfG Ralf
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.