Forum: Mikrocontroller und Digitale Elektronik :: Senden und Empfangen mit dem UART


von Steffen Klein (Gast)


Lesenswert?

Hallo,
wie schon einmal erläutert, versuche ich meinen AVR, einen AT90S4433, 
via SMS fernzusteuern. Die Hardware, habe ich inzwischen aufgebaut und 
sie funktioniert. Auch kann ich mkit dem ATD- Befehl einen beliebigen 
Teilnehmer anrufen.
Mein Problem besteht nun darin, dass ich die Antworten des AVR auswerten 
muss. Dieses ist mir bis dato nicht gelungen. Die Ports PD0 und PD1 des 
AVR habe ich über einen MAX232 mit dem Mobiltelefon verbunden.
Ich programmiere den AVR in BASCOM und es gelingt mir nicht. Muss die 
Schnittstelle für das Senden und Empfangen immer wieder öffnen und 
schließen, oder gibt es eine "einfachere" Methode?
Zur Zeit mache ich das mit
OPEN "comd.1:19200,8,n,1" For OutPut as #1

Sollte zufällig jemand ein Quellcode in dieser Richtung zur Verfügung 
haben, wäre es nett, wenn er ihn mir zuschicken könnte.

Mit freundlichem Gruß,
Steffen

von Sven (Gast)


Lesenswert?

Hallo Steffen,

eigentlich brauchst du die Schnittstelle nicht zu öffnen, das ist nur 
bei einem Software UART notwendig.
Zeichen Senden machst du mit Print "hallo"
Empfangen mit Inkey()
vergesse auch nicht den Buffer zu aktivieren, sonst könnten dir Zeichen 
verlohren gehen.
Das Umsetzen der SMS via AVR ist kompliziert, da z.B. die Siemens Handy 
alle nur PDU format beherschen,außer die Terminals von Siemens, die 
kosten aber richtig Geld.
Eine schöne verständliche Umsetzung der PDU findest du hier: 
http://www.dreamfabric.com/sms/
Für den Buffer: Config Serialin = Buffered, Size = 40

Eine Initialisierung des Handy's mit:

Init:


  Print "AT"
  Waitms 150
  Print "AT"
  Waitms 100
  Print "at+cpms=" ; Chr(034) ; "sm" ; Chr(034) ; "," ; Chr(034) ; "sm" 
; Chr(034)
  Waitms 100

Print "AT+CMGF=0"
Waitms 100
Flushbuf
Print "AT+CNMI=1,1,0,0,1"
Waitms 100

Damit werden der Speicher festgelegt (Sim Karte), Information über neue 
Nachrichten, und PDU Format eingestellt.

Hoffe das hilft dir vielleicht weiter.

Im Übrigen, es ist zu empfehlen, den Buffer nach jeder Decodierung 
vollständig zu Leeren, damit er beim nächsten Nachrichteneingang nicht 
überläuft, aber ich weiß jetzt den Befehl dazu nicht mehr, er ist auf 
jeden Fall nicht in der Bascom Hilfe dokumentiert.


Sven

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.