GSM Modem AT-Befehl

Gast #761995
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....
#762011
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.
Gast #762152
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.
Gast #762211
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
    }
}
#762226
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?
Gast #762243
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?
#762255
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.
Gast #762667
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...
Gast #763287
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
Gast #763892
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren