Ich habe folgendes Problem: Über die serielle Schnittstelle am UART0 kann ich den MSP430 zwar u. a. in den LPM3 setzen und die RTC läuft auch richtig weiter, aber ich kann nicht über den UART0 aufwecken; die Funktion interrupt[UART0RX_VECTOR] void uart0_receive (void) wird im LPM3 nicht erreicht, obwohl der UART0 vor dem LPM3 explizit aktiviert wird: // enable USART0 ME1 |= URXE0; // enable USART0 RX Interrupt IE2 |= URXIE0; Über den Debuger habe ich auch ME und IE überprüft und obwohl die richtig sind (nachdem ich die Werte über den Debuger gesetzt habe), funktioniert es nicht. Woran kann das liegen?
Hallo, welchen Clk benutzt du denn für den UART, SMCLK oder ACLK? SMCLK wird im LPM3 abgeschaltet. Vielleicht liegt es daran, dass dein UART dann nicht mehr laufen kann. Obwohl ich gerade lese, dass der UART auf der fallenden Flanke von URXD getriggert wird und dann loslaufen soll. Es ist jedenfalls eine Untersuchung wert. Das BIT3 im U0TCTL hast du gesetzt? Das scheint notwendig zu sein, um den UART im Low-Pwer-Modes zu betreiben. Gruss Haiko
Danke, aber diese naheliegenden Sachen habe ich längst überprüft. Weil kein Systemtaktquarz verwendet wird, kann auch kein anderer Takt als ACLK verwendet werden. Inzwischen habe ich die Ursache aber durch Nachsehen in dem User´s Guide gefunden: P3SEL = 0x20; /* P3.5 = USART0 RXD */ fehlte, weil vor dem Sleep-Modus 0x00 gesetzt wurde (vom Programmierer, vom dem der historisch gewachsene Code stammt). Jetzt funktioniert LPM3 -> AM und AM -> LPM3 über die serielle Schnittstelle.
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.