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
edit: und das wichtigeste habe ich vergessen Das Datentelegramm hat folgenden Aufbau 9600Baud 7Datenbit 1 Stopbit Paritybit even Grüße
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.
> UCSRC |= (1 << URSEL) | (1<<UPM1) | (0<<UPM0) | (1<<UCSZ1) | (0<<UCSZ0) ;
^ ^ ^
∗hust∗
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.