Hallo, ich möchte mit einem Cortex M0+ per Uart aus dem Low Leakage Stop (LLS) aufgeweckt werden. Kann man die rx Leitung einfach an einen Interrupt Pin ranhängen. Hat sowas in der Art schon mal umgesetzt?
Den M0 kenne ich nicht, aber im Prinzip ist das so machbar und wird auch gemacht. evtl. Probleme: -wie lange dauert das Aufwachen, evtl. ist das Startbit schon futsch? -ist Aufwachen per Flanke möglich? Falls nicht (also nur per level-Int) muss der im Int-handler umprogrammiert werden, da der Interrupt natürlich nicht das auslösende Ereignis behandeln kann -wie funktioniert der UART? Wenn flankengetriggert, hast du ein Problem, da die UART erst aktiv ist, wenn der Chip aufgewacht ist. D.h. die Startbitflanke ist schon Geschichte
Dass das erste Byte oder zwei Futsch sind wäre vertretbar, Pin Interrupt hat er folgende Möglichkeiten 00 External input pin disabled as wakeup input 01 External input pin enabled with rising edge detection 10 External input pin enabled with falling edge detection 11 External input pin enabled with any change detection Der letzte Punkt ist mir nicht ganz klar.
Standard-Uart-Pegel mal vorausgesetzt (Ruhepegel=H, etliche MC
unterstützen auch invertierte Pegel), wäre also
>10 External input pin enabled with falling edge detection
Das Startbit erzeugt eine fallende Flanke und weckt den MC, das wird auf
jeden Fall funktionieren.
Die spannende Frage: wie reagiert der UART?
Was dann ein Problem wird, wenn die Bytes am Stück reinflattern. Synchronisation unmöglich. Ideal wäre: ein dummy-Byte zum Aufwachen schicken, passende Pause, dann kanns losgehen.
Bevor hier lang und breit übers Protokoll diskutiert wird: Besteht Kontrolle über das UART Übertragungsprotokoll, oder ist das mitsamt Zeitverhalten fest vorgegeben?
Den M0 kenne ich ebenfalls nicht. Aber es kann sein, dass Du zwei Anschlüsse als Wecker benötigst. Nicht jeder Anschluss lässt sich als UART konfigurieren. Nicht jeder Anschluss weckt einen µP aus dem Tiefschlaf. Da es aber fast immer einen Anschluss gibt, der den µP wecken kann, kannst Du diesen ja mit dem UART verbinden. Wecker weckt µP auf, UART lauscht anschließend. Optimal wäre aber: Einen Anschluss als Wecker (INT) initialisieren und im Falle eines Falles in UART umkonfigurieren. So das geht.
@H.Joachim Seifert
>Problem nicht verstanden.
Ich denke schon.
Das ganze kann überhaupt nur funktionieren, wenn das Teil auch durch
einen Pin (INT) geweckt werden kann.
Bei der Verwendung von zwei Anschlüssen weckt die Flanke am
Interrupt-Pin das Teil auf. µP und UART schlafen zu diesem Zeitpunkt
noch.
Der µP wird geweckt.
Startet eine Timer-Sequenz von ein paar Zeiteinheiten und aktiviert die
serielle Schnittstelle.
Kommt es an der seriellen Schnittstelle in dieser Zeit nicht zum
Empfang, so wird das Licht wieder ausgemacht.
Die serielle Schnittstelle erhält das gleiche Signal (INT=Rx) wie der
Interrupt-Pin und die lauscht, bis irgendwann Feierabend vereinbart
wird. Und ab geht’s in die Heia.
Fazit: Die Flanke an der seriellen Schnittstelle weckt das ganze System.
Mag sein, dass es noch einfacher geht, aber dass obige Szenario sollte
funktionieren. Darüber hinaus sollte die Verbindung zweier Eingänge (Rx
+ INT) auch kein Problem sein.
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.