www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GSM Modem AT-Befehl


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr!
Hat jemand Ahnung vom MC35i Terminal von Siemens.
Die Kommuniktation zwischen Hyperterminal und Modem klappt.
Jedoch wenn ich das Modem über mein µC ansprechen will, klappt es nicht, 
auf jeden Fall bekomme ich keine Antwort vom Modem.
Ich bin mir nicht ganz Sicher was alles rüber geschickt werden muss.

erst der AT-Befehl at , dann 0x0D (Enter) , muss das String-Ende-Zeichen 
dazwischen mit rüber oder gelöscht werden?
Hat jemand vielleicht eine deutsche Siemens Anleitung für das MC35i mit 
AT-Befehlen?

Danke....

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:
> Hallo ihr!
> Hat jemand Ahnung vom MC35i Terminal von Siemens.
> Die Kommuniktation zwischen Hyperterminal und Modem klappt.
> Jedoch wenn ich das Modem über mein µC ansprechen will, klappt es nicht,
> auf jeden Fall bekomme ich keine Antwort vom Modem.

Hast du einen Pegelwandler am Start? Auch kann man hier Softwaremässig 
viel falsch machen...

> Ich bin mir nicht ganz Sicher was alles rüber geschickt werden muss.
>
> erst der AT-Befehl at , dann 0x0D (Enter) , muss das String-Ende-Zeichen
> dazwischen mit rüber oder gelöscht werden?

Probiers mal mit "0x0a" oder beides nacheinander 0x0d, 0x0a.

Ich nehme an, mit "String-Ende-Zeichen" meinst du die 0-Terminierung.
Nein, dieses Zeichen muss nicht gesendet werden. Allerdings verstehe ich 
nicht, was du jetzt mit "löschen" meinst.

> Hat jemand vielleicht eine deutsche Siemens Anleitung für das MC35i mit
> AT-Befehlen?

Google: "MC35i AT" Da gibts ne Referenz. Allerdings auf Englisch.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weis nicht mehr weiter.
Kommunikation zwischen Hyperterminal und Modem klappt
Kummunikation zwischen µC und Hyperterminal klappt ebenfalls
nur bei der Kommunikation zwischen Modem und µC bekomme ich keine 
Antwort vom Modem.
Habe alle möglichen Kombinationen durchgespielt mit 0x0D, mit 0x0D und 
0x0A, ohne beiden aber einfach keine Reaktion...

Englische Doku hab ich.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schliess doch erstmal den uc an den PC an, starte Hyperterminal und 
schau, ob der uc überhaupt sendet.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das funktioniert ja, kann ja auch antworten über Hyperterminal.
gesendet werden muss also, "at0x0D" und at ohne 0 Terminierung

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sorry, hab eine Zeile von dir überlesen :(...

Hast du auch nur "0x0a" probiert?
Also eines von beiden (0x0a,0x0d) braucht das Modem auf jeden Fall!

Jedenfalls glaube ich, daß man ohne Quelltexte dir so nicht weiter zu 
helfen ist..

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ermmm moment...
Wenn wir von GCC sprechen, müsste dein String "ATZ\x0A" oder "ATZ\x0D" 
heissen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was heißt GCC?
was bedeute Z\  ?

So sind mein String aus:
unsigned char string[8]= "AT";

und über die Interrupt Routine sende ich ihn weg:
ISR(USART_UDRE_vect)
{
unsigned char buffer;                //Varibale für einzelne 
Stringzeichen
buffer = *(glob_USART_string++);
//Stringzeichen in buffer, danach Adresse erhöhen
  if (buffer !='\0')            //solange kein String-Ende weiter 
auslesen
    {
    UDR=buffer;
                   //Zeichen (8Bit) ins UDR Register zum versenden
    }
  else
    {
    buffer=0x0D;
    UDR=buffer;
    glob_USART_gesendet=0;
                  //fals String-Ende, senden wieder zulassen
    UCSRB= UCSRB &~(1<<UDRIE);
            //Interrupt sperren für UDR Register ist fertig
    }
}

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas wrote:
> was heißt GCC?

Ich nehme an, du arbeitest mit WINAVR, oder? WinAVR ist eine sog. 
Toolchain; eine Sammlung bzw eine "Verkettung" berschiedener Programme.
GCC heist der Kompiler, der im dieser Toolchain WinAVR enthalten ist.

> was bedeute Z\  ?

"ATZ" ist das Hayes-Kommando, um dein Modem in einen definierten Zustand 
zurück zu holen. Es wird häufig, aber nicht immer, mit einem "OK" vom 
Modem quittiert.

"\x0d" ist eine Schreibweise, um das Steuerzeichen 0x0d gleich in den 
String mit einzupacken. Wenn ich also schreibe

unsigned char string[]="ATZ\x0d";

dann enthält "string" insgesamt 5 Zeichen: A,T,Z,das Steuerzeichen 0x0d, 
und die 0-Terminierung.

> ISR(USART_UDRE_vect)
> {
[...]
> }

Dein Quelltext scheint hier ok zu sein.
Du wartest im Hauptprogrammteil vermutlich darauf, daß 
"glob_USART_gesendet" auf 0 gesetzt wird. Hierbei gibts einen Fehler, 
den man sehr häufig macht.

Wie ist "glob_USART_gesendet" denn bitte definiert?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal, bist ne super Hilfe!
An meinen Code kann es eigentlich nciht liegen, ich stecke ab und zu mal 
wieder den Hyperterminal an im zu sehen was der µC macht, und der 
schickt fein den String und wenn ich dann Antworte (über Hyperterminal) 
sehe ich das auch im Programm
"glob_USART_gesendet" ist nur ne vari damit der während ich auf die ISR 
warte kein misst macht, und den String zweimal versendet.
Hattest du schonmal das MC35i in Verwendung?

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte beantworte mal meine Frage: wie ist "glob_USART_gesendet" 
definiert?

Das Problem ist nämlich, wenn diese variable nicht "volatile" definiert 
ist, wartet ein "while (glob_USART_gesendet!=0) ;" im Hauptprogramm 
endlos.....

Jedenfalls habe ich speziell mit einem MC35i noch nicht gearbeitet, kann 
mir aber nicht vorstellen, daß es sich wesentlich anders verhält, wie 
irgend ein anderes Modem.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne leider nicht, habe alle globalen Variablen auf Volatile.

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ist die Flusskontrolle/Hardwarehandshake an oder aus? (RTS CTS)

Gruß
Axelr.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flusskontrolle wäre auch mein nächster Gedanke. Kein CTS/RTS, kein 
XON/XOFF.

Ausserdem versuchsweise mal die Pins RXD/TXD vertauschen.

Autor: Frank K. (frank)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich nutze die angehängte "Schaltung" (3 Stecker, 2 Dioden 1N4148) zum 
Mittracen von RS232 Verbindungen. Funktioniert prima, am PC kannst Du 
mit Hyperterminal o.ä. die gesendeten Daten anschauen. Vielleicht hilft 
Dir das weiter.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank K. wrote:
> Funktioniert prima,

staun

Das sind Tipps wofür ich dieses Forum liebe :)
Danke, ich denke, sowas kann man immer gut gebrauchen.

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nehm immer portmon von sysinternals

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit kannst Du aber nicht die Kommunikation zwischen zwei Geräten 
mithören - hier redet ein µC mit einem Modem.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas:
Problem behoben oder keine Böcke mehr?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klappt immernoch nicht. Muss mir mal die Schaltung zum Mittracen 
aufbauen, brauch aber erst Bauteile. Habe nochmal eine Frage zum 
Nullmodemkabel reingestellt. Vielleicht kannst du mir die beantworten.
Danke...

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

ich habe soetwas einmal mit einem C35 gemacht. Das müßte vom Code das 
selbe sein. Ist aber asm. Wenn Du willst kann ich es Dir als Vorlage 
geben.
Ansonsten achte auf 19200 Baut, das Siemens nimmt das sehr genau. Als 
Pegelwandler habe ich nur je 1x 100ohm in die RX/TX und am RX vom C35 
eine 3,3V Z-Diode nach Masse verwendet.

Gruß Willi

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, lag erstmal daran das RX und TX auf dem Eintwicklungsboard 
getauscht sind. Bekomme jetzt antwort vom Modem.
Sehr komisch ist nur, dass wenn ich das Echo nicht ausschalte nur at 
zurückbekomme und wenn echo aus ist, nur die numerische Antworten 0 (ok) 
4 (error). Ohne atv0 (numerische Antwort) sehe ich noch nicht mal das 
okay. Er kann mir komischer Weise kein Text anzeigen, wie es der 
Hyperterminal macht.
Bekomme bei at+cgmi als Anwort: <cr> <lf> <cr> , bloß meine Anwort als 
Text fehlt dazwischen. Bei anderen Befehlen das selbe.

Jemand ne Idee?

Autor: Axel R. (axelr) Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das geht prima mit portmon, besser, als Kabel löten:)
im Anhang ein Screenshot

Das RX-TX vertauscht sind, passiert wohl allen.

Autor: Axel R. (axelr) Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier als hex-Ausgabe

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.