Fehler bei RS232

Gast #138234
Lesenswert?

Oh, sry meinte 38400. Das komische ist, dass die Fehler bei einem Pc mit
Win 98 ME auftreten, den ich für die µC's verwende, da es mit XP grad
net geht. Wenn ich den µC jedoch mit dem XP-Pc verbinde, geht es.
Gast #138236
Lesenswert?

Hm,
also wenn ich auf dem Win 98 Pc mit einer Baudrate von 2400 bei 1 Mhz
sende klappt es, das dumme ist halt nur, dass ich ne Zeitmessung bauen
will und da schon gern 16Mhz hätte und net immer zum XP-PC umswitchen
will. An zu alter Hardware wird es bei einem PC mit 900 Mhz ja wohl
nicht liegen oder?
Gast #138241
Lesenswert?

Aha, Carrerabahn.

Zeitmessung hab' ich auch schon gemacht. Mit der PC-Kommunikation
hatte ich da nie Probleme. Das sollte eigentlich zu schaffen sein. Zum
Testen auf der PC-Seite schreibe ich mir immer ein VB Programm, dass
alles mitloggt. Aber warum muss denn die Baudrate so hoch sein? Ich
nehme fast immer 9600.
#138243
Lesenswert?

Der Zeitmessung kann es doch herzlich egal sein, ob 16MHz oder sonstwas,
hauptsache es ist quarzstabil.

Falls Du es vergessen hast, der AVR kann auch rechnen, z.B. beliebige
Zählwerte umrechnen in 1/1000 Sekunden oder was Du willst (kannst es
aber auch den PC machen lassen).

Für übliche Baudraten ist ein Standardquarz z.B. 11,0592 oder
14,7456MHz gut geeignet.


Peter
Gast #138244
Lesenswert?

@Martin,

wenn ein @ angezeigt wird, was für ein Zeichen hast du stattdessen
erwartet? Das deutet evtl. auf einen framing error hin. Will heissen
Baudrate ist ungenau oder Datenlänge, parity, stoppbits sind falsch
eingestellt.

Wenn ich eine Übertragung teste, fange ich immer damit an eine binäre 0
zu senden, und schau ob die jeweils auf der anderen Seite ankommt. Du
könntest z.B. auch vom PC am Anfang immer 0en senden und damit deine
Baudrate am AVR abgleichen. Dazu misst man die Zeit vom Start- zum
Stoppbit, teilt das ganze z.B. durch 9 oder 10 je nach Datenlänge und
hat die Bitlänge. Das ist universell und geht auch mit RC
Oszillatoren.

Robert
Gast #138248
Lesenswert?

Hallo, cih habe bisher Übertragungsraten zwichen 9600 und 19200
getestet. Bei einem Quarz mit 8MHz und RC Oszilator von 4 / 8 MHz

in asm und c war es nie ein problem

versuch evtl. mal einen anderen Terminal
der von Br@y ist sehr gut klein fein genau ;)

zumindest besser, als Hyperterminal

bei ASM Habe ich die werte so defniert:
.equ sramstart = 0x0060
.equ CLOCK = 8000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB, RXCIE                  ; Interrupt bei Empfang
        sbi UCSRB, RXEN                   ; RX (Empfang) aktivieren
     sbi UCSRB, TXEN                    ; TX aktivieren

in dieser Art sollte es auch in C kein thema sein
Peter Fluery hat eine gute lib dazu in c geschrieben

Gruss Jens

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren