www.mikrocontroller.net

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


Autor: Kermit (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kermit (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.