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.
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?
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?
Auch so ich meine ich empfange relativ oft das gleiche Zeichen, aber es ist nicht das Zeichen 'A'.
Ist doch schon mal gut, dass überhaupt Zeichen ankommen. Sieht so aus, als wäre es nur ein Baudraten-Problem, oder? Stephan.
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.
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.
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.
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.
Was Du wo einstellen mußt, weiß ich nicht (ich nutz den uC net). Start- & Stopbits sowie Parität stimmen auch überein?
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?
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
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.