Forum: Mikrocontroller und Digitale Elektronik RS232 funzt nicht!


von Marc (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit der RS232 vom AT90s8535.
Wenn ich das Demo Board von "www,mikrocontroller.com" verwende funzt
die RS232 prima.
Ich habe mir zusätzlich noch mal ein zweites Board auf einer
Lochrasterplatine aufgebaut.
Ich verwende die selben Quarze (8Mhz) sowie den Treiber IC MAX232 und
Mikrocontroller.Die Kondensatoren sind auch die gleichen Typen.
Die Verkabelung habe ich überprüft. Diese stimmt!.

Die UART habe ich per Software folgendermaßen so eingestellt:

UCR=0xD8;
UBRR=0x33; //8Mhz - 9600Baud

Als Compiler verwende ich den CodeVisionAVR.
Wenn ich das Terminal Programm starte sehe ich nur Müll. Also senden
tut die RS232, nur nicht das was es soll.

while (1)
      {
        delay_ms(1000);
        putchar('A');
      };
}

In der while Schleife sende ich alle sekunde ein Zeichen (Zeichen A).
Nun weiss ich nicht woran es noch liegen könnte.
Oszi habe ich leider nicht zur verfügung.

von Profi (Gast)


Lesenswert?

Was kommt denn an?
Immer das selbe Zeichen?
In welchem Abstand?
Evtl. schwingt der Quarz auf einer anderen Frequenz, das siehst Du
daran, dass die 1 Sekunde auch nicht genau stimmt (evtl. mal die Zeit
stoppen, die er für 10 oder 50 Zeichen braucht und dann dividieren).

Wichtig bei XTAL-Betrieb ist: kurze Leitungen, auch die der Cs nach
Gnd. Keine digitalen Signale nahe an den Leitungen vorbeiführen.

Vcc gut gegen Gnd abblocken.
Evtl. mal anderen Quarz nehmen oder 100k - 1MOhm parallel zum Quarz
klemmen, das hilft beim Anschwingen, oder auch mal einen KerKo in Reihe
zum Quarz.


Funktioniert dieses Programm auf dem anderen Board einwandfrei?

Wenn garnichts ankommt: hast Du zumindest ein Voltmeter? Dann die
Spannungen am MAX prüfen. Wenn nichts gesendet wird (idle), muss TXin
auf +3V bis +5V   und TXout auf -6V bis -12V liegen.
Wenn TXin auf Gnd liegt, muss TXout +6V bis +12V haben.

Sind die Elkos richtig rum drin?

von Marc (Gast)


Angehängte Dateien:

Lesenswert?

So ich hab mal ein Ausschnitt vom Terminalprogramm angehängt.
Da kann man sehen, das ich relativ oft das gleiche Zeichen empfange.
Mir ist noch was aufgefallen und zwar habe ich mal die Beschaltung des
MAX232 vom Demo Board "www.mikrocontroller.net" angeschaut. Da hab
ich festgestellt das auf dem Schalplan weniger Pins vom MAX232
beschaltet sind. Auf meinem selber gebastelten Board da sind die Pins
7,8,9,10,15,16 nicht beschaltet. Auf dem DEMO Board ist der PIN 16 mit
+5V verbunden, sowie Pin 10 und 15 sin auch verbunden.
Ist das ein durcheinander.
WIE MUSS ICH EIGENTLICH DEN MAX232 EXAKT BESCHALTEN?

von Marc (Gast)


Lesenswert?

Auch so ich meine ich empfange relativ oft das gleiche Zeichen, aber es
ist nicht das Zeichen 'A'.

von Marc (Gast)


Angehängte Dateien:

Lesenswert?

Schaltplan

von Stephan (Gast)


Lesenswert?

Ist doch schon mal gut, dass überhaupt Zeichen ankommen. Sieht so aus,
als wäre es nur ein Baudraten-Problem, oder?

Stephan.

von Marc (Gast)


Lesenswert?

meinst du echt? Also der Quarz und die Kondensatoren 100nF sind exakt
die gleichen. Auf meinem gebastelten Board da habe ich den PIN 16 nicht
mit +5V versorgt. Hmmm...trotzdem kann ich Zeichen empfangen. Ich bin
jetzt irgendwie sprachlos. Kann mitr jemand einen Schalplan geben, wo
alles Anschlüsse des MAX232 aufgeführt sind?

Ich verwenden den MAX232ECPE.

von Marc (Gast)


Lesenswert?

meinst du echt? Also der Quarz und die Kondensatoren 100nF sind exakt
die gleichen. Auf meinem gebastelten Board da habe ich den PIN 16
nicht
mit +5V versorgt. Hmmm...trotzdem kann ich Zeichen empfangen. Ich bin
jetzt irgendwie sprachlos. Kann mitr jemand einen Schalplan geben, wo
alles Anschlüsse des MAX232 aufgeführt sind?

Ich verwenden den MAX232ECPE.

Den 8Mhz Baustein ist ein Resonator. In der mitte ist der GND
Anschluss.
Vielleicht ist doch der Quarz daran schuld. Komisch ist halt ,dass der
Quarz auf dem anderen Board funzt.

von Andreas Dörr (ADoerr) (Gast)


Lesenswert?

Ich geh mal davon aus, daß in deiner aktuellen Schaltung Pin 16 an Vcc
angeschlossen ist. Wenn nicht, nachholen.
Wenn ich mir so deinen Screenshot (RS232.JPG) anschaue, dann sieht das
wirklich nach verschieden eingestellten Baudraten aus. So nen
Kauderwelsch sieht man dann gerne, weil die eine Empfängerseite z.B.
weniger Bits "sieht" als ankommen (wenn der Empfänger ne kleiner
eingestellte Baudrate hat). Oder umgekehrt erfindet der Empfänger Bits,
die gar nicht gesendet wurden, wenn der Sender mit geringerer Rate
sendet als der Empfänger erwartet.
Überprüf also mal die Baudraten auf Sender- und Empfängerseite.

Bis denne, Andreas.

von Marc (Gast)


Lesenswert?

Also auf der Empfängerseite und SenderSeite habe ich nichts verändert.
Die UART beim Demo Board funzt ja. Die Einstellungen sind die
gleichen.

Die UART initialisiere ich so:

UCR=0xD8;
UBRR=0x33; //8Mhz - 9600Baud

Vielleicht ist es doch das Register D8. Nach meiner Meinung müsste es
so passen oder?

Die Baudraten habe ich auf 9600 Baud eingestellt.Also daran kann es
nicht liegen.

von Andreas Dörr (ADoerr) (Gast)


Lesenswert?

Was Du wo einstellen mußt, weiß ich nicht (ich nutz den uC net).
Start- & Stopbits sowie Parität stimmen auch überein?

von Marc (Gast)


Lesenswert?

Ich meine Register UCR!!!

von Marc (Gast)


Lesenswert?

8Bit und 1Stopbit.

von Marc (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist ein Auszug aus dem Datenblatt des 90S8535.

von Marc (Gast)


Lesenswert?

Tja...ich weiss nicht mehr weiter. Das ist ja echt komisch.

von Marc (Gast)


Lesenswert?

Ich möchte nur mal wissen, ob die software Einstellungen nun stimmen
oder nicht.

UCR = 0xD8;
UBRR=0x33;
//im Datenblatt wird dieser Wert bei 8Mhz // 9600Baud angegeben

Sind die Kondensatoren Korrekt --> 100nF oder sollten die schon größer
sein?

von Marc (Gast)


Lesenswert?

Kann mir hier niemand weiter helfen?

Was könnte man noch alles abchecken?

von Christian F. (fasti)


Lesenswert?

Hi!

Hast du jetzt Pin 16 mit VCC und 15 mit Ground verbunden? Das ist die
Versorgung vom Max, wenn die nicht angeschlossen ist, dann wird das
sowieso nix. Ausserdem solltest du zwischen 16 und 15 noch einen Kondi
hängen, damit der Max beim Schalten genug Reserven hat und dir die
Versorgung nicht versaut.
Wenn du einen Max232A hast, dann reichen die 0,1uF ansonsten musst du
1uF nehmen! Siehe Datenblatt.
Mach das mal und wenn das immer noch nicht geht, dann hauts
offensichtlich mitm Timing nicht hin.

mfg

Fasti

von Eerhard (Gast)


Lesenswert?

Es koennten vielleicht 2 Urschachen haben :

1) Wie Christian aufmerkte : 1 uF statt 100 nF. Schau dir mal die seite
von Roland Walters an => www.rowalt.de. Da gibt es eine Schaltplan mit
nen ATMega8, aber mit MAX232. Selber arbeite ich mit 1 uF (BF 1210)
Kerko's und das geht supertoll !

2) Deine Taktrate.
 Bei 8 MHz gebt es einige Prozenten Fehler mit welche Baudrate man auch
arbeitet.

2400 => 0,0 %
4800 => 0,0 %
9600 => 0,0 %
14400 => 0,3 %
19200 => 0,6 %
28800 => 1,0 %
57600 => 1,4 %
115200 => 2,2 %

Es sind sehr kleine Fehlerargins, aber,.. na ja,. mit seit ich diese
Information bekommen hatte, arbeite ich nur noch mit bestimmte XTals /
Quarze wie 3.6864 oder 7,3728 MHz

Aber,. ich glaube dein Problem ist 1).

von Eerhard (Gast)


Lesenswert?

P.S. Noch meine Entschuldigungen fuer meine schlechte Deutschsprache.

von Andreas Dörr (ADoerr) (Gast)


Lesenswert?

Er verwendet den MAX232ECPE nicht den MAX232CPE. D.h. die 0,1uF sind
schon richtig.

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.