mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HILFE UART FUNKTIONIERT NICHT


Autor: Dominik K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann Rufus nur zustimmen. Check mal die Fusebits...

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Anhang Screenshot von den FUSEBITS des ATMEGA8535.

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ²³² (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominik K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wiederholst dich...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.