- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 3 von 3

Thema: serielle Kommunikation mit 12 Mhz Quarz?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559

    serielle Kommunikation mit 12 Mhz Quarz?

    Anzeige

    Powerstation Test
    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    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.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559
    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):
    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
    muss man den UART vielleicht noch irgendwie aktivieren?
    oder was könnt ich da sonst falsch gemacht haben?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen