Hallo zusammen, Ich versuche mich mittlerweile seit ca. einer Woche an der implementierung einer Kommunikation meines ATMega8 mit der Seriellen Schnittstelle meines Computers. Leider funktioniert das ganze nicht wie gewollt. Der PC empfängt immer nur Schrott. Bevor jetzt alle losschreien, ich habe mir alle Artikel und Threads zu dem Thema durchgelesen und alles versucht. Erstmal zu meinem Aufbau : Ich habe einen "Max232 CPE" und einen ATMega8L8 bei diesen sind rx,tx mit r1in und t1out verbunden. Als elkos am Max232 nutze ich 1mf Elkos (Der Aufbau entspricht dem im UART Tutorial). Am ATMega betreibe ich einen 4mhz Quarz, dieser ist mit xtal1 und xtal2 verbunden (davor befinden sich zwei 22 pF kerkos). Die Fuses habe ich mit dem AVR Studio auf extern christal medium mit der höchsten startup zeit gesetzt. Der Quarz funktioniert auch (habe ich durch auslöten aus der Schaltung verifiziert). Auf meiner Schaltung nutze ich einen Seriellen Stecker (Leitungen sind gekreuzt. Kommt ja auch was am Rechner an). Das ganze ist per Nullmodem mit dem rechner verbunden. Ich habe in einem Beitrag gelesen, dass man die Anschlüsse (des Seriellen Steckers) 4-6-8 Brücken muss, in einem anderen, dass 4-6 und 7-8 gebrückt werden müssen. Das habe ich auch beides getestet, hat aber auch keine besseren ergebnisse gebracht. Ich habe an der Schaltung auch einen Resetschalter angebracht (und nutze diesen ;-). Wenn ich die Schaltung teste gehe ich in der folgenden Reihenfolge vor: 1. Schaltung mit Nullmodem verbinden 2. Strom anschließen (9V Block bzw. 16V Netzteil) 3. Terminal Software starten und verbinden 4. Reset Schalter drücken Zur Software: Ich erstelle die Programme mit dem aktuellen AVR Studio (habe sowohl Asm als auch GCC probiert). Zunächst habe ich die Quelltexte aus dem Tutorial getestet. Als das nicht zum gewünschten Ergebnis geführt hat habe ich die Beispiele aus dem Datenblatt übernommen und UBBR auf 25 (4Mhz und 9600 Baud) gesetzt (auch aus der Tabelle im Datenblatt übernommen). Ich habe sowohl die Variante mit einem Stopbit(Tutorial), als auch die mit zweien (Datenblatt) getestet. Der Fehler: Getestet habe ich sowohl das senden eines einzelnen Zeichens, als auch das wiederholte senden einzelner Zeichen. Dabei kommt es immer wieder vor, das auch mal ein par Zeichen korrekt empfangen werden (Beim Assembler Beispielprogramm, dass die Zeichenfolge "Test!" sendet ist der string manchmal fast komplett). Ich teste mit den Programmen HTerm und ttermPro. Als ich mal gemessen habe, wie es mit der Stromversorgung aussieht viel mir auf, das in der gesamten Schaltung nur 4,91V - 4,92V zur Verfügung stehen (Stromversorgung ist wie im Tutorial aufgebaut). Am Max232 sind es nurnoch knapp über 3V. Diese Ergebnisse habe ich sowohl mit dem 9V Block, als auch mit dem 16V Netzteil. Wäre super, wenn mir jemand einen Tip geben könnte. Ich bin schon kurz davor aufzugeben. Danke schonmal im Vorraus. P.S.: Sollte ich vergessen haben etwas wichtiges zu beschreiben bitte auch darauf hinweisen
Die 4.9 V sind nicht kritisch, aber 3 am MAX232 ist zu wenig. Er muß daraus ja die Spannungen für RS232 machen. Wo bleiben denn die 2 V bis zum MAX232?
Das ganze ist gemessen hinter dem C4 aus der Beispielschaltung (http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART). Also zwischen C4 und V-. Messe ich da evtl. einfach an der falschen Stelle?
Romano schrieb: > Also zwischen C4 und V-. Zwischen C4 und Pin V- ist eine Verbindung, da darf keine Spannung sein... :-o Oder misst/meinst du die Spannung über C4 (gegen GND)?
du solltest messen können (alles gegen Gnd): Pin16: 5V Pin2: ca. 10V Pin6: ca. -10V Und wenn weder der PC noch der ATMega sendet: Pin14: -10V Pin13: -10V
Leider bin ich momentan bei der Arbeit ;-). Sobald ich zuhause bin werde ich noch mal messen. Aber ich denke, dass ich an PIN 16 auch wieder nur die 4,92V messen werde. Und PIN2 und PIN6 hängen ja auch am "normalen" Stromkreis. Wird die Spannung dort durch die Elkos erhöht(Ich kenne mich bisher leider noch nicht so gut mit dem Verhalten und dem Zusammenspiel der einzelnen Bauteile aus). Grundsätzlich gehe ich allerdings davon aus, dass die Spannung überall stimmt. Da die Kommunikation mit dem PC ja grundsätzlich klappt (es kommen Daten beim PC an). Hättet ihr noch eine Idee, was die Fehlerquelle sein könnte?
Bleiben noch die Terminaleinstellungen, neben Baudrate wäre da: -Anzahl der Datenbits (8) -Parität (keine) -Anzahl der stopbits (1) -Flusssteuerung (keine) Um die Harware zu testen, kanst du ja mal den ATMega entfernen und Rx und Tx brücken. Vom Terminal gesendete Zeichen sollten dann wieder auf dem Schirm auftauchen.
@H.joachim Seifert: Die Terminalsoftware habe ich in beiden Fällen so eingestellt. Der Tip mit der Brücke ist gut. Das werde ich nacher sofort testen. Danke.
Was ist eigentlich mit der Taktfrequenz ? von einem Quarz oder Keramikschwinger erzeugt ?
Als Einstellung im AVR Studio habe ich folgendes gewählt : "Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 64 ms" Ansonsten habe ich an den Fuses nichts geändert
Hallo Romano... Ich hatte damals auch mal dieses komische Verhalten meines ATMEGA8 beim gleichen versuch wie du... mein fehler lag damals daran, das der gemeinsame Bezugspotenzialausgleich gefehlt hatte durch nen leitungsfehler auf der platine... Messe mal ob zwischen PC-Gehäuse und ATMEGA GND Pin auch wirklich eine direkte verbindung besteht, ansonsten mach das alles mal mit einem 3,6864MHz Quartz, da is die fehlertoleranz am kleinsten... LG Giuse
Hi Giuse, ich bin mir grad nicht sicher, wie genau ich das testen könnte. Meinst du ich soll das Nullmoden durchmessen? Oder soll ich an VCC auf dem Bord und GND am PC Ende des Kabels messen? Den GND des Seriellen Steckers (auf meiner Platine) habe ich übrigens direkt an GND (Quasi sofort vom 9V Block) angeschlossen. Habe da auch schon eine Schlatung gesehen, wo dieser Anschluss an V- Lag. Da kam dann aber im Terminal garnichts mehr an.
>Den GND des Seriellen Steckers (auf meiner Platine) habe ich übrigens >direkt an GND (Quasi sofort vom 9V Block) angeschlossen. So sollts eigentlich auch sein und nicht an V- sonst fliegt dir auf dauer der wandler in die luft oder du zerstörst dein COM-Port... Was ich meine ist ganz eifach... Gehe mit einem "Leitungsprüfer" an das PC Gehäuse (Schaltung vorher komplett anschließen natürlich) und das andere ende vom Prüfer an den Minuspol der Batterie und auch an den Pin 8 & 22 vom Mega 8. Überall sollte dann eine 0 OHM direkte verbindung sein... und berichte dann, obs auch geklappt hat :-) wenn nicht, liegt es dann am quarz (3,6864MHz)... Wenn wir deine schaltung hätten, könnten wir dir eher helfen. Mfg Giuse
> Ich habe einen "Max232 CPE" und einen ATMega8L8 bei diesen sind rx,tx > mit r1in und t1out verbunden. RX ist Empfang, da muss r1out des MAX232 an RXD des AVRs. TX ist Senden, da muss TXD des AVRs an t1in des MAX232. > Als elkos am Max232 nutze ich 1mf Elkos Ich vermute, dass Du nicht 1 Millifarad meinst sondern 1 Mikrofarad. ^^ Ich verwende dazu erfolgreich SMD-Kerkos 1000 nF (1 µF). MfG
Hi Giuse, ich werde das nachher testen und dann meine Ergebnisse mitteilen. Die Schaltung entspricht der aus dem Tutorial, ist halt alles "Freiluftverkabelt". Ein Foto wird wohl nichts bringen, oder ? @Kluchscheißender Consulter: Da hast du natürlich recht, ist auch so verkabelt. War nur ein Schreibfehler. Und mit den Elkos hast du auch recht, war ich wohl etwas zu voreilig beim Tippen ;-)
Mir geht's nicht um's Rechthaben, sondern um den Ausschluss von Fehlerquellen. Ich bevorzuge übrigens auch baudratentaugliche Quarze (3,6864 MHz, 7,3728 MHz), wenn meine AVRs mit PCs oder anderen Industriegeräten per RS232 kommunizieren sollen. Es schließt einfach zusätzliche Fehlerquellen aus. MfG
>Ich bevorzuge übrigens auch baudratentaugliche Quarze (3,6864 MHz, >7,3728 MHz) ersteres is besser, da gängiger und besser zu haben und vorneweg auch günstiger im EP. letzteres is zwar auch ok, aber immerhin noch paar microeinheiten schlechter als 3,6864MHz... Aber zum laufen sind die definitiv beide besser als 4MHz... LG Giuse
Ich bin leider erst jetzt dazu gekommen alles durchzumessen. Leider sind die Ergebnisse überhaupt nicht wie erwartet. Beim prüfen zwischen PC Gehäuse und Schaltung (GND und PIN8&22 vom ATMega)habe ich werte um 4 Ohm gemessen (das ist noch in Ordnung, oder?). Aber bei den Spannungswerten am Max232 sid völlig andere Werte als erwartet gemessen worden: PIN2 4V PIN6 -1,3V PIN16 -1,3V T1OUT (beim senden) ca. 3V Lediglich am R1IN habe ich die erwarteten -10V gemessen. Ich denke ich fange nochmal von vorne an und baue die Schaltung neu auf. Wenn jemand mir einen Schaltplan und ein C Programm zur Verfügung stellen könnte (die Kombination aus beidem sollte dann bei ihm schon funktioniert haben) wäre das Toll. Dann gebe ich nächste Woche meine Bestellung bei Reichelt auf. Aufgeben will ich einfach noch nicht. Gruß, Romano
Ein Oszilloskop ist verfuegbar ? Dann ist es ein Stueck einfacher.
Ein Oszilloskop habe ich leider nicht. Da ist mir die Investition momentan einfach zu hoch.
Hallo Romano, welche Spannung liegt am Pin 15 des Max232 an? Gruss Kurt
probier mal diese Seite: http://extremeelectronics.co.in/avr-tutorials/rs232-communication-the-level-conversion/ hat bei mir eigentlich alles funktioniert :-)
@Kurt: An PIN15(GND, nichts angeschlossen) liegen (gemessen gegen GND) 4,2V an. @fuzzy1: Danke für die Seite, wird mir als Anfänger schon von daher weiterhelfen können, dass ich Fotos der Schaltungen sehe.
Romano schrieb: > @Kurt: > An PIN15(GND, nichts angeschlossen) liegen (gemessen gegen GND) 4,2V an. Muss ich das jetzt verstehen??? Wie kann man am GND-Pin 4,2V gegen GND messen? Betreffs Schaltung und C-Programm: Schau doch einfach mal ins Datenblatt des MAX232 (gibt es kostenfrei bei Maxim und an vielen anderen Stellen im Netz), da ist die komplette Beschaltung drin. Und dann schau ins Datenblatt des Mega8, Kapitel USART, da sind ASM- und C-Routinen für RS232 RX und TX drin. MfG
An PIN16 messe ich die gleiche Spannung. Hab dann grad mal den max ausgetauscht (hätte ja defekt sein können), bekomme aber die gleichen Ergebnisse. Im Datenblatt sin VCC und GND auch beschaltet, in allen anderen Quellen habe ich das bisher noch nicht gesehen.
Romano schrieb: > an PIN15(GND, nichts angeschlossen) liegen (gemessen gegen GND) 4,2V an. Romano schrieb: > An PIN16 messe ich die gleiche Spannung. Kann es sein, daß Du die beiden Pins nirgends angeschlossen hast? die gehören an die 5V Versorgung (Pin16) und an Masse (Pin15), wie hier http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART auch abgebildet (der kleine Schaltungsteil rechts unten). Frank
^^Ok, da hab ich mich dann wohl ein wenig blöd angestellt. Das werd ich gleich mal ausbessern und geb dann Rückmeldung.
In der Schaltung die hier (http://extremeelectronics.co.in/avr-tutorials/rs232-communication-the-level-conversion/) dargestellt ist sind die aber auch nicht beschaltet. Ist das einfach SOOO basic, dass das nicht dargestellt wird ??
Vorab erstmal: Vielen, vielen Dank für eure Hilfe. Es hat endlich funktioniert!! Ich bin ja so blöd!! In Zukunft nicht mehr ohne Datenblatt!!! Jetzt weis ich aber, wo man ausdauernde kometent Hilfe bekommt. Vielen Dank noch mal. Gruß, Romano
Romano schrieb: > In der Schaltung die hier > (http://extremeelectronics.co.in/avr-tutorials/rs23...) > dargestellt ist sind die aber auch nicht beschaltet. Daß die Vcc und GND Pins an einem IC angeschlossen werden müssen, sollte eigentlich klar sein, da die Funktion sonst nicht oder wie in Deinem Fall nicht korrekt gegeben ist. In manchen Fällen kann das sogar gut gehen, wenn interne Schutzdioden an den I/O-Pins gegen Masse und Vcc im IC sitzen. Dann kann man sogar eine passende Wechselspennung an zwei I/O-Pins legen und puffert die Versorgung nur an Vcc und GND mit einem Elko und einem 100nF Kondensator. die internen Schutzdioden wirken dann als Brückengleichrichter. Wie hier zum Beispiel: http://micah.navi.cx/2008/09/using-an-avr-as-an-rfid-tag/ Aber als normale Arbeitsweise der IC's kann man das nicht ansehen und sollte es tunlichst vermeiden, wenn man nicht 100%ig weiß, was man tut. In Deinem Falle hat sich der Max seine Versorgungsspannung zum Teil aus den Eingangsspannungen gebastelt, was aber nicht wirklich funktioniert hat. Romano schrieb: > Ist das einfach SOOO basic, dass das nicht dargestellt wird ?? Ja. Genau so wie die Entkoppelkondensatoren an der Spannungsversorgung direkt am IC. In vielen Plänen werden die Versorgungsspannungsanschlüsse einfach weg gelassen oder in einem seperaten Teil gezeichnet, um (vor allem in größeren Plänen) die Übersichtlichkeit zu wahren. Frank
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.