Einstieg in UART geglückt - Fragen Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Einstieg in UART geglückt - Fragen |
|
|
|
|
BID = 384495
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Hallo Steffan,
Ich will nicht meckern, aber es sollte helfen,
1. Das Datenblatt zu lesen, denn dort wird die exakte Funktionsweise der asynchronen Schnittstelle exakt beschrieben, nebst zu beschreibenden Registern,
2. Nicht diese blöden Routinen von BASCOM zu nutzen.
Zitat :
| [...]sollte ein Nullmodem sein, ich mein, Senden geht ja..[...] |
Das darf es nicht sein! Es muss ein Kabel sein, wo Rx und Tx nicht gekreuzt sind, wie bei einem Nullmodemkabel. 1:1 sollte es sein. - Da jedoch Daten ankommen, sollte es das richtige Kabel sein.
---
Es wird, bei korrekter Initialisierung, ein Interrupts ausgeführt: URXC.
Wenn dieses im Programm aufgerufen wird, sind Daten über RS232 ins Register UDR eingegangen. Die kann man da rausholen - einmalig! Denn wenn man das Register einmal eingelesen hat, wird der Inhalt automatisch gelöscht.
Deshalb:
Code : |
Enable Interrupts
Enable URXC
On URXC Zeichen_ein
Do
...
...
Loop
Zeichen_ein:
...
...
Return
|
|
So sollte es klappen.
Weiterhin sollte die Option "kein Handshake" eingestellt werden, denn das wird hier nicht benutzt. Weder Hard- noch Softwaremäßig.
Testen, ob Daten rein- oder rausgehen kann man mit Transistor und LED anzeigen lassen, es handelt sich ja bloß um temporären Nutzen. Natürlich geht das auch mit deinem Oszi oder jedem normalen Logiktester.
Außerdem solltest du mal PC-seitig Rx und Tx brücken - Jetzt kommen die Daten, die gesendet werden, stumpf zurück. Damit kannst du auch testen, ob die XP-Rechner empfangen können. Ich gehe übrigens davon aus, dass das mit XP nichts zu tun hat. Serielle Geräte funktionieren bei mir zumindest auch mit XP .
_________________
|
|
BID = 384581
Steppenwolf Schreibmaschine
Beiträge: 1757 Wohnort: Zürich, Schweiz
|
|
Also,
mit dem XP funktioniert nun alles, Daten kommen, bei Kurzschluss der Datenleitungen, sofort zurück.
Nur:
Ich hab die Hardware mal nach diesem Schema hier umgestrickt:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART
jetzt gehts gar nicht mehr... Es ist ja zum verzweifeln...
Welche Beschaltung soll ich denn nun nehmen?
Die Beschaltung nach dem Schaltplan im Link stimmt bei mir, wenn ich in die Buchse schaue (von aussen), dann ist oben links die 1, es ist auch in der Buchse angeschrieben...Nur geht nix...
Bei mir sieht das Kabel so aus:
5==>5
2==>3
3==>2
Stimmt das so?
Edit:
Habs mit der Beschaltung vom obigen Link mal am Oszi gehabt.
Der AVR sendet alle 50ms etwas.
Ich messe gegen GND.
Es zuckt auf Leitung 3.
Leitung 2 ist still.
Am AVR zuckt es am Pin PD1
Das Teil sendet also...
Nur: Warum kann ich von keinem PC was empfangen? Baudraten stimmen, Handshake ist aus...
_________________
Meine Projekte:
http://mauerer.m.googlepages.com
[ Diese Nachricht wurde geändert von: Steppenwolf am 9 Nov 2006 21:12 ]
[ Diese Nachricht wurde geändert von: Steppenwolf am 9 Nov 2006 21:19 ] |
|
BID = 384591
Jornbyte Moderator
Beiträge: 7178
|
Die Schaltung von AVR-Tutorial:_UART ist richtig.
An diese Schaltung kommt eine Buchse. Das Kabel sollte eine 1:1 Verbindung sein, also Stecker und Buchse, wenn das so ist, ist deine Belegung falsch.
5==>5
2==>2
3==>3 ist Richtig. (RS232)
Bei Nullmodem ist es
5==>5
2==>3
3==>2
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 384592
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Das ist doch ein gekreuztes Kabel.
Nimm als Bezugspunkt für Datenrichtungen mal den PC:
Welcher PIN führt das asynchrone Signal vom PC raus (Tx)? Diese Leitung geht dann in einen Eingang des MAX232. Der Ausgang davon geht dann beim AVR an den Pin Rx (Receive -> Empfänger)
So, dann guckt man, wieder von PC-Sicht, welches der Eingang für die asynchronen Daten (Rx) ist. Den verfolgt man weiter und schließt in an einen Ausgang des MAX232 an. Den dazu passenden Eingang hängt man an den AVR-Eingang Tx (Transmit -> Sender)
Sollte ohne Probleme gehen.
Bist du auch sicher, ob auf dem AVR alles korrekt initialisiert wurde? Die Interrupts müssen aktiv sein, auch wenn nicht empfangen wird!
(Ist doch käse, ich würde mal wieder Assembler empfehlen, bringt einfach mehr )
Edit: Jornbyte war schneller
_________________
[ Diese Nachricht wurde geändert von: DonComi am 9 Nov 2006 21:48 ]
|
BID = 384593
high_speed Schreibmaschine
Beiträge: 2073
|
Hallo Mario
Hier mal die Pinbelegung der seriellen Schnittstelle am DTE
(Data Terminal Equipment) [dein PC]:
http://de.wikipedia.org/wiki/EIA-232
Dein µC Schaltung bekommt dann die DCE-Beschaltung (Data
Circuit-Terminating Equipment). Die Verbindungsleitung ist
1:1 durchverbunden, auf der einen Seite (DCE) mit einem
Stecker auf der andern (DTE) mit einer Buchse.
Pin2 (9 Pol.) ist am DTE: RxD
Pin3 (9 Pol.) ist am DTE: TxD
Pin2 (9 Pol.) ist am DCE: TxD
Pin3 (9 Pol.) ist am DCE: RxD
Korrigiere deine Leitung und Schaltung.
Wenn du den µC gesockelt hast, zieh ihn mal heraus und verbinde TxD mit RxD in der Fassung mit einem Draht.
MfG
Holger
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
[ Diese Nachricht wurde geändert von: high_speed am 9 Nov 2006 21:50 ]
|
BID = 384594
Steppenwolf Schreibmaschine
Beiträge: 1757 Wohnort: Zürich, Schweiz
|
Hmm, also moment mal.
Wenn ich ein gekreuztes Kabel hab, dann kreuze ich die Leitungen doch einfach auf meinem Board wieder zurück, indem ich sie nach dem MAX und vor der Buchse noch tausche...
Werde ich nachher mal schnell machen.
_________________
Meine Projekte:
http://mauerer.m.googlepages.com
|
BID = 384604
high_speed Schreibmaschine
Beiträge: 2073
|
Hallo Mario
Was hast du denn jetzt für eine Leitung?
Nach Schaltplan hast du in deiner Schaltung eine Buche
verbaut. Dazu gehört normalerweise eine 1:1 durchverbundene
Leitung.
Wenn du dagegen einen Stecker verbaust hättest, würde man
normalerweise eine Nullmodemleitung verwenden.
Im Endeffekt muss TxD vom µC-Board mit dem RxD vom PC
verbunden werden. Für RxD gilt das entsprechende.
RxD <- TxD
TxD -> RxD
( CTS <- RTS )
( RTS -> CTS )
MfG
Holger
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
[ Diese Nachricht wurde geändert von: high_speed am 9 Nov 2006 22:08 ]
|
BID = 384605
Steppenwolf Schreibmaschine
Beiträge: 1757 Wohnort: Zürich, Schweiz
|
Jaaaaaaaa
Hab die Leitungen auf der MAX-Seite getauscht...
Es geht! Sowohl Senden als Empfangen!!
Danke vielmals für die Hilfe!!
Herzlichen Gruss
Mario
_________________
Meine Projekte:
http://mauerer.m.googlepages.com
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 10 Beiträge verfasst © x sparkkelsputz Besucher : 182396632 Heute : 3828 Gestern : 7548 Online : 644 25.11.2024 14:27 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0472400188446
|