Forum: Mikrocontroller und Digitale Elektronik MSP430 Timer inkompatibel mit ADC


von Florian K. (kromerf)


Lesenswert?

Hallo allerseits,
ich habe folgendes Problem:
Mit einem MSP430F2274 wird eine ADC10-Messung von der Spannung am 
Versorgungskondensator (über Spannungsteiler) durchgeführt. Der 
Registerinhalt ADCMEM beträgt 730.
Wird im Code aber zuvor die Initialisierung des Timer_B eingefügt, ist 
das Ergebnis der anschließenden ADC10-Messung nicht mehr 730 sondern 
750.
Hat jemand eine Idee?
Viele Grüße

von Christian R. (supachris)


Lesenswert?

Hm, das kann eigentlich nur an Zeile 42 deines Codes liegen.

von Florian K. (kromerf)


Angehängte Dateien:

Lesenswert?

Christian R. schrieb:
> Zeile 42 deines Codes

Hi Christian,
klaro gibts den Code. Zusätzlich zu dem oben erwähnten "Fehler" habe ich 
einen noch schwerwiegenderen entdeckt. Wenn der ADC10 initialisiert wird 
funktioniert anscheinend der TimerB nicht mehr zuverlässig. Wird die 
ADC10 nicht initialisiert funktioniert dieser.
Grüße

von g. b. (gunb)


Lesenswert?

Christian R. schrieb:
> Hm, das kann eigentlich nur an Zeile 42 deines Codes liegen.

... in Zeile 28 scheint's aber auch schon zu haken ;-)

von Franzen (Gast)


Lesenswert?

Mal ins Erratasheet geguckt?

von Florian K. (kromerf)


Lesenswert?

Franzen schrieb:
> Mal ins Erratasheet geguckt?

Das habe ich gemacht. Das am ehesten zutreffende Workaround für Fehler 
TB2 (Interrupt is lost) hat leider nicht geholfen.

Den Link zum Erratasheet konnte ich leider wegen Spam-Sperre nicht 
verlinken. slaz034k.pdf

von Christian R. (supachris)


Lesenswert?

Ich tippe mal darauf, dass die Interrupt Service Routinen zu lange 
brauchen, und die ganze Sache deshalb aus dem Tritt kommt. Toggle doch 
mal einen IO am Start und Ende einer ISR, dann siehst du wie lange die 
brauchen...das Schreiben aufs Display braucht sicherlich einige Zeit, 
sowas macht man nicht in der ISR...

von Florian K. (kromerf)


Lesenswert?

Christian R. schrieb:
> das Schreiben aufs Display

Du meinst bestimmt die Funktion disp_put_event(). Die trägt ein 
abzuarbeitendes Event nur in eine Liste ein und dürfte d.h. nicht lange 
dauern. Ich werde es trotzdem überprüfen.

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.