Forum: Mikrocontroller und Digitale Elektronik Aufwachen per Rx Leitung


von Colombo010 (Gast)


Lesenswert?

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?

von H.Joachim S. (crazyhorse)


Lesenswert?

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

von Colombo010 (Gast)


Lesenswert?

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.

von H.Joachim S. (crazyhorse)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

Muss die UART zu diesem Zeitpunkt überhaupt eingeschaltet sein?

von Colombo010 (Gast)


Lesenswert?

Die Uart muss das dritte Byte erkennen.

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von Colombo010 (Gast)


Lesenswert?

Ja genau das passiert auch. Hmm Blöd wenn man Stromsparen will^^

von cppler (Gast)


Lesenswert?

Oder solange "Aufwachpakete" senden bis die UART ein ACK zurückgibt.

von (prx) A. K. (prx)


Lesenswert?

Bevor hier lang und breit übers Protokoll diskutiert wird: Besteht 
Kontrolle über das UART Übertragungsprotokoll, oder ist das mitsamt 
Zeitverhalten fest vorgegeben?

von H.Joachim S. (crazyhorse)


Lesenswert?

Genau das ist die Frage :-)
Und die Antwort ist denke ich nein.

von Amateur (Gast)


Lesenswert?

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.

von H.Joachim S. (crazyhorse)


Lesenswert?

@Amateur: Problem nicht verstanden.

von Amateur (Gast)


Lesenswert?

@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.

von Svenska (Gast)


Lesenswert?

@Amateur: Problem wirklich nicht verstanden.

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.