Hallo liebe Forenmitglieder,
ich habe einen ATMega16 mit meinem Siemens S25 verbunden und möchte nun
AT Befehle an das Handy senden. Leider reagiert das Handy nicht. Meinen
Code findet Ihr im Anhang.
Noch ein paar Infos zu meiner Schaltung: Der ATMega läuft mit einem
externen 8 Mhz Quartz. (FuseBits sind korrekt gesetzt.) Allerdings bin
ich mir nicht sicher, ob er auch auf 8 Mhz läuft. Denn wenn ich den
Quartz abziehe, läuft der Chip weiter. Das Handy ist auf Datenempfang
gestellt und zeigt beim Selbstest auch an, dass es mit einem "PC"
verbunden ist.
Ich benutze keine RS232 Schnittstelle und RXD/TXD vom Handy und dem
ATMega sind vertauscht. Lediglich TX vom ATMega ist über eine Diode
gegen Masse geschaltet.
Das 2x16 Display wird mit Peter Fleurys LCD Library angesteuert. Die
wichtigen USART Routinen habe ich mir aus der USART Library kopiert und
angepasst.
Naja und nun habe ich keine Ahnung mehr, warum das Handy, nach dem AT
Befehl "ATD08003301000,\r" nicht anfängt die Nummer zu wählen. Bin mir
auch nicht sicher, ob das Format stimmt mit "\r" am Ende. Wisst Ihr was
ich falsch mache?
Gruß,
Markus
Hi,
ok, das Problem habe ich beseitigt. Der ATMega funktioniert nun NICHT
mehr ohne Quarz.
Allerdings bleibt das Problem mit dem Senden trotzdem...
Markus
Es könnte am fehlenden Pullup-Widerstand (4,7k von Pin6 auf Pin4)
liegen. Sämtliche Bauanleitungen für S25-Datenkabel enthalten diese Info
vor - bis auf diese:
http://www.heise.de/mobil/artikel/50892 (ganz unten)
War bei mir auch ein Kampf mit ähnlicher Konfiguration, ATMega8 + S25.
Die Spannung ist auch wichtig. Wenn der Mega8 direkt mit dem S25
gekoppelt ist, sollte er mit 3,3V laufen. Bei 5V steht das Teil sonst
permanent auf 'Netzsuche'. Ganz nette Falle, erstmal drauf kommen... es
hätte beinah'nen Abgang aus dem Fenster gemacht... ;-)
Hi Jan,
danke für Deine Antwort. Ich habe die PullUp Widerstände nicht mit
eingebaut. Allerdings habe ich die Spannung am Handy von RXD und TXD
gemessen und die sind beide um die 2,7 V. Und das sollte es doch auch
sein, oder?
Die Baudrate stelle ich sofort um. ;)
Danke!
Markus
Noch mal zwei Fragen zwischendurch:
1) Ist USART_Transmit("ATD08003301000,\r\n"); korrekt oder muss ich
danach noch die 13, 10 senden?
2) Muss das Handy erst auf Datenempfang geschaltet werden? Ich hab das
zwar die ganze Zeit so, aber interessieren tuts mich doch.
Markus
> 1) Ist USART_Transmit("ATD08003301000,\r\n"); korrekt oder muss ich> danach noch die 13, 10 senden?
Sieh mal in einem C-Buch nach, was "\r\n" bedeuten mögen.
Was soll das Komma nach dem Wahlstring?
1: ist OK, \r\n entspricht ja den Werten 13, 10. Das Komma brauchts
nicht... schadet aber auch nicht.
2: Am Handy muß garnix eingestellt werden. Schadet aber auch nicht...
;-)
Ich will ja nicht auf dem Pullup rumreiten, aber ich habs mir am Oszi
angeschaut und es kam auf eingegebene Kommandos erst eine Antwort
nachdem ich das verflixte Teil eingelötet hatte. An Pin 4 liegen glaub
ich 4V an und das S25 scheint da irgendwie pingelig zu sein...
Das Komma ist -als Bestandteil des Wählstrings- eine Verzögerung. Beim
Modembetrieb an TK-Anlagen wird es in der Tat zum Warten nach der
Amtstholung verwendet, da gehört es also zwischen die zur Amtsholung
verwendeten und die danach zu wählenden Nummernbestandteile:
atdt0,0123456789
Was aber für einen Sinn es haben kann, nach dem Wählen der kompletten
Rufnummer 'ne Weile zu warten, entzieht sich meinem Verständnis. Das
anrufende Modem macht in dieser Phase des Verbindungsaufbaus sowieso
nichts anderes ...
@Jan: Hab gerade im Forum ein Schaltplan gefunden für RX/TX Verschaltung
am Mikroporzessor. Hast Du das auch so gemacht?
Bei mir sind RX(ATMega) direkt mit Pin 5=TX(Handy) und TX(ATMega) mit
Pin 4 und 6 (incl. Pull Up) verbunden. TX(ATMega) geht erst auf einen
20KOhm Widerstand und dann zum Handy. Von dem Pin habe ich dann noch
eine Diode gegen Masse geschaltet. So wie auf dem Bild.
Wie hast Du das gelöst?
Markus
PS: Danke für die vielen Antworten!
Habs so ähnlich gemacht wie Du:
TX direkt mit 6 und RX direkt mit 5 verbunden - siehe Zeichnung. Dazu
müssen die Pegel aber passen. Handy und ATMega laufen bei mir mit 3,3V.
Und dann eben der Pullup von Pin 6 nach Pin 4.
Hast Du das STK500? Dann versuch doch erstmal mit dem internen
Spare-Port Daten an den PC (Hyperterminal) auszugeben. Dann lässt sich
auch eher abschätzen, obs vielleicht ein Problem mit der Baudrate ist.
Hab noch einen Fehler in Deiner Initialisierung gesehen:
Ins UBRR wird nicht die gewünschte Baudrate reingeschrieben sondern ein
Teiler mit dem die Frequenz auf die gewünschte Baudrate runtergebrochen
werden kann nach folgnder Formel:
UBRR = Fosc 16 BAUD - 1
In Deinem Fall bei einem 8 MHz Quarz also
8.000.000 16 19200 - 1 = 25
Würde die Initialisierung also so aussehen:
...
UBRRH = 0;
UBRRL = 25;
...
Schau Dir mal das Datenblatt zu dem Thema genauer an. Ist sehr
aufschlußreich... ;-)
Und nimm das USBS-Bit raus - das S25 sendet nur mit einem Stopbit
So sollte es dann passen:
UBRRH = 0;
UBRRL = 25;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(3<<UCSZ0);
Bin gespannt... ;-)
hallo
ich verusche auch gerade ein handy über einen atmega zu steuern.
Habe folgendes Problem:
Handy an PC angeschlossen => Datenübertragung funktioniert, handy wählt
µC an PC => es kommt exakt der string an (mit HTerm) der vom µµ gesendet
wurde
Handy an µC => nichts passiert???
verwende für die Uart verbindung die Lib vom Peter Fleury.
zwischen handy und µC ist ein max232.
woran kann es liegen?