Forum: Mikrocontroller und Digitale Elektronik PIC16F628 UART aus SLEEP-Mode wecken?


von Kermit (Gast)


Lesenswert?

Hallo,

ich habe mit einem alten USB-Handydatenkabel (PL2303) und einem 
PIC16F628, sowie ein 868MHz TX-Modul von ELV einen FS20 Sender gebaut.
Das ganze funktioniert auch soweit, nur ich würde gerne aus 
Stromverbrauchsgründen den PIC in den Sleep-Mode legen, so dass er nur 
bei Bedarf (Daten an UART RX) aufwacht.
Nun habe ich schon hier gelesen, dass die UART im async-Mode kein 
Wake-Up hat und man RX auf einen ext. Interrupt-Pin brücken soll. Ggf. 
muss man beim Start der Übertragung noch ein Dummy-Zeichen senden. Doch 
alles hat bei mir leider nicht funktioniert:

RB0-Interrupt einstellen
        bsf    STATUS, RP0        ; auf Bank 1 umschalten
        bcf    OPTION_REG, INTEDG ; 1-0-Flanke an RB0
        bcf    STATUS, RP0        ; auf Bank 0 zurückschalten
        bcf    INTCON, INTE       ; RB0-interrupt aus

[..]

sleepmode

  BCF   INTCON, INTF  ; RB0 zuruecksetzen
  bsf      INTCON, INTE    ; RB0-interrupt an
  sleep
  nop
  nop
  nop
  bcf      INTCON, INTE    ; RB0-interrupt aus
  return





Ich polle dabei PIR1,RCIF (UART-Daten angekommen) 255 mal und calle dann 
den sleepmode. RB0 habe ich mit RB1 (UART-RX) verbunden. RB0 ist 
natürlich auch als Eingang gestellt (BSF TRISB,0 auf Bank1). Alternativ 
habe ich auch mal eine Steuerleitung (RTS?) vom Handy-Datenkabel an RB0 
gelegt (statt RB1). Diese Leitung geht auch auf 0V, wenn Daten gesendet 
werden, sonst bleibt sie auf 3,3V (nachgemessen!). Beides funktioniert 
nicht. Ich habe auch mal ein Dummy-Byte vor meinen eigentlichen Daten 
gesendet. Auch das klappt nicht!

Muss man die UART vielleicht irgendwie komplett neu initialisieren, wenn 
man aus dem Sleep-Mode zurückkehrt? Hat sowas vielleicht schon mal 
jemand mit einem PIC16F628 gemacht, also UART-RX und Sleepmode?

Danke im voraus,
Kermit

von Kermit (Gast)


Lesenswert?

Ich habe mal gerechnet und denke, dass es die Mühe einen 
funktionierenden Sleep-Mode zu integrieren nicht wert ist!
Ich habe 10mA Betriebs Standbystrom des PIC16F628a angenommen (es sind 
sicher weniger - er wird mit 4MHz internal clock und 3,3V betrieben). 
Das macht im Jahr wohl nicht mal eine halbe kWh aus (=10Cent). Ich werde 
mir gleich mal ein USB-Zwischenkabel bauen, um den gesamten Strom zu 
messen (PIC + 868MHz-Sendemodul werden beide über den PL2303 mit 3,3V 
gespeist).

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.