Hallo
Ich würde gern einen ankommenden Anruf am Handy erkennen und darauf
reagieren.
1.) Handy und ATmega16 sind seriell miteinander verbunden und das
Programm wartet auf ein "R" ("R", weil das Handy RING RING ...) an
Hyperterminal sendet. Leider kommt am AVR kein "R" an.
2.) Ich wurde gern aus dem Programm eine Nummer an das Handy schicken,
damit es wählt. Also schicke ich per USART atd0721xxxxxx. Eigentlich
sollte das Handy nun wählen - aber nichts geschieht.
Weiß vielleicht jemand, wie man es richtig machen könnte?
Oder kennt jemand ein Forum, in dem solche Dinge eher behandelt werden?
mfg
Egon
Gast
#1123219
schau erst einmal was bei htherm ankommt, dann kannst auch darauf reagieren (das ist nämlich nicht immer ring). hab sowas auch schon gemacht.
Gast
#1123222
achso, besser ist es auf das eintreffen des "ring" zu warten und dann über ein at kommando noch die anrufnummer auszulesen+telefonat beenden, dann weisst wer angerufen hat (ob du es warst oder jemand anderes)
Gast
#1123225
sry für mass posting, aber hab grad mal in mein source geschaut, ich warte auf "+CRING: VOICE" und nicht auf ring. wie gesagt einfach mal mit hterm "reinhören"
gast wrote: > schau erst einmal was bei htherm ankommt, dann kannst auch darauf > reagieren (das ist nämlich nicht immer ring). hab sowas auch schon > gemacht. Eigenartigerweise kriege ich mit hterm keine Verbindung (ging früher besser als Hyperterminal) Hyperterminal hingegen funktioniert mit dem Handy und mit dem AVR (leider nacheinander, nicht parallel). Was Du in Deiner nächsten Mail schreibst, die Telefonnummer auszulesen, muß ich noch etwas aufschieben. Ich kann zunächst nur einzelne Zeichen lesen, Strings kann ich noch nicht. Gruß Egon
Gast
#1123338
Hallo Egon, 1. hast du ein CR+LF oder in C: "\n\r" an das "atd" gehängt? Das Modem erwartet das als Abschluss von jedem AT-Befehl! Hyperterminal sendet das automatisch mit, wenn du nach dem Befehl "Enter" drückst. 2. Wie ist das Modem eingestellt? GSM- Modems senden in ihrer Default- Einstellung jedes zeichen über die UART zurück(Echo). Wenn der AVR also auf das Echo wartet, kann man sicher sein, dass das Zeichen korrekt vom Modem angenommen wurde. Mein Tipp: Während der AVR an das Modem/Handy angeschlossen ist, einfach ein Serielles Kabel an TX des Modems hängen, und mit Hyperterminal gucken, was das Modem ausgibt, während der AVR seine AT-Befehle sendet. Da sollte alles rauskommen, was der AVR reinschickt ( und natürlich ein "OK" als Bestätigung). Grüße, Johannes
Gast
#1123342
bei hterm hast siehst aber alle zeichen. also versuch das mal hinzukriegen, halt 9600baud, 8N1 glaub ich war da immer die einstellung für handies das empfangen ganzer zeichenketten machst mit dem uart-empfangs-interrupt. du hast eine globale variable (hier volatile char string[maxstrlen+1]) in der du alles zwischenspeicherst. ist eine maximale anzahl von zeichen eingegangen oder ein /n bzw /r (also ein enter), dann schliest du den string ab und signalisierst der hauptroutine, dass die zeichenkette zur verarbeitung bereit steht. ist diese dann verarbeitet, kann str_complete und str_count wieder zurückgesetzt werden.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Gast
#1123354
sry, das ist noch die fehlerhafte isr gewesen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Gast
#1123375
Ich hab die Erfahrung gemacht, dass es mit 19200 Baud besser funktioniert. Ähnlich wie Egon hab ich aber das Problem, dass ich keine Zeichen auf der Rx Leitung des µC empfange. Wie hier schon am Ende beschrieben: Beitrag "welche Signale liefert ein Handy an TX" Bei mir wird bei einem Anruf nicht mal das RI Flag gesetzt..
Gast
#1123383
.. ein weiterer Stolperstein fällt mir gerade noch ein: Wenn am Modem
Autobaud aktiviert ist, funktioniert die Kommunikation oft nicht so
richtig.
Das sollte man also erstmal über Hypertermial deaktivieren:
("AT+IPR=9600") und anschließend die Einstellung speichern ("AT&W").
Wobei ich nicht genau weiß, ob das bei Handys auch genau so
funktioniert, oder ob die AT-Befehle hier anders sind.
Gruß,
Johannes
PS: der String zum wählen, den der AVR an das Modem/Handy sendet sollte
so aussehen:
"atd0721xxxxxx\n\r"
Gast
#1123385
Bei nobbi.com hab ich zum Umschalten der Baudrate nur folgendes gefunden: AT^SBFB Schnittstellengeschwindigkeit umschalten AT^SBFB=a kann offenbar zwischen 19200 (a := 0) und 57600 (a := 1) umschalten. Bisher ungetestet.
Gast
#1123415
Also AT^XXX ist ein Herstellerspezifischer Befehl (^,#, o.ä. als Separator zwischen AT und Befehl ist immer Herstellerspezifisch) ... da hilft nur nachlesen im AT-Command-Set des jeweiligen Herstellers...
Gast
#1123438
Gut zu wissen. Hat jemand eine Bezugsquelle zum AT Command Set für das Siemens S55? Ich konnte bisher nur jenes für das Siemens L55 bzw Siemens C35i/M35i/S35i finden. Oder unterscheiden sich die AT Commands innerhalb der Modellreihen eh nicht so stark? Ich kann mir kaum vorstellen, dass der Hersteller das freiwillig rausrückt?
Gast
#1123513
Also bei den Modems (z.B. MC35i) müssen sie es ja rausrücken... sonst
kann keine Mensch was damit anfangen...
Erfahrungsgemäß macht mant, wenn man für ein "unbekanntes" Modem eines
Herstellers, die AT-Commands nimmt, die im AT-Command Set für ein
anderes Modem des gleichen Herstellers stehen, nicht so viel falsch.
Die Befehle zum wählen ("ATD ..."), SMS - versand ("AT+CMGW=..":),
aktuelle Konfiguration speicher ("AT&W"), Feldstärke abfragen
("AT+CSQ"), anzeige des aktuellen Providers ("AT+COPS?") u.v.m. sind
aber in allen mir bekannten Modems gleich. (Dafür gibts einen Standard)
Herstellerspezifische Commandos sind i.d.R. das Herunterfahren (bei
Siemens "AT^SMSO") oder das versetzten in den Standby. In den meisten
Fällen braucht man die nicht unbedingt.
Hier gibts ein Paar Herstellerspezifische(?) Commandos für Siemens-
Handys:
http://www.nobbi.com/atsiem.htm
Am besten einfach mal mit Hyperterminal ausprobieren, auf welche Befehle
es reagiert.
Mit "AT+IPR?" fragst du übrigens ab, welche Baudraten unterstützt
werden. Bei meinem Sony Erricson kommt da "0" zurück, was wohl heißt,
dass nur Autobaud unterstützt wird - ich kann es auch nicht auf eine
andere Baudrate einstellen ("AT+IPR=9600" z.B. liefert "ERROR").
viel Erfolg,
Johannes
Gast
#1123574
"Ähnlich wie Egon hab ich aber das Problem, dass ich keine Zeichen auf der Rx Leitung des µC empfange." Aber Tx klappt? Ich hatte einmal das Problem, dass ich 2 max dazwischen hatte (einem der am µC hängt und einer im Datenkabel) und somit Rx und Tx tauschen musste.
Gast
#1123600
Tx funktioniert. Hab keinen MAX232 dazwischen. Das Datenkabel wurde selbstgebaut und besteht im Prinzip nur aus GND,Tx und Rx. Rx und Tx hab ich ausgekreuzt an den µC angeschlossen. @Johannes: Danke für die Info!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.