Forum: Mikrocontroller und Digitale Elektronik Hilfe: RS232 Problem


von Newbie (Gast)


Lesenswert?

Hallo,

ich habe mit einer RS232 Schaltung Probleme (Atmega) . Auf dem 
Steckbrett funktioniert alles wunderbar, nur mit der geätzten Platine 
bekomme ich keine Ausgabe.

Schaltung: Atmega16 mit Max233 und der uart lib von Peter Fleury.

Wie kann man überprüfen, ob der Max233 auch funktioniert ?

Ich messe verschiedene Spannungen an den jeweiligen Pins, allerdings 
habe ich kein Oszi und kann daher kein Protokoll debuggen.

Physikalische Verbindungen habe ich soweit möglich überprüft. Max233 
auch mal gegen AD203 ausgetauscht, ohne Erfolg.
Beschaltung gemäß Datenblatt.

Die Funktion des Micro kan ich mit LEDs testen, wie gesagt, auf dem 
Steckbrett funktioniert es wunderbar.

Kann es am 16Mhz Quarz liegen ? Ist ja auch kein Baudratenquarz, aber 
auf dem Steckbrett gehts.

Wen ich die Pins 2+3 des seriellen Anschusses verbinde, kommt das Echo 
wieder im PC an. Verbindung zum PC ist also ok.

Baudrate ist 9600.

Irgendeine Idee zum Debuggen ?

von Exodus155 (Gast)


Lesenswert?

poste mal deine platine hier rein?

Mike

von Newbie (Gast)


Angehängte Dateien:

Lesenswert?

Ein Bild sagt mehr, als tausend Worte ...

von Karl heinz B. (kbucheg)


Lesenswert?

> Wen ich die Pins 2+3 des seriellen Anschusses verbinde

Wo verbindest du die:
Am RS232 Stecker am PC
Am RS232 Stecker am µC
An den Eingängen zum MAX232
Auf den Ausgängen des MAX232
An den Eingängen zum Mega16

Um die physikalische Verbindung komplett zu testen,
nimmst du den Mega16 aus dem Sockel und verbindest drekt
an diesem Sockel mal Tx mit RX. Kommt das Echo immer noch?

von Newbie (Gast)


Angehängte Dateien:

Lesenswert?

und nun das Board ...

von Newbie (Gast)


Lesenswert?

@Karl heinz Buchegger:

Am RS232 Stecker am µC

Ich werde dann mal am Sockel testen.

von Michael S. (mst)


Lesenswert?

ähm, vielleicht war das Bier zu Mittag zu viel, aber wo bitte sind die 
Charge-Pump-C's des Max233?!?

Gruß Micha,

von Newbie (Gast)


Lesenswert?

Der  233 braucht keine ...

von Michael S. (mst)


Lesenswert?

...ok, wieder was gelernt... :-) hab ich auch grad im Datenblatt 
gesehen!

von Mario Schrenk (Gast)


Lesenswert?

Ob es das Problem löst weiß ich auch nicht, aber die rechte 
Befestigungsbohrung des RS-232 Steckerst durchtrennt eine GND-Leitung!

von Pöhli (Gast)


Lesenswert?

ob die 16mhz ok sind müßtest du nach Formel Datenblatt Seite 166 mal 
rechnen, sollte nicht über 0,2% Errorlevel liegen.

du solltest bei zügigem Datensenden auch mit dem Multimeter einen Wert 
verschieden 0V messen auf der TXD (TTL) Strecke.

Davon abgesehen, falls du selber fertigst würde ich die Leiterbahnen 
etwas großzügiger wählen und Masseflächen reinnehmen.

...nehm den 233 und den mega16 auch ....


von johnny.m (Gast)


Lesenswert?

Nö, da ist ein Pad drunter.

von johnny.m (Gast)


Lesenswert?

Das "Nö" bezog sich auf Marios Posting von 14:19...

von Karl heinz B. (kbucheg)


Lesenswert?

Du hast einen female-RS232 verbaut.
Ist dann da nicht Pin 2 und Pin 3 falsch
rum angeschlossen. OK. Ist kein Problem
wenn dein Kabel richtig rum gekreuzt ist.

von Newbie (Gast)


Lesenswert?

Laut Datenblatt sind es bei 16 Mhz und 9600 Baud 0,2% Fehlerrate. Das 
sieht doch ok aus. (Auf dem Steckbrett funktionierts ja auch)

von Pöhli (Gast)


Lesenswert?

ach ja, die letzte Tabelle hatt ich übersehen.
Hm.

Obiges Posting...hm. Sollte man nicht TXD und RXD kreuzen ? Weil 
Empfänger des einen Sender des anderen.

von Pöhli (Gast)


Lesenswert?

Ach so, hast ja Femal Buchse, da hast du die Kreuzung ja dann im Kabel

von Karl heinz B. (kbucheg)


Lesenswert?

Was hat denn jetzt das Verbinden direkt am Mega16
erbracht? Hast du ein Echo?

von Newbie (Gast)


Lesenswert?

Kann ich leider erst heute abend prüfen ... Ich gebe dann Bescheid.

Vielen Dank auf jeden Fall für die Tipps !!!

Female Buchse, gekreutztes Kabel ? Ähem, da muss ich wohl auch noch 
einmal nachschauen ..

von Karl heinz B. (kbucheg)


Lesenswert?

> Female Buchse, gekreutztes Kabel ? Ähem, da muss ich wohl auch noch
> einmal nachschauen ..

Da kommst du sofort drauf, wenn du am µC-Sockel die
Brücke jumperst. Wenns nicht geht, ist entweder der
MAX233 hinüber oder das Kabel muss gekreuzt (oder
nicht gekreuzt) werden. Bin jetzt zu faul um
darüber nachzudenken was es denn sein muss.
Im Zweifelsfall nimmst du ein Voltmeter und misst
die Spannungen nach:
  Kabel vom µC abziehen.
  An einem Pin von der µC Buchse (entweder 2 oder 3) liegt
  -9 Volt (oder -10, egal) an.
  Am entsprechenden Pin vom Kabel wirst du ca. 0V messen.
  Und vice versa: Am anderen Pin am Kabel lieget negative
  Spannung, der entsprechende Pin an der µC ist wieder ca. 0

  Kommt beim Einstecken negativ zu negativ, dann musst du
  das Kabel noch mal (aus-)kreuzen.

Persönlich würde ich es allerdings nicht so umständlich machen:
Kabel aufmachen. Pin 2 und 3 kreuzen. Probieren.

von Pöhli (Gast)


Lesenswert?

Die Aussage das die Kreuzung im Kabel ist war auch nicht so ganz richtig 
von mir, denn es ist ja ein 1:1 Kabel (Modemkabel) was du benutzt. Die 
"Kreuzung" kommt gewissermaßen durch die unterschiedliche Pinbelegung 
zustande.

Im Endeffekt mach ichs aber auch wie kbucheg :-). Einfach tauschen und 
probieren.

von Stefan (Gast)


Lesenswert?

Normalerweise kreuzt man RX/TX zwischen dem MAX232 (MAX233) und dem 
Lötanschluss der RS232-Buchse.

Dann kommt TX vom PC (Pin 3 der RS232 Buchse oder des RS232 Steckers) 
auf RxIN des MAX... kommt und RX vom PC entsprechend auf TxOUT.

Und dann kann man ein normales 1:1 verbundenes Kabel mit Stecker (µC 
Seite) und Buchse (PC Seite) benutzen. Normales Kabel, weil man es prima 
zun Verbinden von PC und Modem oder anderen RS232 Geräten etc. benutzen 
kann. Baut man alle seine Geräte mit RS232-Buchse auf kann man alle 
Verbindungen zum PC mit so einem 1:1 Kabel machen. Hat man zwei Kabel 
kann man auch super eine Verlängerung bauen.

Wenn man vermutet, dass man trotz aller Vorsicht ein sog. Nullmodemkabel 
erwischt hat, stöpselt man das Kabel an den PC und misst die Spannung 
zwischen Pin 3 und Pin 5 (GND). Wenn da eine neg. Spannung -3 V bis -15 
V vorhanden sind, ist alles gut, dann ist es ein normales 1:1 Kabel und 
kein Nullmodemkabel.

Liegt die neg. Spannung zwischen Pin 2 und GND, ist es ein 
Nullmodemkabel. Kennzeichnen und ins Regal legen für den Fall, dass man 
mal zwei PCs miteinander verbinden will, bei denen man ja schlecht im 
Gerät die Leitung zwischen RS232-Anschluss und RS232-IC kreuzen kann.

von Newbie (Gast)


Lesenswert?

So, jetzt habe ich die Schaltung vor mir.

Das Brücken der Pins 4+5 des RS233 im Sockel bringt ein prima Echo auf 
dem PC. Alles sauber.

Zwischen Pin 2 und 5 des Verbindungskabels liegen -10V an. Also ist es 
ein 1:1 kabel. Auch ok.

Ich habe mal in einer Endlosschleife ein String ausgegeben.

Am Prozessor (TXD, Pin15) sowie im Sockel des 233 an Pin2 (TXD) messe 
ich mit dem Multimeter 2,2V.

Das ist etwas wenig, oder ist das bedingt durch die 9600 baud ?

von Stefan (Gast)


Lesenswert?

"Zwischen Pin 2 und 5 des Verbindungskabels liegen -10V an. Also ist es
ein 1:1 kabel. Auch ok."

Nein. Wenn du es so getestet hast, wie ich vorgeschlagen habe, ist es 
ein Kabel mit gekreuzten Leitungen. Da dein Schaltbild keine gekreuzten 
Leitungen hat, passt es aber wieder.

Hast du schon Vcc vom µC kontrolliert? Durch eine schlechte GND 
Verbindung oder andere grosse Verbraucher kann der zuwenig Saft 
reinbekommen. Dann geht natürlich auch wenig raus...

von Newbie (Gast)


Lesenswert?

Spannung am Controller ist 4,97, dito am max233. Eingangsspannung kommt 
über Schaltnetzteil mit 8V zum 7805 (kein Batteriebetrieb).

von Sonic (Gast)


Lesenswert?

Setze den TX-Pin vom µC testweise auf high und auf low (sekundentakt 
oder so), NICHT im USART-Modus! Dann kannst du am Ausgang des MAX233 
(SUB-D-Buchse) anmessen ob auch das Richtige 'rauskommt! Desweiteren am 
RS232-Kabel Pin 2 und 3 gegen 5 messen, da wo keine Spannung ist muss 
die TX-Leitung vom µC hin! Dort wo -8V oder +8V sind ist die TX-Leitung 
vom PC zum µC.

von Sonic (Gast)


Lesenswert?

Ach ja - der MAX muss die Eingangs- und Ausgangssignale invertieren, 
sonst wird's nix!

von Newbie (Gast)


Lesenswert?

Es klappt !!!!

Pin2 und Pin3 waren nicht gekreuzt. Das wars.

Ich danke allen, die mir bei der Lösung geholfen haben !!!

VIELEN DANK !!!

von Newbie (Gast)


Lesenswert?

Sorry, dass ich euch schon wieder nerve ...

Jetzt klappt das mit I2C nicht so richtig.

Pull-Ups liegen an, ich messe 4k7 bei beiden Pins am IC gegen Vcc.

Ich messe auf allen Pins P0-P7 des PFC8574A nach dem Init eine Spannung 
von 5V, auch wenn ich in einer leeren While-Schleife bin.

Init mit:
*****
void i2c_init(void)
{
  /* initialize TWI clock: 100 kHz clock, TWPS = 0 => prescaler = 1 */
  TWSR = 0;
  TWBR = ((F_CPU/SCL_CLOCK)-16)/2; // ist >10, SCL_CLOCK = 100000L
}/* i2c_init */
*****

SDA liegt auf 5V, SCL auf 0,16V. Ist das nicht verkehrt herum ?




von Problemlöser (Gast)


Lesenswert?

Hat jemand eine Idee ?

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.