eine USART mit PIC 16F876 8Bit Clock 1MHz oder auch 4 MHz 1200 Baud läuft einwandfrei, auch mehrere andere Kombinationen (Clock,Baudrate). Mit der EUSART (erweiterte USART!) zB. 16F690, 16F1936 etc. läuft es einfach nicht. Hat jemand eine einfache lauffähige EUSART ! unter XX.asm?
Der EUSART kann noch etwas mehr. Da gibt es auch das BRG16-Bit. Bitte prüfe alle Bits für den Baudratengenerator nach. Such Dir mal das Proggi PICMULTICALC von Mister E, da kann alles berechnet werden und die Bits bzw. Register werden auch benannt.
Bei 4MHz Quarz und 1200 Baud sollte die Init-Routine so geändert werden:
1 | XY ; feste Eingabe |
2 | BANKSEL TXSTA |
3 | ;Transmit enable TXEN=1 SYNC=0 BRGH=0 |
4 | movlw B'00100000' ; Sender ein, Baudrate -niedrig |
5 | movwf TXSTA ; nach Sender-Steuerregister Bank 1 |
6 | BANKSEL SPBRG |
7 | ;4MHz 1200 Baud |
8 | ; SYNC=0 BRGH=0 BRG16=0 |
9 | movlw d'51' |
10 | movwf SPBRG |
Woher stammt die Zahl 22 ? PicMultiCalc meint dazu:
1 | RCSTA = $90 ' Enable serial port & continuous receive |
2 | TXSTA = $24 ' Enable transmit, BRGH = 1 |
3 | SPBRG = 64 ' 1200 Baud @ 4MHz, 0,0% |
4 | SPBRGH = 3 |
5 | BAUDCON.3 = 1 ' Enable 16 bit baudrate generator |
Hallo Bernd, bei dem Probieren hab ich den Fehler gemacht, aber mit '51' läuft er auch nicht los. Er sendet nicht und logischer Weise fragt er das Empfangsbit ab und bleibt da stehen.(bei USARTgetch bleibt er hängen. PICMulticalk: SPBRG = 64 ?? nach Tabelle SYNC=0,BRGH=1,BFG16=0 20MHz 19200 BAUD RCSTA = $90 ' Enable serial port & continuous receive $90 was ist hiermit gemeint ?
Willi schrieb: > RCSTA = $90 ' Enable serial port & continuous receive > $90 was ist hiermit gemeint ? Der hexadezimale Wert 90 soll in das Register geschrieben werden.
Hallo Bernd, auch mit den PicMultiCalc Werten das gleiche Symptom. Es scheint als ob keiner die EUSART mit Hex-Code programmiert.Oder nur wenige benutzen die SS. Einen schönen Abend und vielen Dank für deine Mühe. Willi
Glaub es mir, den EUSART habe ich auch schon benutzt... i.d.R. bastelt man solche Fehler selbst !!! Habe ich schon oft durchgezogen!!!
Ja, wahrscheinlich ist es sowas Dummes dass man es übersiehr. Aber langsam nervt es trotzdem. Viele Grüsse Willi
Hallo Bernd, die (E!)USART funktioniert auf einigen anderen PIC's 16F876, 16F688, 16F722, 16F690 nur senden, aber mit dem 16F1936 klappt es komlett noch immer nicht. Ich teste worin sich die PIC's in ihren Eigenschaften und der CONFIG, oder auch CONFIG's unterscheiden. Nun wird der 16F883 bald eintreffen, (PORT mässig gleich,jedoch keine LCD Steuerung wie der 16F1936). Das ist eine kleine Kurz-Info. Viele Grüsse Willi
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.