UART Atmega8

OP #3210807
Hi Forum,
ich versuche gerade über UART von Atmega8 zu Atmega8 zu kommunizieren. 
Dabei habe ich TX vom Sender mit RX vom Empfänger verbunden. Eingestellt 
sind beide Chips auf internen 1MHz (kein Quarz). Im Code habe ich eine 
Baudrate von 2400 angegeben.
An beiden soll per Taster eine LED getoggelt werden. Doch getoggelt wird 
nur die LED am Sender.

Ich denke Hardwareseitig passt alles. Ist ein recht simpler Aufbau. 
Unsicher bin ich mir bei der Software. Ich habe mal beide c-Dateien 
beigefügt. Evtl erkennt jemand sofort den Fehler.

Danke im Voraus
Loopdude
Angehängte Dateien:
Persönliche Seite
UCSRC = (1 << USBS) | (3 << UCSZ0);

Könnte eine Fehlerquelle sein.

Zitat aus dem Datenblatt:

"• Bit 7 – URSEL: Register Select
This bit selects between accessing the UCSRC or the UBRRH Register. It 
is read as one when reading UCSRC. The URSEL must be one when writing 
the UCSRC."

Hast du die FuseBits bei beiden Controllern gleich gesetzt?
Gast
int release_conf1 = 0;

Das sind nur 8bit und auch noch signed. Also geht der Wertebereich von 
-128 bis +127
Und Du versucht 500 reinzuschreiben und gegen 2000 zu vergleichen.
Das kann nicht funktionieren!
OP
Danke schonmal für die Antworten.
Ich habe mir jetzt mal Quarze bestellt. Hoffe sie sind spätestens morgen 
da.

Was ist gemeint mit der Frage ob ich GND auch verbunden habe? Muss beim 
UART zusätzlich zum RX und TX etwas verkabelt werden? Ich dachte es 
langt wenn TX an RX angeschlossen ist um eine einseitige Verbindung 
herzustellen. Könnte jemand das genauer erklären?

Die Fuses sind bei beiden gleich gesetzt. Ich dachte wenn eine kleine 
Fehlerquote vorhanden ist werden nur nicht immer die Daten korrekt 
übertragen. Dachte zumindest ein paar "Pakete" würden korrekt ankommen.

int release_conf1 habe ich begrenzt, da sonst irgendwann ein Überlauf 
passiert.
Jason Lnkk schrieb:
> Danke schonmal für die Antworten.
> Ich habe mir jetzt mal Quarze bestellt. Hoffe sie sind spätestens morgen
> da.
>
> Was ist gemeint mit der Frage ob ich GND auch verbunden habe? Muss beim
> UART zusätzlich zum RX und TX etwas verkabelt werden? Ich dachte es
> langt wenn TX an RX angeschlossen ist um eine einseitige Verbindung
> herzustellen. Könnte jemand das genauer erklären?

Ähm.
Wann immer du 2 Schaltungen miteinander verbindest (ok, es gibt 2 
Ausnahmen: Übertrager und Optokoppler), musst du slebstverständlich eine 
GND Verbindung herstellen.

Spannungen sind nur Potentialdifferenzen. Der Begriff +5V sagt nichts 
ausm, wenn du nicht dazusagst "5V in Bezug auf welches Potential!"

Und damit 2 Schaltungen eine gemeinsame Vorstellung davon haben, was 
denn jetzt eigentlich 0 sein soll, muss man klarerweise beiden einen 
gemeinsamen Bezugspunkt geben, sonst kommt da Blödsinn raus. Eine simple 
Verbindung der GND Leitungen leistet das zb. bereits.
OP
So ganz versteh ich das leider (evtl) nicht. Beide uC sind auf der 
selben Platine und am gleichen GND angeschlossen. Ist das damit gemeint, 
oder überseh ich einfach etwas? Muss ich bei der TX -> RX Verbindung in 
Bezug auf GND etwas beachten?
OP
Mal ein Update:
UART funktioniert jetzt. Auch ohne die Quarze. Es lag also am Code. Ich 
habe mir den Code aus dem Datenblatt rauskopiert und 1-2 kleine 
Veränderungen vorgenommen. Jetzt toggelt Chip1 eine LED an Chip2.
Den Code kann ich jetzt in meinen bestehenden Code integrieren um über 
UART per Taster verschiedene Sachen auszulösen.

Vielen Dank an alle die geholfen haben.
OP
Die Quarze werde ich auf jeden Fall nutzen wenn ich sie habe. Ich bin 
nur froh, dass es funktioniert und ich mir über die Programmierung keine 
Gedanken mehr machen brauch.
Da das Ganze im Sommer im freien laufen soll, kann ich das Risiko bei 
Temperaturschwankungen nicht eingehen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.