PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : serielle Kommunikation mit 12 Mhz Quarz?



scales
07.08.2006, 15:14
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

ogni42
07.08.2006, 15:55
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.

scales
07.08.2006, 16:06
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):

$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

muss man den UART vielleicht noch irgendwie aktivieren?
oder was könnt ich da sonst falsch gemacht haben?