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
Jason Lnkk schrieb: > Eingestellt sind beide Chips auf internen 1MHz (kein Quarz). Keine gute Wahl. > Unsicher bin ich mir bei der Software. Ich habe mal beide c-Dateien > beigefügt. Evtl erkennt jemand sofort den Fehler. Muss man sich erst mal ansehen...
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?
Jason Lnkk schrieb: > Eingestellt > sind beide Chips auf internen 1MHz (kein Quarz). die 1 MHz machen sowieso schon einen Fehler, zudem sind es dann keine 1MHz und dass dann noch auf zwei verschiedenen Chips, gibt im Extremfall eine doppelt so große Abweichung: wundert mich nicht dass es nicht geht
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!
icke schrieb: > int release_conf1 = 0; > > Das sind nur 8bit und auch noch signed. Ho, ho, ho. Immer langsam mit den jungen Pferden. Ein int hat 16 Bit.
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.
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?
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.
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.
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.