Im Datenblatt Deines Controllers sollte irgendwo ein Abschnitt stehen, der beschreibt, wie die Baudrate aus der Taktrate des Controllers berechnet wird. Anhand dieser Formel kannst Du die Abweichung bestimmen.
ich will eine serielle Verbindung zwischen einem Pc und einem 8051 Microcontroller machen,
wie das mit dem UART in meinem 8051er funktioniert hab ich nachgelesen, das ist kein Problem
allerdings hab ich nur 12 Mhz Quarze, und extra deswegen will ich eigentlich nicht bei Reichelt bestellen,
das Problem ist ein Pc unterstützt ja nur bestimmt Baudraten:
300, 1200, 2400, usw.
also welche Baudrate nehm ich am besten bei einem 12 Mhz Quarz?
gibt es da überhaupt eine die keine zu Hohe Abweichung hat um mit einem Pc zu kommunizieren?
(ich glaub bei einem Pc ist bei 5% oder so Schluss)
eigentlich muss es ja eine annehmbare Baudrate geben, ISP funktioniert ja
wie kann ich denn die Fehlerquote ausrechenen?
bei FLIP benutz ich fürs ISP 38400 Baud, und das funzt ohne Probleme
Im Datenblatt Deines Controllers sollte irgendwo ein Abschnitt stehen, der beschreibt, wie die Baudrate aus der Taktrate des Controllers berechnet wird. Anhand dieser Formel kannst Du die Abweichung bestimmen.
ja stimmt hast recht, hab die Formel zur Baudrate einfach umgestellt,
bei 38400 Baud 0,5 % Abweichung oder so, das reicht ja noch
aber irgendwie bekom ich das Programm nicht ans laufen,
dachte eigentlich das wär kein Problem
hier mal der Code (8051):
muss man den UART vielleicht noch irgendwie aktivieren?Code:$NOMOD51 $INCLUDE (89C51RX2.MCU) ;Timer 1 Modus 2 (wird vom UART benötigt) mov TMOD, 0010000b mov TH1, 255 mov TL1, 255 ;UART Modus 1: 8 Datenbits, Baudrate von Timer 1 clr SM0 setb SM1 setb REN ;Timer starten setb TF1 ;immerwieder A ausgeben again: clr TI mov sbuf, #'A' jnb TI, $ jmp again END
oder was könnt ich da sonst falsch gemacht haben?
Lesezeichen