Forum: Mikrocontroller und Digitale Elektronik Kommunikation zwischen 2 MC


von Pascal G. (pascalgieringer)


Angehängte Dateien:

Lesenswert?

Hallo,
ich bin noch ziemlicher Anfänger im Programmieren und komme gerade nicht 
weiter. google und ChatGPT bringen auch nichts und hier im Forum habe 
ich auch nichts passendes gefunden.

Ich versuche über UART einen Text von dem einen MC zum Anderen zu senden 
und diesen dann über ein LCD ausgeben zu lassen.
in erster linie dient es mir nur dazu mich mit dem system auseinander zu 
setzen und mit den Funktionen vertraut zu werden.

wenn ich die Daten vom ersten MC über des Serial Monitor vom PC auslese 
passt alles
wenn ich den Zweiten dran hänge RX>TX und TX>RX scheint es so als würden 
keine daten empfangen werden.

Ich schaffe es Leider nicht über den SerialMonitor von PIO Daten zum 
zweiten Mc zu senden um zu überprüfen ob bei der Programmierung alles 
passt.

über einen "kleinen" Tipp wo mein Fehler liegen könnte wäre ich euch 
sehr Dankbar

mfg Pascal
von Lutz S. (lutzs)


Lesenswert?

Funktioniert das LCD am zweiten Controller denn ohne die Eingabe über 
den seriellen Port?

Teste das mal (durch Codeänderung) indem du dort direkt Zeichen 
ausgibst, die dann später von der seriellen Schnittstelle kommen.

Also das klassische Vorgehen bei der systhematischen Fehlersuche: 
auftrennen in Blöcke und damit herausfinden, auf welcher Seite sich das 
Problem befindet.
von Rainer W. (rawi)


Lesenswert?

Pascal G. schrieb:
> über einen "kleinen" Tipp wo mein Fehler liegen könnte wäre ich euch
> sehr Dankbar

Deine Shift-Taste funktioniert nur sehr erratisch und die ','-Taste 
hakt.

> wenn ich die Daten vom ersten MC über des Serial Monitor vom PC auslese
> passt alles
> wenn ich den Zweiten dran hänge RX>TX und TX>RX scheint es so als würden
> keine daten empfangen werden.

Besitzt du einen Logikanalysator oder ein Oszi, um festzustellen, was 
dabei auf den Datenleitungen oder anderen GPIOs passiert?
Dann könntest du bspw. in der ISR mit einem Pin wackeln, um zu 
verifizieren, ob der Empfangsinterrupt ausgelöst wird. Ein Break Point 
verrät dir natürlich auch, ob die ISR angesprungen wird. Hast du dir im 
Debugger die Flags für die Freigabe des Interrupts angesehen? Oder woran 
machst du das "scheint" fest?

Programmieren ist keine Kernkompetenz vom ChatGPT.
: Bearbeitet durch User
von Wastl (hartundweichware)


Lesenswert?

Pascal G. schrieb:
> Ich versuche über UART einen Text von dem einen MC zum Anderen zu senden

MC --> Music Casette?

Zitat:

Die Abkürzung MC hat je nach Kontext verschiedene Bedeutungen. Die 
geläufigsten sind:

Musik & Entertainment: Steht für Master of Ceremonies 
(Zeremonienmeister). Im Hip-Hop bezeichnet es den Rapper, Entertainer 
oder die Person, die durch ein Event führt.

Motorrad-Szene: Steht für Motorcycle Club (Motorradclub), oft verwendet 
von klassischen, organisierten Motorrad-Banden.

Gastronomie & Handel: Steht umgangssprachlich oft für die 
Fast-Food-Kette McDonald’s.

Namen: Ist in schottischen und irischen Nachnamen (wie Mac) die Kurzform 
für Son of (Sohn von).

Medizin: Kann für Morbus Crohn (eine chronisch-entzündliche 
Darmerkrankung) stehen.
von Hans W. (hanswieland)


Lesenswert?

Wenn es mit Interrupt nicht klappt würde ich einen Gegentest ohne 
Interrupt (Polling der Statusregister in einer Loop) versuchen. Dann 
weisst du, ob das Interrupt-Handling fehlerhaft war, oder es woanders 
scheitert.
Beitrag #8052609 wurde vom Autor gelöscht.
von Pascal G. (pascalgieringer)


Lesenswert?

Das Display funktioniert, ich habe eine if Abfrage ob die 
Datenübertragung beendet ist, danach wird eine variable auf true gesetzt 
und in der while schleife auf ihre Richtigkeit geprüft.

Ist das der Fall soll der String in der 1. Zeile ausgegeben werden.
Ansonsten wird ein Standard Text ausgegeben der auch angezeigt wird.
von Pascal G. (pascalgieringer)


Lesenswert?

Hans W. schrieb:
> Wenn es mit Interrupt nicht klappt würde ich einen Gegentest ohne
> Interrupt (Polling der Statusregister in einer Loop) versuchen. Dann
> weisst du, ob das Interrupt-Handling fehlerhaft war, oder es woanders
> scheitert.

Gute Idee, werde das später gleich ausprobieren.
von Alexander (alecxs)


Lesenswert?

Wastl schrieb:
> Die Abkürzung MC hat je nach Kontext verschiedene Bedeutungen.

Und dieser Kontext fehlt in in diesem MännerClub / MüllContainer völlig.
von Norbert (der_norbert)


Lesenswert?

Pascal G. schrieb:
> wenn ich den Zweiten dran hänge RX>TX und TX>RX scheint es so als würden
> keine daten empfangen werden.

Nur zur Vollständigkeit:
Hast du denn auch Gnd <---> Gnd verbunden?

Add: Ansonsten zur Fehlersuche ohne Geräte
Test1: LED ein wenn ISR angesprungen wird.
Test2: Wenn der µC PWM auf die LED kann, Helligkeit (PWM duty) 
inkrementieren mit steigendem ›index‹
: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Ich kann mich auch nur anschließen und Dir empfehlen, einen 10€ Logic 
Analyzer zu kaufen. Auch wenn Du momentan noch nicht den Sinn erkennen 
magst, es wird für derlei Aufgaben dein Lieblingsinstrument werden. Dazu 
ist es wirklich leicht zu bedienen, bei den heutigen einfachen USB-LA 
bedarf es keiner großen Einarbeitung. Schau mal ein paar enstprechende 
Tutorials. Du wirst dann wunderbar beobachten können, was tatsächlich 
zwischen den beiden Seiten passiert.

So etwas wie das hier (nur Beispiel) reicht für den Anfang völlig:
https://www.amazon.de/Analyzer-Binghe-Unterst%C3%BCtzung-Sprungdraht-kompatibel/dp/B0D868ST5C
von Thomas W. (goaty)


Lesenswert?

Pascal G. schrieb:
> wenn ich die Daten vom ersten MC über des Serial Monitor vom PC auslese
> passt alles
> wenn ich den Zweiten dran hänge RX>TX und TX>RX scheint es so als würden
> keine daten empfangen werden.

Jeder Controller hat eine serielle Schnittstelle und du klemmst alle 
zwei plus PC direkt zusammen ?
Wieso brauchst du beim zweiten Controller die Verbindung bidirektional ?
Vielleicht verstehe ich es auch nicht wirklich....
von Pascal G. (pascalgieringer)


Lesenswert?

Thomas W. schrieb:

> Jeder Controller hat eine serielle Schnittstelle und du klemmst alle
> zwei plus PC direkt zusammen ?
> Wieso brauchst du beim zweiten Controller die Verbindung bidirektional ?
> Vielleicht verstehe ich es auch nicht wirklich....

Nein, ich verbinde beide Controller über RX + TX miteinander und nutze 
eine Externe Spannungsquelle, dementsprechend sollten die meiden 
Controller ja miteinander kommunizieren.

Die Verbindung über USB war nur um zu prüfen ob der erste etwas sendet.
oder Funktioniert die Kommunikation da dann anders?

Konkret sende ich vom einen Controller eine Zahl die am anderen über das 
LCD ausgegeben werden soll.
PS. das ist nur zum Testen, später sollen da mehrere werte und infos 
übertragen und ausgewertet werden ;)
von Pascal G. (pascalgieringer)


Lesenswert?

Norbert schrieb:
> Nur zur Vollständigkeit:
> Hast du denn auch Gnd <---> Gnd verbunden?

Jap, beide Controller sind über die gleiche Spannungsquelle verbunden,

> Add: Ansonsten zur Fehlersuche ohne Geräte
> Test1: LED ein wenn ISR angesprungen wird.
> Test2: Wenn der µC PWM auf die LED kann, Helligkeit (PWM duty)
> inkrementieren mit steigendem ›index‹

werde ich auch mal noch versuchen, danke :)
Meine Vermutung ist ja das ich im Code nen Bock geschossen hab(würde 
mich wundern wenn nicht)
von Mario M. (thelonging)


Lesenswert?

RXCIE0 ist in UCSR0B.
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.