Forum: Mikrocontroller und Digitale Elektronik UART Probleme


von Andreas (Gast)


Lesenswert?

Hallo!

Ich verwende den Atmega8 und habe alle Schaltungen wir im Tutorial
gezeigt aufgebaut. Bis auc das UART funktioniert auch alles wunderbar.
Beim UART kommen keine Signale im PC an.
Auf einer anderen HP habe ich folgendes gefunden:

"Die nötigen Pegel auf der RS232 werden wie gewohnt durch einen MAX232
bereitgestellt. Bitte achten Sie darauf, einen MAX232-Sub-Typ zu kaufen,
der wie angegeben, mit 100nF-Kondensatoren arbeitet. Beim MAX232ACPE ist
das zum Beispiel der Fall.

Der "krumme" Quarz ist ein billiger Massentyp. Frequenzen wie 3,6864
MHz, 7,3728 MHz und 9,216 MHz erlauben eine fehlerfreie Generierung von
Standard-Baudraten wie 9600, 19200, 38400 und 115200. Sie sparen sich
viel Ärger, wenn sie eine dieser Frequenzen nehmen. Die
Beispielprogramme von mir basieren auf 3,6864 MHz. "

1. Kann es am Quarz liegen? Im Tutorial werden doch auch 4 MHz
genommen...

2. Vielleicht habe ich so einen Sub-Typ nicht?! Im Conrad hat er
gesagt, dass er den nicht da hat aber mit einen Ersatz gibt.
Beschriftung: 1. Zeile "3CD29RM" - 2. Zeile "MAX232N"
Links ist noch ein Logo, das aber so klein ist, dass ich es nicht
erkennen kann.

Danke für Eure Hilfe.
Gruß
Andreas

von Rahul (Gast)


Lesenswert?

dazu werfe man einen Blick auf die Seite www.maxim-ic.com, und suche
dort nach einem MAX232N.
Und für das Logo kaufe man sich eine Lupe oder eine Logo-Lese-Brille...

von Andreas (Gast)


Lesenswert?

Dann mach das mal: MAX232N bringt keine Treffer, MAX232 wiederum so
viele, dass ich mich nicht mehr auskenne.
Gibt es noch andere Hersteller von einem MAX232N?

von Ralph Dillhardt (Gast)


Lesenswert?

Hi,

leider kenne ich den ATmega8 nicht, bis jetzt experimentiere ich mit
dem Atmega161 oder ATmega162. Bei mir hat sich gezeigt, das der
Hersteller des Max232 nicht ausschlag geben war. Jedoch ein stabile
Tabtfrequenz. Ich betreibe beide MCU's mit einem 8MHz Quarz, der mir 2
mal 22pF Kondensatoren nach Masse geschaltet ist. In dieser
Konstellation und mit der Richtigen Einstellung der Fuse-Bit's habe
ich eine stabile UART aufbauen können.

von Eddi (Gast)


Lesenswert?


von semo (Gast)


Lesenswert?

und sonst passt alles bei der schaltung bzw. beim Programm (USART
richtig eingestellt?)

hast du auch darauf geachtet dass die Verbindung zum PC richtig ist
(wegen Tx und Rx -> gekreuzt, net gekreuzt?)

gruß,
semo

von Christof Krüger (Gast)


Lesenswert?

Auf der Webseite von TI steht:

Operates From a Single 5-V Power Supply With 1.0-µF Charge-Pump
Capacitors

Wenn du jetzt nur 0.1µF = 1000nF Kondensatoren benutzt hast, könnte das
ein Problem werden. Wenn du nochmal aufs Logo des Chips guckst, solltest
du die Form des Staates Texas mit einem i darauf erkennen ;)

Ausserdem werden beim 4MHz-Quarz nur bestimmte baudraten einigermaßen
korrekt generiert. Siehe dazu Seite 157 des ATmega8 Datenblattes. Alles
was über 1% Fehler macht, wird nicht empfohlen!

von Andreas (Gast)


Lesenswert?

Hallo!

Danke für Eure Antworten.

@Ralph:
Soll ich das bei meinem 4 MHz-Quarzt auch einfach mal versuchen?
Schaden kanns ja nicht oder?

@semo:
Ja, die Schaltung ist garantiert richtig, hab sie x-mal überprüft. Mein
Serielles Kabel ist auch 1:1 beschaltet und nicht gekreuzt.

@Christof:
Ich hab mich bei den Kondensatoren auf das Tutorial verlassen. Da
werden 22µF genommen. Das Logo hab ich aber immer noch nicht wirklich
erkannt ;)

Gruß
Andreas

von Olaf (Gast)


Lesenswert?

Wenn du einen falschen Quarz und damit eine falsche Baudrate hast,
dann wirst du auf deinem Terminalprogramm immer noch etwas sehen.
Allerdings nur irgendwelche wirren Zeichen.

Wenn du nun garnichts siehst dann liegt es wirklich daran das du 1uF
Kondensatoren fuer deinen MAX232 brauchst.
Das kannst du uebrigens ganz einfach sehen indem du dir mal ein
beliebiges Datenblatt eines MAX232 nimmst und mal die Spannung an den
Kondensatoren misst. Du musst da irgendwo +10V und an anderer Stelle
-10V messen koennen.

Olaf

von harry (Gast)


Lesenswert?

hi,

die gute alte rs232 entsprach dem v24 standard, als die erde noch 'ne
scheibe war. der uartbaustein im pc ist locker in der lage auch
niedrigere pegel zu lesen, wenn's keine ewig lange störverseuchte
leitung ist, reicht 1 transistor, um das tx-signal des avr zu
invertieren, bis jetzt hat jeder pc (bei mir) auch den ttl-pegel 1a
interpretiert. die kondenstoren am max232 sind nur für die ladungspumpe
um den v24 pegel (+12v/-12v) zu erreichen, also eher unkritisch, wenn's
keine elend lange strippe wird.

gruss, harry

von Frank (Gast)


Lesenswert?

Hi,

bezogen auf deine Aussage "Auf einer anderen HP habe ich folgendes
gefunden:" kommt wohl von der Rowalt Seite, oder?

Dort steht aber auch:

MAX232A: Unbedingt A-Typ, andere Untertypen können nicht mit
100nF-Kapazitäten arbeiten.
Guter Ausweichtyp: ST232CN. MAX232-Typen für Elko-Betrieb gehen aus
Platzgründen nicht.

und

Quarz: Das LowProfile-Gehäuse (-LP-Typen) ist vorteilhaft, aber nicht
unbedingt erforderlich. Keine
„ähnliche“ Frequenz wie z.B. 4 MHz nehmen, sonst stimmen
die Baudraten nicht.

Gruß
Frank

von Frank (Gast)


Lesenswert?

sorry, soll heißen

Quarz: Das LowProfile-Gehäuse (-LP-Typen) ist vorteilhaft, aber nicht
unbedingt erforderlich. Keine
"ähnliche" Frequenz wie z.B. 4 MHz nehmen, sonst stimmen die
Baudraten nicht.

von Andreas (Gast)


Lesenswert?

@Frank:
Ja, diese Seite hab ich gemeint. Aber hier im Tutorial werden doch 4
MHz eingesetzt. Und es hat doch bestimmt bei vielen mit 4 MHz
funktioniert, sonst hätte er doch sein Tutorial geändert.

@Olaf
Du meinst also, dass mein MAX232 ein anderer ist als im Tutorial und
ich deshalb andere Kondensatoren brauche? 1 µF Elkos? Aber sonst
geschaltet wie im Tutorial angegeben?
Hab jetzt mal gemessen:
Elko an 1 und 3: 4,5V
Elko an 4 und 5: 9,0V
Elko an 2 und 16: 4,0V
Elko an 6: 8,6V
Elko an 15/16/GND/VCC: 4,9V

von olaf (Gast)


Lesenswert?

Es war bei mir noch nicht notwendig ein Tutorial zum AVR zu lesen, da
mir bisher immer das Datenblatt gereicht hat. Daher kann ich da nichts
vergleichen. .-)

Selbst wenn du also noch gerne Tutorials liesst solltest du vielleicht
doch mal langsam auch das Datenblatt deines AVRs lesen. Dann kannst du
dir selber ausrechnen welche Baudraten damit moeglich sind und vor
allem auch welche Abweichungen es mit deinem Quarz gibt. Es wird
naemlich auf jedenfalls so sein das ein 4Mhz Quarz nur einige wenige
Baudraten einigermassen genau hinbekommt. Mit anderen Worten es haengt
auch davon ab welche Baudrate du nun gewaehlt hast.

Fuer die 1uF Kondensatoren kannst du ganz normale Elkos nehmen oder
auch Tantalkondensatoren. Auch da empfiehlt sich das lesen des
Datenblattes um zu sehen wierum man die anschliesst.

Ansonsten stimme ich auch darin ueberein das man einen MAX232
eigentlich garnicht braucht. Ich setze den zwar auch beruflich bei
Dingen ein die fuer teuer Geld verkauft werden und im industriellen
Umfeld mit groesseren Leitungslaengen verkauft werden, privat wuerde
ich das aber niemals machen.
Es reicht in der Tat den Ausgang eines Controllers zu invertieren.
(BC547, 4.7k, 10k) oder wenn man ganz faul ist nimmt man irgendeinen
HC-MOS als Inverter.
Auch das Eingangsignal muss man nur mit einer Z-Diode (4.7V) und einem
Widerstand (4.7k) begrenzen und dann nochmal invertieren.

Olaf

von Andreas (Gast)


Lesenswert?

Ich habe zum ersten Mal mit µC zu tun - ich war froh dass ich ein
Tutorial gefunden habe ;)

Hast du zufällig einen Schaltplan für eine Schaltung ohne MAX232?
Und eventuell eine Teileliste? Aus der obigen Beschreibung könnte ich
keine Schaltung bauen - was aber an mir liegt ;)

von Danny P. (Gast)


Lesenswert?

"Serielles Kabel ist auch 1:1 beschaltet und nicht gekreuzt."

ähm.. täusch ich mich oder ist das der Fehler? Das Kabel zu einem PC
o.ä. ,muss doch unbedingt gekreutzt sein, oder?
TX vom Atmel in RX des PC und RX vom Atmel in TX des PC... bei
zusammengeschalteten Sende- und beide Empfangsleitungen können die sich
doch nicht unterhalten...

greetz
Danny

von Andreas (Gast)


Lesenswert?

Ich glaube das wird schon in der Schaltung erledigt dass sich TX und RX
jeweils treffen. Oder?
http://www.mikrocontroller.net/tutorial/uart.htm

Steht ja auch extra drin, dass man KEIN Nullmodemkabel nehmen soll -
und nur Nullmodemkabel sind gekreuzt...dachte ich mal

von Frank (Gast)


Lesenswert?

Welche Hardwareversion hast du gebaut? Bei der von Rowalt musst du ein
Nullmodemkabel nehmen! Hier im Tut nicht. Schau die mal die Belegung
des 9pol D-Sub an. Bei Rowalt geht RxD auf 2 und TxD auf 3. Hier im Tut
genau umgekehrt!

Ich habe das Board von Rowalt nachgebaut, mit dem ATMega8 (aus dem
neuen Buch). Bei mir funzt die UART, aber mit einem krummen Quarz!
werde es am WE mal mit einem 8Mhz versuchen.

von Andreas (Gast)


Lesenswert?

Hab die Version von hier im Tut genommen...

von Danny P. (Gast)


Lesenswert?

@Andreas: naja ich bin von meiner Betrachtung von der Strecke zwischen
MAX232 und PC ausgegangen und die sind ja irgendwo gekreuztz...

Taktprobleme vom Quarz her denk ich sinds hier nicht, denn ich hab mal
in Bascom geguckt (da ist ein Rechner wo man Baudrate und Quarz
einstellen kann und er errechnet den %ualen Fehler. Liegt bei Baudraten
bis 19200 bei 0,16%, ich glaub des ist gering genug. Erst bei 28800Baud
ghet der Fehler auf über 7%)

womit programmierst du? Versuch doch sonst mal Bascom, da gibst einfach
Quarzfrequenz und Baudrate ein und er berechnet auch das serielle
Protokoll. Vielleicht hast ja nur einen Zeitfehler beim Programmieren
eingebaut.

kannst du nicht mal eine LED mit Vorwiderstand an TX vom Atmel
anklemmen und gucken ob er überhaupt etwas sendet? Müsste dann ja
fröhlich blinkern...

greetz
Danny

von Danny P. (Gast)


Lesenswert?

nachtrag__
Bei der %-Abweichung bin ich natürlich von deinen 4MHz ausgegangen

von britneypunter (Gast)


Lesenswert?

Hallo,
bunutzt du zum ersten mal nen Mega für die UART?
Ich habe mir an diesem problem nämlich auch die Zähne ausgebissen.
Du mußt mei den Mega's den Quarz mit den Fuses bits erst
konfigurieren, ansonsten läuft der nur mit dem internen 1MHz tackt.
Näheres findest du dazu im Datenblatt. Mit PonyProg kanst du die fuses
über das Schloß-Symbol aufrufen und auch ändern. Bei mir hat's daran
gelegen.

von Andreas (Gast)


Lesenswert?

Hallo!

Ja, ich mach das alles zum ersten mal.
Du meinst bestimmt den Absatz in
http://www.mikrocontroller.net/tutorial/io-basics.htm
Das habe ich alles so eingestellt, daran kanns eigentlich nicht liegen
- außer man muss noch mehr machen...

Vielleicht probier ich jetzt erstmal die Version ohne MAX232. Kann ich
an PD0(RXD) und PD1(TXD) direkt den SubD-Stecker ranmachen? Da kommen
doch sicher schon die Impulse raus, die dann halt nicht auf +/-12V
geändert werden sondern als 5V-Impulse in den PC gehen...soll ja auch
reichen, habe ich erfahren.

von Christof Krüger (Gast)


Lesenswert?

Könnte sein, dass der PC deine Signale versteht, aber ich glaube kaum,
dass dein AVR gerne -12/12V um die Ohren haben möchte!

von Andreas (Gast)


Lesenswert?

Der Arme...ok, das will ich ihm natürlich nicht zumuten.

Hat jemand eine Schaltung für UART ohne MAX232?

von Peter D. (peda)


Lesenswert?

In der Tat sorgen die verschiedenen 232 für ne Menge Verwirrung.

Deshalb wurde irgendwann die 202 Numerierung eingeführt, d.h. alle 202
laufen durchgängig mit 100nF-Kondensatoren, egal ob MAX202, HIN202
usw.

Ich schreibe also in meine Schaltpläne immer 202, das ist dann
eindeutig.


Peter

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.