Forum: Mikrocontroller und Digitale Elektronik HILFE UART FUNKTIONIERT NICHT


von Dominik K. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Dominik K. (Gast)


Lesenswert?

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!

von Dominik K. (Gast)


Lesenswert?

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!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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).

von Daniel (Gast)


Lesenswert?

Ich kann Rufus nur zustimmen. Check mal die Fusebits...

von Dominik K. (Gast)


Lesenswert?

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?

von Dominik K. (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

"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.

von Dominik K. (Gast)


Lesenswert?

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!!!

von Dominik K. (Gast)


Lesenswert?

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.

von Dominik K. (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang Screenshot von den FUSEBITS des ATMEGA8535.

Wie gesgat, ich verwende einen ext. 8Mhz Quarz mit zwei 22pF
Kondensatoren.

von Hannes L. (hannes)


Lesenswert?

> 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.

...

von Hannes L. (hannes)


Lesenswert?

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.

...

von Dominik K. (Gast)


Lesenswert?

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.

von ²³² (Gast)


Lesenswert?

> 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.

von Dominik K. (Gast)


Lesenswert?

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.

von Dominik K. (Gast)


Lesenswert?

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.

von Dominik K. (Gast)


Lesenswert?

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.

von Dominik K. (Gast)


Lesenswert?

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.

von Hannes L. (hannes)


Lesenswert?

Du wiederholst dich...

von Hannes L. (hannes)


Lesenswert?

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
Noch kein Account? Hier anmelden.