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....
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.
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.
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..
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
}
}
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?
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?
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.
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.
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...
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
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?