www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT Befehle zum Handy senden


Autor: Markus M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Atmel ohne Quarz weiter funktioniert dann ist
der interne Oszillator aktiv.

Und der hat ab Werk 8MHz/8 = 1MHz

Also Fuse Bits ändern.

Autor: Markus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ok, das Problem habe ich beseitigt. Der ATMega funktioniert nun NICHT 
mehr ohne Quarz.

Allerdings bleibt das Problem mit dem Senden trotzdem...

Markus

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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... ;-)

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, noch eins: das S25 läuft fest mit 19.200 nicht 9.600 wie in 
deinem Quelltext.

Autor: Markus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Markus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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

Bewertung
0 lesenswert
nicht lesenswert
> 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?

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@rufus
wäre es den vor dem Wahlstring besser aufgehoben?  ;-)

Soweit ich weiß, war das mal eine Verzögerung für Amtsholung...

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

Bewertung
0 lesenswert
nicht lesenswert
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 ...

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

Bewertung
0 lesenswert
nicht lesenswert
Bei einem Semikolon wäre das allerdings etwas anderes...
Hier wird zwischen Daten - und Voiceruf unterschieden.

Autor: Markus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den PullUp nun drin. Leider funktioniert es immernoch nicht. Was 
mache ich bloß falsch!?!

Markus

Autor: Markus M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@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!

Autor: Jan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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... ;-)

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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... ;-)

Autor: Markus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE! Es funktioniert! Super! Klasse! Danke für Deine Mühe! Oh mann....

Freu mich riesig!

Markus

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?
  uart_puts("ATD");
  for(i=0; i<=(numbers-1); i++)
  {
          itoa(num_array[i], buffer, 10);          
    uart_puts(buffer);        
  }  
  uart_putc('\r');

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

Bewertung
0 lesenswert
nicht lesenswert
> zwischen handy und µC ist ein max232.

Wozu? Verwendet das Telephon etwa RS232-Pegel?

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du auch die richtigen Leitungen miteinander verbunden?
PC->Handy: Handy DÜE
PC->µC:    µC DÜE
µC->Handy: ?

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jupp...
handy RX an µc TX
handy TX an µc RX

weiß auch nicht...

meint ihr es liegt am max232? das handy ist ein k700i

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es lag am MAX!
DANKE

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.