Ich hab ein Problem mit USART von Mega16. Bisher hab ich mit Classics und Mega8 gearbeitet, da hat es prima geklappt. Jetzt will ich eine Verbindung zum Rechner mit Mega16 schaffen, und es scheint so zu sein, das es nicht so leicht sein wird ;) Also, mit dem Controller ist ja alles in Ordnung. Fürs Programmieren verwende ich STK500, da bin ich auch in der Lage die Verbindung zu testen. Da funktioniert es einwandfrei (ich hab da ein Echo eingebaut). Aber wenn ich was mit meiner Platine mache, dann bekomme ich ständig verschiedene Probleme mit der Verbindung. Also, erstens: eigentlich wollte ich 115200 baud haben, mit STK klappt es, und meine Platine meint, dass da nur 57600 baud drine sind. Die Einstellungen von dem UCSR sind eindeutig richtig! Mit den niedrigeren Frequenzen klappt es, aber da gibt's ein weiteres Problem - ich kriege zwar Echo, aber Bestätigungsbyte (nach jedem Befehl) geht verloren. Mit dem STK ist es nicht so, da kriege ich diese Bestätigung. Es wird auch nichts resetet, das habe ich festgestellt, der nächste Befehl nach dem OUT UDR, TEMP wird ausgeführt, also es stimmt was mit dem MAX232 nicht. Habt ihr schon so was getroffen? Also, es funktioniert mit dem höchen bitrate und es stimmt irgendwas mit der Übertragung nicht. Mit freundlichen Grüßen!
Ja, und es geht doch irgendwas shiff mit dem Controller, er sendet diese Bestätigungsbytes nicht. Aber nur mit meiner Platine. .... sbi PORTD, 3 cbi PORTD, 4 cbi PORTD, 5 ldi TEMP, 0b00000101 mov portd_copy, TEMP rcall delaer ldi TEMP, error_mes out UDR, TEMP sbi PORTD, led_red .... alle Befehle wurden ausgeführt (ich kriege leuchtende led), aber error_mes kommt nicht raus. Und Echo funktioniert einwandfrei, also vermute ich, dass Einstellungen von USART doch richtig sind. delaer macht ja eine passende Pause...
Wie sieht Deine Platine aus? Drahtverhau auf Lochraster oder nach EMV-gesichtspunkten geroutetes Layout? 100nF Kondensatoren an GND/VCC jedes Bausteins (Sowohl Atmel als auch Max232)? Auf dem Oszilloskop zu sehen, ob er die Bestätigungsbytes überhaupt sendet? Schonmal versucht, der PC-Schnittstelle einen Fehlercode zu entlocken (falls das Bestätigungsbyte nicht richtig erkannt wird). Gleiches Quarz auf Deiner Platine wie auf dem STK? Kondensatoren am Quarz? Spiel evtl mal mit dem UBR rum, vielleicht ist das Quarz etwas "verstimmt" und die Baudrate ist daneben.
-hast du auf deiner Platine wirklich einen MAX232? Ich hatte von Reichelt mal eine Stange HIN232 bekommen, angeblich kompatibel (aber nicht bei hohen Baudraten!) -den Wandler korrekt beschaltet? Es kursieren seit Unzeiten Schaltungen, bei denen der Kondensator an V+ gegen Masse liegt, er gehört aber gegen Vcc
Mit den MAX232 hatte ich auch schon verschiedentlich Ärger. Oft spielt das Layout einem einen Streich. Eigentlich half mir in diesen Fällen immer eine Reihenschaltung aus einem 4,7nF Kondensator mit einem 100 Ohm Widerstand vom Ausgang der V24-Treiber (auf der +-12V Seite - also zum PC hin) gegen GND. Dieses RC-Glied habe ich noch in keinem Datenbuch für den MAX 232 gefunden, man findet es aber eigentlich immer am Ausgang von NF-Leistungsverstärker und wie gesagt hat es mir schon oft einen MAX 232 in Schwung gebracht. Da der Treiber des MAX232 eigentlich nichts anderes als so eine kleine Leistungsstufe ist, ist es vielleicht nicht ganz verkehrt. Falls es funktionieren sollte, musst du möglicherweise mit den Bauteilwerten etwas spielen, es geht vielleicht auch schon mit einem viel kleineren Kondensator. Viel Erfolg Simon
Das war wirklich ein HIN232, also das Problem mit den hochen Bitraten ist gelöst. Mit der Schaltung soll auch alles stimmen, sonst hätte ich kein Echo gekriegt oder? ;) Ich vermute nur, das es eine sehr lange Pause gebraucht wird bis ein weiterer Byte übertragen sein kann. Aber wieso passiert so was verstehe ich nicht.
@Crazy horse: Die Geschichte mit dem Kondensator ist ne interessante Sache. Um der ganzen Sache auf den Grund zu gehen, habe ich mal beides ausprobiert und keinerlei Unterschied feststellen können. Jetzt würde mich mal interessieren, warum der Kondensator an VCC ran soll, in den Datenblättern ist es tatsächlich so drin. Da V+ und V- symmetrisch sind (sein sollten), ist ein Anschluß an GND doch eigentlich logischer, als den V+ an VCC. Kann mir das mal jemand erklären?
@thkaiser: die Spannungen sind auch symetrisch... allerdings mit unterschiedlicher Polarität. Die Kondensatoren werden benötigt, damit der Max/Hin und wie auch immer 232 aus +5V die RS-232 Pegel machen kann (+/- 12V). Im Datenblatt erkennt man auch das Ground positiver als V- und +5V negativer als V+ ist....
Sorry vergessen... @ crazy horse: hatte bis dato mit den Hin und auch anderen Typen nie Probleme, auch bei hohen Baudraten. Allerdings brauchen die noch wie die alten MAX232 die 10µ Elkos, und kommen nicht mit den 100n aus....
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.