Forum: Mikrocontroller und Digitale Elektronik UART 7Bit even Stopbit


von Felix (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich lese mit einem Fototransistor ein optischübertragenes 
Datentelegramm.
Lege ich das Signal direkt an meine Com-Schnittstelle bekomme ich im 
Hypterteminal das gewünschte Ergebnis.

Lege ich das Signal auf meinen uC kommt es zu einer Fehlfunktion. Die 
Daten werden kryptisch.

uC Atmega 16
Takt 8Mhz Quarz
Fuses h C9
Fuses l DF

Ich bin mir nicht sicher über die Einträge in den betreffenden Registern 
korrekt sind. Das Testprogramm befindet sich im Anhang

Über kurze Hilfe würde ich mich freuen.

grüße
von Felix (Gast)


Lesenswert?

edit:

und das wichtigeste habe ich vergessen

Das Datentelegramm hat folgenden Aufbau

9600Baud
7Datenbit
1 Stopbit
Paritybit even

Grüße
von Klaus T. (gauchi)


Lesenswert?

Funktioniert es den, wenn du das Signal direkt (also ohne die optische 
Übertragung) anschließt?
Ansonsten: die Fehlerflags auslesen? Vielleicht kriegst du ja massig 
parity errors.
von g457 (Gast)


Lesenswert?

> UCSRC |= (1 << URSEL) | (1<<UPM1)  | (0<<UPM0) | (1<<UCSZ1) | (0<<UCSZ0) ;
        ^                               ^                        ^
∗hust∗
von ... (Gast)


Lesenswert?

g457 schrieb:
> ∗hust∗

Auf Deutsch: Deine USART initialisierung ist falsch.
von Karl H. (kbuchegg)


Lesenswert?

g457 schrieb:
>> UCSRC |= (1 << URSEL) | (1<<UPM1)  | (0<<UPM0) | (1<<UCSZ1) | (0<<UCSZ0) ;
>         ^                               ^                        ^
> ∗hust∗

Das Oder ist tatsächlich quatsch, weil man bei einem Prozessor bei dem 
sich UCSRC und UBRRH eine Adresse teilen, UCSRC nicht einfach so 
auslesen kann (siehe Datenblatt).

Die geshifteten 0-en könnte man auch weglassen, wird aber das |= zu 
einem = gändert macht es allerdings nichts.
von Werner (Gast)


Lesenswert?

Felix schrieb:
> Lege ich das Signal direkt an meine Com-Schnittstelle bekomme ich im
> Hypterteminal das gewünschte Ergebnis.
>
> Lege ich das Signal auf meinen uC kommt es zu einer Fehlfunktion.

Falls du das Signal wirklich direkt an den µC anschließt, fehlt dir ein 
Inverter und Pegelumsetzer. RS-232 vom PC und serielle Schnittstelle vom 
µC verwenden völlig unterschiedliche Signalpegel.
von Felix (Gast)


Lesenswert?

Ok.
Wie würde das Register korrekt initialisiert?

Die Signalpegel stimmen. Die sind TTL und an einem anderen COntroller 
bereits getetestet.

Es kann also nur an der Programmierung liegen.
von ... (Gast)


Lesenswert?

Felix schrieb:
> Wie würde das Register korrekt initialisiert?

Schaust du hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART#Die_UART-Register
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.