Forum: Mikrocontroller und Digitale Elektronik 2x ADC, 1 mal mit und einmal ohne interrupt


von Fabian (Gast)


Lesenswert?

Hallo,

hänge mal wieder seit ein paar Stunden an einem Problem:
Also die Ausgangslage ist folgende:

Ich habe 2 AD Channel an.
Der eine wird mit einem Timer alle 0,5 Sekunden gemessen, der andere 
wird das erstemal durch den 0,5s Timer gestartet und löst dann ein 
Interrupt aus, indem er das gemessene ergebnis dann auswertet und sich 
selbst ernuet startet. Falls der ADC vom Timerinterrupt aktiv wird 
startet er ganz am Ende des Interrupts den anderen ADC wieder (der mit 
dem Interrupt, wenn die Wandlung fertig ist).
Mein Problem ist nun, dass sobald der ADC mit Timer gestartet wurde, der 
andere ADC (der ein Interrupt bei fertiger Wandlung auslöst) bei der 
ersten Messung einen falschen Wert erhält.
Ich hab keine Idee mehr was ich noch probieren könnte. Habt ihr 
vielleicht mal selbiges Problem gehabt oder habt eine Vermutung, was ich 
nicht beachtet habe?

von Sonic (Gast)


Lesenswert?

Du musst nach dem Umschalten des MUX min. 40µs Pause machen, sonst 
gibt's eine Fehlmessung. Beim Umschalten der Betriebsart (z.B. 
single-ended auf differentiell) sogar 120µs! STeht übrigens im 
Datenblatt. Wenn du eine Wandlung einleitest (im Timer-INT), dann wird 
das ADC-Complete (oder so) - Flag gesetzt und der ADC-INT erfolgt gleich 
beim Verlassen des Timer-INTs. Also gezielt das ADC-Complete (oder so) - 
Flag vor dem Verlassen des Timer-INTs rücksetzen.

von Fabian (Gast)


Lesenswert?

Vielen Dank Sonic!

Es lag tatsächlich an der fehlenden 40us Pause! Wiedermal nicht 
aufmerksam genug durchs datenblatt gewandert.

Bin jetzt grade super glücklich... was mich dieses Forum schon an Zeit 
erspart hat...

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.