Gast
#1498233
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