PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SMS Empfang auf ATMEGA 16



gesamtplan
11.11.2007, 11:15
Hallo zusammen,

spiele seit ein paar Tagen daran rum mein altes ME45 mit einem Atmega16 Testboard (KreativesChaosBoard) zur Kommunikation zu bewegen und habs jetzt endlich hinbekommen. Ziel war es bei einer bestimmten SMS am Controller was auszulösen (hier: LED blinken).
Da ich nix fertiges zu diesem Thema gefunden habe will ich es meinen Nachfolgern etwas leichter machen. Deshalb gibts hier den Code zum nachlesen. Ich hoffe irgendwer kann damit was anfangen und es ist einigermaßen verständlich. Verbesserungsvorschläge nehme ich natürlich gerne an.

Grüße

Gesamtplan



'SMSUNREAD6.BAS: PDU SMS auslesen
'Empfang von Siemens ME45
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 38400

'LCD Config
Config Lcd = 40 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.0 , Rs = Portc.1
Config Lcdbus = 4
Config Lcdmode = Port
Initlcd
Cls
Cursor Off
Dim Cmgl As String * 106 'cmgl String
Dim Sms As String * 58 'reiner SMS String
Dim Led As Bit
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Config Pinb.3 = Output
Led Alias Portb.3

Smsreadroutine: 'Routine zum Einlesen des SMS strings
Print "at+cmgl=0" ; Chr(13) 'Neue SMS da?
Waitms 100

If Len(cmgl) > 105 Then 'Stringpolling
Sms = Mid(cmgl , 12 , 70) 'SMS auslesen
Cmgl = "" 'String cmgl leeren
End If

Locate 1 , 1
Lcd Sms 'Ausgabe String auf Display

If Sms = "Hier SMS Empfangsstring eintragen (PDU-Mode)"then
Led = 0
Else
Led = 1
End If
Locate 2 , 1 'Anzeige zum debuggen
Lcd "Laenge von Cmgl = " ; Len(cmgl) ; " Zeichen " ; Len(sms)


Goto Smsreadroutine


'UART Interrupt
Onrxd:
If Asc(udr) = 58 Then 'Doppelpunkt(58) abrufen wenn at+cmgl=0 neue Nachricht
Cmgl = "" 'Cmgl wieder leeren
Else
Cmgl = Cmgl + Chr(udr)
End If
Return

'Sms Aktion:


'Sms Loeschen:

gesamtplan
13.11.2007, 23:53
Dank für euer reges Interesse (immerhin schon ein paar Views). Aber kann mir vielleicht irgendwer mal einen Kommentar abgeben bezüglich einer Codeoptimierung oder eventuellen Verbesserungsvorschlägen? Oder ist dieses Thema schon so beackert, daß es für keinen außer mir eine Hürde darstellte?

Grüße

Gesamtplan

thewulf00
14.11.2007, 08:17
Ich kann mit dem Thema kaum was anfangen, da ich nichtmal weiß, wie das hardwaretechnisch aussieht. Vielleicht postest du mal nen Schaltplan und Fotos?

Stromi
14.11.2007, 18:24
Hatte beim Übersetzen eine Fehlermeldung bei der Dimensionierung der LED, ansonsten könnte man ev. das Klarlesen/schreiben der SMS noch implementieren, aber ich kenne mich mit der SMS-Geschichte auch nicht so aus, Schaltplan für Anwender wäre nicht schlecht.

HansHans
14.11.2007, 20:03
Da ich nix fertiges zu diesem Thema gefunden habe

Hallo,
ist schon eine Zeitlang her, als ich mich damit befasst habe ,
aber es gibt auch ein Beispiel in den Bascom Samples.
Hast du das gefunden ?

Außerdem habe ich ein Modem verwandt das den Textmode versteht ,
das macht die Sache etwas einfacher als der PDU mode

Grüße HH

gesamtplan
15.11.2007, 10:04
Da hab ich auch garnicht nachgeguckt. Aber noch ein kurzer Abriss zur Hardware. Obwohls da eigentlich nicht viel zu sagen gibt.

Man braucht:
- MAX232 am Atmel oder Evalboard mit Pegelwandler drauf
- ein Telefon welches AT-Befehle versteht.
- ein serielles Datenkabel (meißt ist da ein auch noch Pegelwandler integriert)
- um das Datenkabel zum laufen zu bekommen eine Spannungsversorgung
(bei meinem Nonamekabel musste man Pin 4 5V anlegen)
- Die Homepage von nobbi.com und mdetroy.de um PDU ein bisschen zu verstehen.

Dann steht dem Epfang von SMS nichts mehr im Weg.