Forum: Mikrocontroller und Digitale Elektronik Kommunikation vom Raspbarry Pi mit ATMEGA16 über RS485


von Kay R. (warlock9164)


Lesenswert?

Hy,
bin neu hier und habe mit der Programmierung von Python noch sehr wenig 
Erfahrung, daher bitte ich um Nachsicht.

Ich habe sitze jetzt schon seit ca. 3 Wochen daran, mit meinem Raspberry 
Pi eine Kommunikation mit einem ATMEGA16, über eine RS485 Verbindung, 
herzustellen.
Leider bisher nur mit sehr wenig Erfolg.

Ich habe auf dem Raspberry ein Programm laufen, welches eine Adresse 
(z.B. 5) in die Pipe schickt und das Modul, auf dem ein ATMEGA16 am 
laufen ist, soll sich erkennen, seine eigene Adresse nochmal zum 
vergleich zurück senden und dann einen Wert übermitteln.

Problem ist allerdings, dass das Modul nur bei 1 oder 80 reagiert und 
dann auch nur eine 80 zurück sendet (mit dem Wert lassen wir erst mal 
sein, da ich gerne erst mal das ansprechen hin bekommen will).

Habe es jetzt schon mit dem RasPi Comm und der UART-Schnittstelle (mit 
jeweils einem RS485-IC SN75176BP) versucht.

Meine Vermutung ist, dass ich mit pyserial kein startbit senden kann. 
Oder ich stelle mich zu dusslig an.

Da mir die Beiträge hier bisher immer sehr gut geholfen haben, hoffe 
ich, dass ihr mir auch bei diesem Problem helfen könnt.

Danke schon mal im Voraus.

Kay

von Florian (Gast)


Lesenswert?

Hallo Kay,

bist Du Dir sicher (geprüft!) das Deine Hardware richtig arbeitet? A und 
B Leitung richtig verbunden? Wird Dein Direction Pin (DIR) zur richtigen 
Zeit und ausreichend Lange angesteuert? Ist im Ruhezustand dein DIR auf 
"Empfang" geschaltet? hast Du ein Scope, mit dem Du die Signal ansehen 
kannst?
Ev. postest Du mal einen Schaltplan.

Erst wenn das alles richtig können wir uns die Software ansehen.

Gruß
Florian

von Kay R. (warlock9164)


Lesenswert?

Hallo Florian,

vielen Dank für die schnelle Antwort

Hardware ist alles OK und richtig.
Auch das DIR ist richtig. Wie gesagt, mir dem RasPi Comm und über UART 
habe ich die gleichen Probleme bzw. das gleiche Fehlerbild. Wenn ich den 
ATMEGA einfach seine eingestellte Adresse (bei 1) lasse, empfängt das 
Raspi immer eine 80.

Wenn ich mir das ganze mit nem Ossi anschaue ist schon zu sehen, das 
mein Raspi kein Startbit sendet und mein ATMEGA16 erwartet es leider und 
sendet es auch mit raus.

Das Raspi sendet zb. eine 1 wie es sich gehört (nur leider ohne 
Startbit) und der ATMEGA auch (mit Startbit).

Ich kann auch gerne mal ein Foto machen von dem ganzen.

P.S.: Wenn ich zwei AMTEGA zusammenschließe und die Aufgabe vom Raspi 
(nur Verbindungsaufbau, Adresse prüfen, Wert übermitteln und Wert 
anzeigen über LEDs) von einem der beiden ATMEGA machen lasse, geht es. 
Weil beide mit Startbit arbeiten.

Nur pyserial will einfach kein Startbit senden und ich habe auch in 
keinem Forum was gefunden was mir weiter hilft.

von Florian (Gast)


Lesenswert?

Kein Startbit ist allerdings schon sehr merkwürdig. Kannst Du vor dem 
RS485 Treiber mit dem Scope mal messen? Fehlt da das Startbit auch schon 
oder erst nach dem Treiber?

von Kay R. (warlock9164)


Angehängte Dateien:

Lesenswert?

Ja, fehlt auch schon vorher.

anbei mal ein Bild von meinem Scope. Übertragen wird eine 1.

von spess53 (Gast)


Lesenswert?

Hi

> Übertragen wird eine 1.

Wenn das ein 0x00000001 sein soll, dann passt das doch. Startbit und 
Bit0.

MfG Spess

von Kay R. (warlock9164)


Angehängte Dateien:

Lesenswert?

Leider sind rechts die höherwertigen Bits.

Auf dem Bild ist eine 5 zu sehen

von spess53 (Gast)


Lesenswert?

Hi

>Leider sind rechts die höherwertigen Bits.

Ja. Das Startbit ist links. Dann folgt Bit0, Bit1, Bit2, ... , Stopbit.

>Auf dem Bild ist eine 5 zu sehen.

Passt auch.

MfG Spess

von Kay R. (warlock9164)


Lesenswert?

Hmmm....

gibt es zufällig einen weg meine Ausgabe zu negieren?

von spess53 (Gast)


Lesenswert?

Hi

>gibt es zufällig einen weg meine Ausgabe zu negieren?

Wozu? Das ist ein korrektes UART-Signal.

MfG Spess

von Kay R. (warlock9164)


Lesenswert?

Stimmt schon, aber der ATMEGA sieht 0V als Logische 1.
Sprich: wenn ich meine Ausgabe negiere müsste er es richtig 
interpretieren.

von spess53 (Gast)


Lesenswert?

Hi

>Stimmt schon, aber der ATMEGA sieht 0V als Logische 1.

Unsinn. Der ATMega sieht das genau so.

MfG Spess

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

Kay Raabe schrieb:
> Stimmt schon, aber der ATMEGA sieht 0V als Logische 1.
Wo hast du denn den schrott her?

Kay Raabe schrieb:
> Leider sind rechts die höherwertigen Bits.
>
> Auf dem Bild ist eine 5 zu sehen
Dann schau doch mal in das Datenblatt des Controllers... siehe Bild 
(ausschnitt aus dem Datenblatt)!

von Mark R. (stevestrong)


Lesenswert?

Bei einer RS485 Kommunikation soll auf beide Seiten (Sender und 
Epmfänger) jeweils einen UART<->RS485 Adapter vorhanden sein. Diese 
Adapter stellen sicher dass das Signal mit der gesendeten Polarität 
empfangen wird.
Hast Du auf beide Seiten jeweils einen Adapter?
Sind die RS485 Leitungen richtig (A->A, B->B) angeschlossen?
Wenn die Polarität nicht stimmt, dann kann nur A mit B gewechselt 
sein...

von Kay R. (warlock9164)


Lesenswert?

das ist alles ok.
Wie schon gesagt, der ATMega mit der Ardesse 1 erkennt sich bei 1 und 80 
und sendet eine 80 zurück

von Kay R. (warlock9164)


Angehängte Dateien:

Lesenswert?

So sieht eine 2 gesendet von meinem ATMega aus

von spess53 (Gast)


Lesenswert?

Hi

>So sieht eine 2 gesendet von meinem ATMega aus

Dann stimmt etwas anderes nicht. Zeig mal dein Programm.

MfG Spess

von Bernd K. (prof7bit)


Lesenswert?

Kay Raabe schrieb:
> So sieht eine 2 gesendet von meinem ATMega aus

Nie und nimmer. Das ist keine 2, das ist eine -2. Oder eine ~2 oder eine 
(255-2). Zeig mal den Code.

von Mark R. (stevestrong)


Lesenswert?

Kay Raabe schrieb:
> So sieht eine 2 gesendet von meinem ATMega aus

verwendest du software UART auf ATmega?
Sonnst kann das höchstens ein 0x1C sein...

von Kay R. (warlock9164)


Lesenswert?

Hy,
habe es aus beruflichen Gründen leider erst jetzt geschaft wieder zu 
screiben.

Problem ist beseitigt!

Ihr hattet recht, war ne ~2.
Und dann kam noch dazu, dass die Übertragungsrate vom ATMega falsch 
berechnet war.

Jetzt geht alles.

Vielen dank nochmal an alle.

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.