Guten Abend, ich habe ein großes Problem mit der UART am ATMEGA8535. Von der Mikrocontroller.com Seite habe ich mirein DEMO Board für den AT90S8535 gekauft. Da funktioniert die UART ohne probleme. Daraufhin habe ich den Controller entfernt und den ATMEGA8535 draufgesteckt. Siehe da, die UART hat da auch funktioniert(senden und empfangen ok). Wenn ich jetzt den ATMEGA8535 auf mein anderes, selber gebautes BOARD stecke dann funktioniert die UART nicht. Ich kann am Terminalprog. nur Müllempfangen. Desweiteren habe ich dann den ATMEGA8535 von meinem BOARD entfernt und mit dem AT90S8535 bestückt--> siehe da da hat die UART auch funktioniert. Nur wenn ich den ATMEGA8535 auf meinem selber gemachtes BOARD stecke, dann funktioniert UART überhaupt nicht! Im Anhang befindet sich mein Testprogramm (geschrieben in C mit CodeVisionAVRD).Der RS232 Baustein ist identisch mit dem anderen Board. Am MAX232 habe ich 4 Kondensatoren angeschlossen(100nF). Die UART Beschaltung habe ich von dem Demo Board auf der www.mikrocntroller.com Seite genauso aufgebaut. Ich verstehe da die Welt nicht mehr.
Na, wenn beide Controller in Deinem Board nicht funktionieren, aber im gekauften Board funktionieren, dann ist ziemlich eindeutig das Problem nicht in der Software, sondern in Deinem Board zu suchen. a) Nicht jeder "MAX232" kommt mit 100nF-Kondensatoren aus; mal ins Datenblatt exakt der verwendeten Variante gesehen? Verwendet das gekaufte Board auch nur 100nF-Kondensatoren? b) Wie wird der Takt auf Deinem Board/dem gekauften Board erzeugt? Quarzoszillator unter Zuhilfenahme des µC-eigenen Treibers (passiver Quarz an xtal1 und xtal0), Verwendung des µC-eigenen RC-Oszillators oder gar integrierter Quarzoszillator? Welche Taktfrequenz auf welchem Board? c) Wie wird die Stromversorgung Deines Boards geglättet?
Hallo, ich verwende definitiv den gleichen Max232. Die MAX232 habe ich auch ausgetauscht. An dem kann es nicht liegen. Die Kondensatoren stimmen auch. Ne, der AT90S8535 habe ich mal auf mein selbergebautes Board draufgesteckt. Da hat die RS232 prima funktioniert. Nur Wenn ich dem ATMEGA8535 auf das Board stecke, dann klappt die RS232 verbindung nicht richtig. Das Terminalprog. empfängt nur Müll! Ich vewende in Beiden Boards den gleichen QUarztyp. Also kann es daran auch nicht liegen. Ich weiss halt nun nicht mehr weiter!
Hallo, ich verwende definitiv den gleichen Max232. Die MAX232 habe ich auch ausgetauscht. An dem kann es nicht liegen. Die Kondensatoren stimmen auch. Ne, der AT90S8535 habe ich mal auf mein selbergebautes Board draufgesteckt. Da hat die RS232 prima funktioniert. Nur Wenn ich dem ATMEGA8535 auf das Board stecke, dann klappt die RS232 verbindung nicht richtig. Das Terminalprog. empfängt nur Müll! Ich vewende in Beiden Boards den gleichen QUarztyp. Also kann es daran auch nicht liegen. Ich weiss halt nun nicht mehr weiter!
Tja, dann schnapp Dir ein geeignetes Messgerät und sieh Dir damit Deine Schaltung im Betrieb an. Verwendest Du zusammen mit "dem gleichen Quarztyp" auch gleich dimensionierte Kondensatoren am Quarz? (Ich vermute mal, daß Du einen passiven Quarz und die interne Oszillatorschaltung mit xtal0/xtal1 verwendest).
Warum die Fuse Bits. Oben habe ich doch schon erähnt, dass ich den ATMEGA8535 auf dem DEMO BOARD von der mikrocontroller.net Seite schon erfolgreich getestet habe. Da funktioniert die UART ja auch ohne probleme. Das heisst es kann ja gar nicht an den Fuses liegen, oder?
Ja ich verwende auch am Quarz die gleichen Kondensatoren (gleiche Typen = 22pF) Die restliche Schaltung von meinem selbergebautem Board funktioniert ja. Ich habe ja schon wie gesagt den AT90S8535 draufgesteckt und die RS232 funktioniert da ja auch super! Warum sollte ich da was nachmessen? Ich habe nur statt den AT90S8535 den ATMEGA8535 eingesetzt. Und im Programmcode habe ich die include Datei "mega8535.H" verwendet.
"Warum sollte ich da was nachmessen?" Tja, dann lass es halt sein. Ich würde einen Fehler suchen, in dem ich durch gesicherte Nachweise Fehlerquellen ausschließe; Du gehörst zu der Fraktion, die das durch Annahmen versucht. Auch ein Weg, wenn auch nicht immer von Erfolg gekrönt.
Ok ich werde mal ein Oszi beschaffen. Wie sollte ich da beim messen vorgehen. Was ist relevant? Wie bewerte ich dann die Signale? Fakt ist, dass der MAX232 schon richtig funktioniert bzw. korrekt beschaltet wurde, sonst würde ja der AT90s8535 nicht auf meinem selbergebautem Board funktionieren!!!
Der ATMEGA8535 sowie AT90S8535 funktionieren ja auf dem gekauften Board. Die UART funktioniert da reibungslos. Die UART von meinem selber gebastelten BOARD funktioniert nur mit dem AT90S8535.Ich verstehe da nicht den zusammenhang. Der MAX232, Kondensatoren(100nf), FUSE BITS und Null Modem Kbael scheinen ja dann ok zu sein.
Im Anhang Screenshot von den FUSEBITS des ATMEGA8535. Wie gesgat, ich verwende einen ext. 8Mhz Quarz mit zwei 22pF Kondensatoren.
> Wie sollte ich da beim messen vorgehen. Was ist relevant? > Wie bewerte ich dann die Signale? Hmmm... Also bevor man die Prüfspitze irgendwo dranhält, macht man sich Gedanken, welche Spannung bzw. welches Signal man an diesem Punkt der Schaltung erwartet. Dann ist auch die Bewertung des Messwertes/Signals kein Problem. Das setzt natürlich voraus, dass man die Schaltung versteht und nicht nur irgendwoher abgekupfert hat. Ein guter Ansatzpunkt sind erstmal die Spannungen am MAX232. Mit einem Multimeter kann man erstmal messen, wie hoch die von der Ladungspumpe erzeugten Spannungen sind (positiv und negativ). Welche Pins des MAX232 das sind, erfährst du im Datenblatt (ich bin jetzt zu faul, da nachzusehen). Liegen diese Spannungen deutlich unter 8V (plus und minus), dann sind definitiv die Kondensatoren zu klein. Hat eigentlich jeder Schaltkreis seinen eigenen Abblock-Kondensator? Also neben dem AVR auch der MAX232? Ein Abblockkondensator ist ein Keramik-C von 100nF zwischen Vcc und GND. Er ist so dicht wie möglich an den Stromversorgungspins anzubringen. ...
Achja, ein 8MHz-Quarz ist für die serielle Schnittstelle ziemlich ungeeignet. Es kann zeitweise funktionieren, muss aber nicht. Für RS232 gibt es nunmal nicht umsonst die "krummen" Baudratenquarze. ...
Leider konnte ich noch keine OSZI auftreiben. Es ist eigentlich schon komisch, wenn ich den AT90S8535 auf mein selbergebasteltes Board stecke die UART super läuft. Der AT90S8535 ist fast identisch mit dem ATMEGA8535. Die UART dürfte doch exakt gleich sein oder. An dem QUarz dürfte es doch dann nicht liegen.
> Achja, ein 8MHz-Quarz ist für die serielle Schnittstelle > ziemlich ungeeignet. Es kann zeitweise funktionieren, muss > aber nicht. Für RS232 gibt es nunmal nicht umsonst die > "krummen" Baudratenquarze. Das stimmt nicht. Mit 8Mhz kann man problemlos Baudraten bis 38400 erzeugen, der Fehler beträgt bei dieser Rate gerade mal 0.2%. Nur bei 28k8 ist der Fehler mit 2.1% etwas höher, hier könnten Probleme auftauchen.
Also ich weiss jetzt halt nicht mehr weiter. Das ganze ist ja schon komisch. Es liegt bei mir nur daran, wenn ich den Controller durch einen AT90S8535 ersetzte dan funzt die UART super.
Also ich meine auch, das es nicht an dem Quarz bzw. Taktfrequenz 8Mhz liegen kann. Ich kann ja laut Datenblatt den Wert für das Register (UBRRL=0x33;--> 9600Baud) berechnen.
So, ich hab mal mit dem Oszi die ganze Sache mal untersucht. Ich konnte an meiner selbergebauten Schaltung nichts feststellen. Es ist schon komisch, dass wenn ich den AT90s9535 auf die Schaltung stecke, dass da die UART super läuft.
So, ich hab mal mit dem Oszi die ganze Sache mal untersucht. Ich konnte an meiner selbergebauten Schaltung nichts feststellen. Es ist schon komisch, dass wenn ich den AT90s9535 auf die Schaltung stecke, dass da die UART super läuft.
Nun nochmal sachlich... > So, ich hab mal mit dem Oszi die ganze Sache mal untersucht. Ich > konnte an meiner selbergebauten Schaltung nichts feststellen. Was hast du mit dem Oszi untersucht? Zeig doch mal dein Messprotokoll. Poste mal den (tatsächlichen!) Schaltplan, zähle mal auf, welche Messpunkte du untersucht hast. Nenne dabei den Messpunkt, das von dir erwartete Messergebnis (mit Begründung, warum du dort das und nix anderes erwartest) und das tatsächlich gemessene Messergebnis. Und das mit beiden AVRs. Vielleicht kann man damit den Fehler finden. Ich spekuliere sogar darauf, dass du den Fehler selbst findest, wenn du systematisch an die Sache heran gehst. Viel Erfolg... ...HanneS...
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.