Forum: Mikrocontroller und Digitale Elektronik Modem-Verbindung zwischen PC und ATmega16


von Daniel Kensy (Gast)


Lesenswert?

Hallo Freunde,
ich hab folgendes Problem und weis jetzt einfach nicht weiter! Nun hoffe 
ich, dass mir jemand von euch weiterhelfen kann!

Und zwar hab ich mir ne kleine Schaltung mit dem ATmega16 gebastelt, der 
über die serielle Schnittstelle mit nem 56k Modem verbunden ist. Das hab 
ich dann an die Telefondose angeschloßen. Den Controller hab ich so 
programmiert, dass er sobald das Klingel-Signal (ASCII-Wort: "RING") 
über die serielle Schnittstelle übertragen wird, den Befehl "ATA" + <cr> 
an das Modem schickt. Das hat nämlich zur Folge, dass ein eingehender 
Anruf abgehoben wird.
Das funktioniert auch alles prima wenn ich über das Hyperterminal meines 
PCs die Telefonnummer anrufe, an der der Controller angeschloßen ist. 
Die Modems syncronisieren sich und dannach steht die Verbindung.

So weit so gut!

Jetzt hab ich mich aber entschloßen für meinen PC ein Einwahlprogramm 
mit Visual Basic 6.0 zu schreiben, dass sich auch mit dem Controller 
verbinden kann. Dafür schicke ich über die serielle Schnittstelle 
folgenden Befehl: "ATD xxxxx" + <cr>. Der Controller erkennt auch das 
jemand anruft und die beiden Modems versuchen sich zu syncronisieren 
(machen lustige Geräusche :-) ).
Bevor sie aber in den Daten-Modus wechseln, trennt das Modem meines 
Controllers sie Verbindung und mein Terminal-Programm empfängt "No 
Carrier"!
Ich denke das liegt bestimmt daran, dass ich im Gegensatz zu dem 
Hyper-Terminal dem Modem bestimmte Initialisierungs-Befehle nicht 
gesendet habe. Kann mir bei dem Problem nicht jemand helfen??

Einstellungen:

uC --> Modem :
Baud,weitere Einst.: 19200 ,N ,8 , 1

PC --> Modem :
Baud,weitere Einst.: 19200 ,N ,8 , 1


von Michael (Gast)


Lesenswert?

Hast Du vielleicht die Möglichkeit den Datenstrom von PC->Modem 
abzuhören; da würde man sehen was Hyperterm macht.

von Daniel Kensy (Gast)


Lesenswert?

Hi Michael,
vielen Dank für deine Antwort!
Genau das hab ich gerade gemacht! Und zwar indem ich die Modem-Protokol 
Datei analysiert hab!
Da war dann folgender Initialisierungs-Befehl drin:
AT &F E1 V1 &A3 &D2 &C1 S0=0

Diesen hab ich in mein kleines Terminal-Programm eingebunden und seit 
her kommt ne Verbindung zu stande! Hurra!

Dumm ist jetzt nur noch, dass mein Controller die Dateien die ich im 
schicke richtig versteht aber wenn ich mir was von ihm schicken lasse, 
sind das nur willkürliche Zeichen. Ich gehe mal schwer davon aus, dass 
irgend eine Baudrate nicht richtig eingestellt ist.
Aber warum versteht dann mein Controller, dass was ich schicke??

Was leider auch nicht funktioniert ist, dass ich mit "+++" wieder in den 
Befehlsmodus zurück komme!

Gruß

Daniel

von Daniel Kensy (Gast)


Lesenswert?

kleine Ergänzung:
habe auch noch folgenden Initialisierungs-Befehl eingefügt:

ATS7=60S19=0L1M1\N3%C0&H1N1X4

Was der macht weis ich nicht, aber jetzt funktionierts :-))

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.