Abend
Ich versuche mein erstes Projekt auf MSP430F2013 zu programmieren,
leieder stoße ich auf einige Probleme:
Die Idee ist folgende:
µC schläft in LPM3M während TimerA zählt, und in regelmäßigen Abständen
die ADC-Wandlung startet. Der AD misst interne Temperatur und schaltet
eine LED.
Leider geht es nicht:
1. Beim Debuggen hängt der mC in DONE-Interrupt hängen. Eigentlich soll
er nach einem DONE wieder schlafen gehen. Aber wenn ich debugge, sehe
ich dass der mC diesen Interrupt 4-5 mal ausführt...
2. Im SD16MEMO Register steht eigentlich ein sinnvolles Ergebnis, aber
wenn ich versuche ihm zu speichern(mov.w R4), steht im R4 immer die
selbe Zahl, 0x0112 oder so...
3. Generel sit mir aufefallen, dass beim debuggen einige Register
nicht/falsch reagieren, wenn ich sie im Debugger betrachte. Ist es
normal?
Hier ist mein Code:
1
#include "msp430.h" ; #define controlled include file
Böser Kommunist schrieb:> einige Register> nicht/falsch reagieren, wenn ich sie im Debugger betrachte.
Meinst Du damit Register der eigentlichen CPU oder Peripherie-Register?
Das Debuggen von Interrupts ist naturgemäß nicht folgenlos, bedenke, daß
der Prozessor dafür angehalten wird, die Peripherie aber weiterläuft.
Hier hast Du vermutlich bessere Chancen, wenn Du in Deine ISR einen
einfachen "Pinwackler" einbaust und Dir den mit einem Oszilloskop
ansiehst.
Übrigens gibt es funktionierenden Beispielcode zur Ansteuerung der
Peripherie von TI, auch für den 'F2013, und auch in Assembler.
Ich meine Peripherie-register.
Ja, so habe ich auch gedacht, das die schrittweise Betrachtung von
Interupts unmöglich/sehr schwierig wird.
Aber vllt. liegt ein Fehler im Code selbst.
Böser Kommunist schrieb:> Ich meine Peripherie-register.
Die sind, je nach Register, nicht für mehrfaches Lesen ausgelegt, das
musst Du berücksichtigen.
> Aber vllt. liegt ein Fehler im Code selbst.
Dann kannst Du den ja mit den funktionierenden Beispielen von TI
vergleichen ...
Hallo "rote Socke"
schon mal ohne LPM3 probiert ?
Geht ADC überhaupt im LPM3 ?
fehlt da nicht noch "EINT" eine Zeile vor Main: ?
muss der Controller nicht erst geweckt werden beim Timer Interrupt ?
du startest die Conversation ,was ist als nächstes ?
die Main: oder Done:
ich behaupte die Main: