Forum: Mikrocontroller und Digitale Elektronik EUSART in XX.ASM


von Willi (Gast)


Lesenswert?

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?

von stephan_ (Gast)


Lesenswert?

poste mal Deinen Code ...

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Das sind die 6 Dateien. PIC 16F1936.
100620 Hauptdatei
Header Datei für die 4 USART Dateien

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

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.

von Willi (Gast)


Lesenswert?

ok. Werde das Programm mal besorgen.
Vielen Dank.
Willi

von Willi (Gast)


Lesenswert?

Das Programm ist ganz gut, finde jedoch keinen Fehler

von Bernd Rüter (Gast)


Lesenswert?


von Bernd Rüter (Gast)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

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 ?

von Bernd Rüter (Gast)


Lesenswert?

Willi schrieb:
> RCSTA = $90   ' Enable serial port & continuous receive
> $90 was ist hiermit gemeint ?

Der hexadezimale Wert 90 soll in das Register geschrieben werden.

von Willi (Gast)


Lesenswert?

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

von Bernd Rüter (Gast)


Lesenswert?

Glaub es mir, den EUSART habe ich auch schon benutzt...

i.d.R. bastelt man solche Fehler selbst !!! Habe ich schon oft 
durchgezogen!!!

von Willi (Gast)


Lesenswert?

Ja, wahrscheinlich ist es sowas Dummes dass man es übersiehr.
Aber langsam nervt es trotzdem.
Viele Grüsse
Willi

von Willi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.