Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] ATMega32 und PC über RS232 mit Pollin Modul
jcrypter
18.08.2010, 08:35
Guten Morgen,
ich versuche eine Kommunikation zwischen PC und dem ATMega32 zu realisieren.
Hierzu habe ich mir ein entsprechendes Modul bei Pollin bestellt.
http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze/Diverse/RS232_TTL_Wandler_Bausatz.html
Das habe ich jetzt gestern aufgebaut.
Ich habe das Modul an den PC angeschlossen, mit 5V verbunden, und RX und TX des Controllers an die Platine angeschlossen.
Als Testprogramm habe ich einfach via "print" irgendeinen Text schicken lassen, in einer Endlosschleife.
Erst funktionierte nichts.
Dann ist mir aufgefallen, dass ab und an ein Signal durchkam.
Ins besondere wenn ich die Platine des Moduls auf die Tischplatte drücke.
Offenbar wurde durch den Tisch ein hochohmiger Kurzschluss erzeugt.
Ich hab dann versucht herauszufinden zwischen welchen Kontakten.
Letzlich konnte ich jetzt Daten senden, wenn ich eine Verbindung zwischen RXD und TXD und CTS herstelle. Dann kann ich zumindest Daten vom Mikrocontroller empfangen.
Anders herum hat nicht funktioniert, allerdings habe ich damit auch nicht gerechnet.
Ich vermute das ist so nicht korrekt oder?
Kann mir einer von euch sagen, was ich womöglich falsch gemacht habe?
edit: das ganze läuft mit einer baudrate von 2400, das sollte mit dem internen takt ja funktionieren.
Danke für eure Hilfe!
Crypi
Mach mal eine Brücke zwischen TxD und RxD auf der Controllerseite des Moduls rein und gib dem Modul 5V ohne einen Controller anzuschließen.
Nun kannst Du mit einem Terminalprogramm beliebigen Text zu dem Schnittstellenadapter senden.
Wenn das läuft ist das Modul soweit i.O.
Gib dann dem Controller wirklich einen Quarz. Eventuell ist der interne Taktoszillator tatsächlich so weit von den Sollwerten entfernt, das es auch bei der geringen Baudrate nicht geht.
Ausserdem ist der interne Oszillator stark Temperaturabhängig.
jcrypter
18.08.2010, 09:27
Danke für deine Antwort!
Dass hieße dann, dass ich das was ich abschicke auch sofort zurückbekomme, oder?
Das würde aber nicht erklären, warum es funktioniert, wenn ich eine Verbindung zwischen TXD,RXD und CTS herstelle.
Crypi
Wenn du eine Brücke zwischen Rx und Tx machst und im Terminalprogramm einen Buchstaben drückst, muss dir der Buchstabe angezeigt werden, wenn das Modul funktioniert.
Und der Grund warum das mit dem µC nicht funktioniert, kann wie schon erwähnt, der interne RC-Oszilator sein. Du darfst für RS232 nur eine bestimmte Toleranz haben und wenn schon der Takt vom Controller nicht genau ist (z.B. weil die Temperatur schwankt) dann stimmt auch der "Baudratengenerator" im Controller nicht.
Und hast du mal probiert ob eventuell Rx und Tx vertauscht sind?
jcrypter
18.08.2010, 09:51
Das habe ich auch schon überlegt und muss es mal testen.
Gestern abend ist mir das natürlich nicht eingefallen...
Ok, wenn ich einen Quarz einbau, 7,3728 MHz passen ja ganz gut, was muss ich dann im Bascom Programm angeben? Die genau Frequenz?
Also $crystal = 7372800 ?
Crypi
Genau. Immer die Frequenz eingeben die du gerade verwenden willst.
jcrypter
18.08.2010, 10:15
Danke für die Hilfe!
Ich werde dann mal sehen was ich erreichen kann.
Vielleicht sind ja wirklich nur die Anschlüsse vertauscht.. das wäre super.
Ansonsten probiere ich deine Idee aus um zu gucken, ob das Modul funktioniert.
Mal sehen ob ich es heute zu Conrad schaffe um mir den Quarz zu kaufen.
Ich habe aus irgendwelchen Gründen irgendwann mal einen 10MHz Quarz gekauft, ich hatte schonmal versucht den anzuschließen, jedoch bin ich am umstellen der Fusebits gescheitert.
Ich habe versucht mich an dem Wiki-Eintrag, "ein erstes programm zum controller übertragen", zu orientieren aber offenbar habe ich eine andere Version von Bascom als der Autor, die Auswahlmöglichkeit die er wählt steht bei mir nicht zur Verfügung.
Was muss ich für einen Eintrag wählen?
Habe leider gerade die Versionsnummer nicht zur Hand.
Crypi
Die Versionsnummer ist eigentlich nicht so wichtig mein ich.
Alles über 8MHz zählt zu den Quarzen mit Typ High Freq. Hab im moment keinen Controller hier um mal genau zu schauen.
Du musst unter Fuse-Bits das hier setzen:
•Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms; [CKSEL=1111 SUT=11]
jcrypter
18.08.2010, 10:42
Vielen Dank für deine Unterstützung!
Ich werde das alles heute abend ausprobieren!
Crypi
Ahhh ich habs gefunden :)
So hier mal ein Link:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/fuse_lock_bits_2/
Am Ende der Seite steht wann ein Quarz als Low Freq usw bezeichnet wird. Ich hoffe das Hilft dir etwas mehr, weil ich war mir nicht mehr ganz sicher ;)
-schumi-
18.08.2010, 10:58
Ganz, ganz, ganz doofe Frage:
Ich habe das Modul an den PC angeschlossen, mit 5V verbunden, und RX und TX des Controllers an die Platine angeschlossen.
Ich hoffe dass du GND auch verbunden hast, oder? Könnte mir nämlich vorstellen, dass CTS jetzt als GND missbraucht wird...
BTW: Woran hast du beim uC CTS angeschlossen?
Für mich klingt das ein wenig nach falsch konfiguriertem Terminal auf der PC Seite. Du hast in deiner PC Software nicht zufällig eine Option ähnlich wie "Hardware Handshake" aktiviert? Das darf nicht der Fall sein! Dabei kann es duraus zu solchen Phänomenen kommen...
Stimmt.....GND sollte er schon mit verbunden haben :)
Und CTS kannst du an jeden Pin vom Controller anschließen. Das ist nur eine Statusmeldung vom PC zum Controller, das der Controller die Erlaubnis hat zu senden.
Für eine normale RS232-Kommunikation braucht man diese "Handshake" Signale wie CTS und RTS usw. allerdings nicht wirklich.
Danke für deine Antwort!
Dass hieße dann, dass ich das was ich abschicke auch sofort zurückbekomme, oder?
Das würde aber nicht erklären, warum es funktioniert, wenn ich eine Verbindung zwischen TXD,RXD und CTS herstelle.
Crypi
CTS/RTS sind Hardware Steuersignale......
CTS = Eingedeutscht Klar zum Senden
Im Terminal Programm oder in der Systemsteuerung com x muss Hardware
Steuerung auf "keine" stehen. dann RX an TX und TX an RX + GND an GND.
Baut, datenbits, Stopbits müssen passen.
Gruß Richard
jcrypter
18.08.2010, 11:21
ah ok.
Ich bin mir nicht sicher was da stand.
Aber ich glaube ich habe "Hardware" gelesen und habe diese Einstellung nicht geändert.
Noch ein Punkt, den ich heute Abend testen kann!
Danke!
Crypi
Im Terminalprogramm werden die Handshake-Signale über die Einstellung "Flusssteuerung" eingestellt. Da musst du immer "Keine" einstellen, vorrausgesetzt du hast sie nicht angeschlossen und willst sie nicht verwenden.
jcrypter
18.08.2010, 11:51
ok, danke!
Crypi
jcrypter
19.08.2010, 08:12
Schande über mein Haupt...
aber erstmal Guten Morgen,
es war die Kombination aus mehreren Dingen.
1. Handshake stand auf "Hardware"
2. RX und TX vertauscht......
Nun ja, jetzt geht es :)
Ich habe mir gestern noch einen Quarz gekauft.
Damit lassen sich auch höhere Baudraten fehlerfrei erzielen.
Jetzt funktioniert das wunderbar!
Danke für eure Hilfe!
Crypi
Ich glaube das mit Rx und Tx vertauschen passiert jedem hier selber oft genug 8-[
jcrypter
19.08.2010, 09:06
:-)
(nicht genug zeichen)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.