www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 funzt nicht!


Autor: Marc (Gast)
Datum:

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

Autor: Profi (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:
Angehängte Dateien:

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

Autor: Marc (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan

Autor: Stephan (Gast)
Datum:

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

Stephan.

Autor: Marc (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

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

Autor: Andreas Dörr (ADoerr) (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

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

Autor: Andreas Dörr (ADoerr) (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine Register UCR!!!

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8Bit und 1Stopbit.

Autor: Marc (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist ein Auszug aus dem Datenblatt des 90S8535.

Autor: Marc (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir hier niemand weiter helfen?

Was könnte man noch alles abchecken?

Autor: Christian Fasthuber (fasti)
Datum:

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

Autor: Eerhard (Gast)
Datum:

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

Autor: Eerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S. Noch meine Entschuldigungen fuer meine schlechte Deutschsprache.

Autor: Andreas Dörr (ADoerr) (Gast)
Datum:

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

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.