www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei Controller per UART kommunizieren/Einsteigerproblem


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich versuche grade mir das Programmieren von AVRs beizubringen und bin 
grade beim Kapitel UART angekommen.

Nach dem die Kommunikatiion mit dem Computer per Hyperterminal - wie im 
Tutorial erklärt - soweit geklappt hat, wollte ich mal zwei Controller 
kommunizieren lassen.

Im Anhan ein Foto vom Versuchaufbau und die beiden Codes.

Auf einem STK 500 ist ein Mega8515, auf dem anderen ein 90S8515 daher 
zwei Programme, sollten aber gleich sein.

Programmbeschreibung

Die Werte, welche ich an den PINs D2 - D7 einlese sollen per UART auf 
den anderen Controller übertagen werden, welcher die Werte dann auf dem 
PortB ausgeben soll. Auf dem anderen Controller das gleiche Spiel.

Problembeschreibung

Kurz und knackig : entweder flimmern die LEDs nur wild rum oder es 
pasiert garnichts !

Meine Überlegung ist, dass entweder was mit der Baudrate nicht stimmt, 
oder ich mal wieder etwas grundliegendes falsch gemacht habe, wie z.B. 
dass sich die Register ständig gegenseitig überschreiben oder der 
gleichen.

Oder muss ich das ganz nur etwas verzögern, um die Eingabe sichtbar zu 
machen ?


Ich würd mich freuen, wenn ein schlauer Kopf mir da weiterhelfen könnte.

Schonmal vielen Dank im Voraus und nen schönen Abend

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anhang 2

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Versuchsaufbau

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich das richtig, daß du nur RxD mit TxD des jeweils anderen 
Controllers verbunden hast? Und keine Masseleitung?

Gruß
Jadeclaw.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das siehst du richtig, habs aber auch schon mit Masseleitung 
probiert, leider kein Erfolg. Denke es liegt am Programm !

Danke und Gruß

Stefan

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der erste Anhang fehlte !

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh man, bzw. der zweite !

;-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan (Gast)

>Dateianhang: 100_0795.jpg (707,1 KB, 5 Downloads)

Das geht auch kleiner, siehe Bildformate.

Dein Programm hat ein Problem. Was passiert, wenn zufällig  beide Seiten 
gerade auf Daten warten?

Du musst das so programmieren, dass WENN ein Zeichen empfangen wurde, 
dies gelesen und verarbeitet wird. Wenn nicht, dann darfst du nicht 
endlos warten, sondern sendest das nächste zeichen, natürlich vorher mit 
Warten auf den freine Sendepuffer. Siehe Multitasking. Etwa so.

reci:              ;**Empfangsprogramm**
    sbis USR, RXC
    ret
    in rcve, UDR
    ret

Ausserdem solltest du sie internen Pull-Ups für PortD einschalten, ich 
weis nicht ob das STK500 externe hat.

    ldi akku,$FF
    out DDRD, akku


Und lass den Namen akku stecken, das ist was für steinalte CPUs wie die 
8051er ;-)

MFG
Falk

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...falsche Datei, ich sollte mich einloggen !

Autor: Klugscheisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dann vielleicht nur übertragen, falls sich was geändert hat?
Stichwort: Exor

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan (Gast)

>Ja, das siehst du richtig, habs aber auch schon mit Masseleitung
>probiert, leider kein Erfolg. Denke es liegt am Programm !

AUA! Du braucht DRINGEND die Masseverbindung, denn deine STK500 werden 
wie es scheint auf zwei (galvanisch) getrennten Netzteilen gespeist.

Grundlagen, Grundlagen, Grundlagen. Und immer an den Herrn Ohm denken. 
;-)

MFG
Falk

Autor: Klugscheisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk: Ground wird heutzutage per SW (Mittelwertbildung) gemacht. :-)

Hast Du schon mal Leute bei einer 1-Wire-Schnittstelle nach dem Fehler 
suchen sehen?

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan: Nur weil es mit Masseverbindung nicht geht, heißt noch lange 
nicht, daß man die Masseleitung nicht braucht. Also, Masse verbinden!

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hab ich gemacht, die beiden Zuleitungen entspringen jedoch aus ein 
und dem selben Netzteil.

Trozdem vielen Dank!

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ein Problem entdeckt, in dem aus dem Tutorial kopierten Code für die 
Baudratenberechnung hatte ich vergessen die Frequenz von 4 MHz auf 3,69 
MHz zu ändern.

Jetzt funktioniert es zumindest manchmal. ;-)

Autor: Klugscheisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na prima: Jetzt noch die Tips von Falk (und mir) beachten und es wird 
noch besser.

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja danke Euch, mit dem EOR muss ich wohl noch etwas rätseln. Meinst Du, 
dass ich im Prinzip noch ein Register hinzufüge mit dem ich dann den 
alten Wert mit dem neuen Wert vergleiche und entsprechend weiterverfahre 
?

Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bevor ich jetzt nen neuen Threat öffne, mir ist aufgefallen, dass wenn 
ein Board abgeschaltet ist, die Power LED ganz schwach leuchtet, ist das 
normal ?

Kann es nicht sein, dass der dort fließende Strom zu hoch für den Port 
ist ?

Grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan T. (_distance_07)

>Bevor ich jetzt nen neuen Threat öffne,

Thread. Threats gibt nur an Halloween, und das ist schon vorbei ;-)

> mir ist aufgefallen, dass wenn
>ein Board abgeschaltet ist, die Power LED ganz schwach leuchtet, ist das
>normal ?

Jain. Da wird das Board über die UART-Verbindung parasitär mit Energei 
versorgt, die Scutzdioden machen es möglich. Siehe Pegelwandler.

>Kann es nicht sein, dass der dort fließende Strom zu hoch für den Port
>ist ?

Kann sein.

MFG
Falk

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, danke Dir !

Hab leider nich annähernd genaue Messapparaturen um mal den Strom zu 
messen.

Werd einfach immer die Boards gleichzeitig ein- und ausschalten.

Schönen Abend

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.