Raspberry Pi Verbindung zu Atmega 328P UART

#2844687
Lesenswert?

Hallo µ-Community,

Ich habe ein Problem bei folgender Schaltung:

Ich möchte meine RPi mit einem ATMEGA 328P(U) mit 12MHz Oszillator über 
UART verbinden, als Basis für meinen Versuch habe ich diese
http://www.andremiller.net/content/raspberry-pi-and-arduino-via-gpio-uart
Anleitung genommen.

Die Konfiguration des RPi hat soweit geklappt, die /boot/cmdline.txt 
habe ich auf
1
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
geändert und in der /etc/inittab
1
2:23:respawn:/sbin/getty -L ttyAMA0 9600 vt100
auskommentiert.
Zugriff auf die Serielle Schnittstelle /dev/ttyAMA0 habe ich mit 
Putty&Plink.
1
sudo plink -serial /dev/ttyAMA0 -sercfg 57600,8,n,1

Auf dem 328P läuft ein Programm welches Teststrings im Sekundentakt 
sendet.(Siehe Anhang)

Als Pegelwandler (5V-3,3V) verwende ich einen CD74HC4050E
http://at.farnell.com/jsp/search/productdetail.jsp?sku=1739945
(ähnlich dem in der obigen Anleitung), auf einer kleinen Platine mit 
Sockel&6 Pins. 1 Pin VCC, 1Pin GND, 4Pins für I/O.

Verbunden ist das ganze so (Siehe Anhang):
RPi 3,3V -> CD4050 VCC
RPi GND -> CD4050 GND
RPi RXD -> CD4050 Ausgang (Y)
ATMEGA 328P TXD -> CD4050 Eingang (A)

Problem:
Wenn ich jetzt eine Verbindung herstelle kommen zwar ~90% der Daten an, 
leider kommen in den Pausen und den zwischen den Zeichen&Strings 
Unmengen an Fehlinformationen (Kryptische Zeichen) (úTEó11=)ÿÿTEST...). 
Wenn ich die Spannung am O-Pin Messe ist diese im Bereich 2,3V (hab 
leider grad kein Oszi), sollte diese 3,3V betragen?
Komisch: Wenn ich das TXD Kabel vom Atmega abziehe und praktisch keine 
Spannung anliegt, bekomme ich auch Störsignale sobald ich das TXD-Kabel 
bewege :/.
Als Verbindungskabel benutze ich diese F-F Jumperkabel
http://cgi.ebay.at/ws/eBayISAPI.dll?ViewItem&item=271057611562

Problem 2:
Mein Versuch den RPi TXD direkt mit dem Atmega RXD (3,3V=>HIGH?)zu 
verbinden und ein Testprogramm, welches mit dem PC funktioniert zu 
probieren, war ebenfalls  auf die Schnelle ohne Erfolg :/

Die Kommunikation von Atmega zu PC mit TTL232R-USB to Serial Kabel 
funktioniert tadellos mit der gleichen Konfiguration von Putty&Plink.

Ich bin inzwischen echt verzweifelt :/, ich habe noch nie einen solchen 
Fehler gehabt, komischerweise habe ich noch keine anderen 
Tutorials/Tests zu dem Thema RPi<->Atmega UART gefunden, deshalb so 
ausführlich :).

MfG
overlord8k8
Angehängte Dateien:
#2844922
Lesenswert?

Simon K. schrieb:
> Der interne Oszillator im AVR ist zu ungenau für übliche
> UART-Anwendungen.
>
> Oder soll das an dem ewig langen kabel da ein Quarz sein... Ohje
>
> Einige andere wichtige Bauelemente scheinen dem AVR auch zu fehlen?
> Gibts da einen Schaltplan zu dem "hingerotzten" Stück Lochrasterplatine?

Nein, der 12Mhz Oszillator ist schon extern (Die Platine ist auf keinem 
Bild -.-!)
An dem ewig langem Kabel hängt kein Quarz >.<, ein 4poliger 
Harwin-Stecker zur Verbindung mit der Platine...

Einen Schaltplan braucht man nicht wirklich -> siehe Datenblatt C4050 
Schaltplan Seite 2 Funktionsdiagramm,,,,
http://www.ti.com/lit/ds/symlink/cd74hc4050.pdf

Hat vielleicht irgendwer Erfahrung mit dem CD74HC4050? UART Verbindungen 
mit solchen Kabeln?

MfG
Gast #2995852
Lesenswert?

Auch wenn das Problem mitlerweil irrelevant ist:
Ich hatte dasselbe Problem mit einem Arduino Uno und einem Raspberry Pi 
bei einer ähnlichen Schaltung.

Bei mir ließen sich die Probleme auf 2 Dinge zurückführen:

1. Die direkte serielle Schnittstelle ist zu "unsauber" für den 
Raspberry Pi - das heißt, das Rauschen ist zu stark. Lösung für mich war 
eine virtuelle serielle Schnittstelle, die ich an 2 anderen Pins des 
Mikrocontrollers angelegt habe mit dem Ergebnis, dass ich eine saubere 
Verbindung ohne Rauschen hatte.

2. Sendest du einen Stringterminator und flushst dann einmal den Buffer? 
Daran hat es bei mir gelegen. Falls du keinen Stringterminator sendest, 
liest die Mikrocontroller sonst den kompletten übrigen Speicher aus und 
gibt kryptische Zeichen.


Das sind meine beiden naiven Lösungsansätze. Ich muss allerdings dazu 
sagen, dass ich kein E-Techniker bin, sondern nur Informatiker. Mit der 
Hardwareseite kenne ich mich leider deshalb nur bedingt aus.
#2995860
Lesenswert?

Das hört sich nach undefinierten Pegeln an.. Versuche Probehalber  mal 
an allen vier Leitungen (Rx Tx 5V, Rx Tx 3V3) jeweils einen Widerstand 
von irgendwas um die 10k nach Gnd einzubauen.

(Der Avr sollte normal immer einen festen Pegel haben (beim RPi weis ich 
es nicht sicher), aber schaden kanns nicht)
Gast #2995866
Lesenswert?

BBsan schrieb:
> 1. Die direkte serielle Schnittstelle ist zu "unsauber" für den
> Raspberry Pi - das heißt, das Rauschen ist zu stark. Lösung für mich war
> eine virtuelle serielle Schnittstelle, die ich an 2 anderen Pins des
> Mikrocontrollers angelegt habe mit dem Ergebnis, dass ich eine saubere
> Verbindung ohne Rauschen hatte.

Da waren sicher Amateure am Werk die keine Ahnung hatten. Ich fürchte 
ihr solltet euch vorher mal selber auf die Finger schauen und überlegen 
ob das Problem nicht eher bei euch liegt. Wenn ich mir die Schaltung und 
den Aufbau hier so anschaue, dann kommen mir ernsthafte Zweifel ob die 
RPi-Leute weniger Ahnung hatten als ihr.

Mal darüber nachgedacht den RPi zu schirmen, keine meterlangen Leitungen 
freifliegend neben hochfrequenten Logiksignale zu legen? Wo sind die 
Kondensatoren für den  CD4050  ???
#2996333
Lesenswert?

Hallo,

Danke für die späten Antworten, habe das Problem aber inzwischen gelöst!

Es war ein simpler Anfänger Fehler,ich habe unbewusst die GNDs nicht 
miteinander verbunden -> Unterschiedliches Potential zwischen den Pegeln 
und jede Menge Störsignale...

Also Schaltung nach dem Schaltplan im Anhang aufbauen und es sollte 
funktionieren.

Für RPi->ATmega16 einfach direkt die Pins RPi_TXD mit ATmega16_RXD 
verbinden, GND muss natürlich auch verbunden werden ;)!

MfG
overlord8k8
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren