mikrocontroller.net

Forum: Compiler & IDEs Meldungen vom Modem herausfiltern und auswerten


Autor: Sven Lübke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jungs!

Habt Ihr schonmal ein Modem (oder Siemens-Handy) mit einem AVR 
angesteuert und ein "professionelles" Programm dafür geschrieben? Ich 
habe nämlich folgendes Problem:

Ein Handy bekommt über den AVR Befehle zugesendet und ich möchte die 
Handyantworten vernünftig auswerten. Z.B. soll das Programm, wenn der 
Befehl "AT" abgesendet wurde, gucken, ob auch ein "OK" zurückgekommen 
ist. Wenn nicht, dann soll es das ganze noch x mal versuchen und dann 
z.B. "schlafen" gehen. Klappt alles einwandfrei, dann wird der nächste 
Befehl abgesendet und ausgewertet (gibt es hier einen Fehler, dann soll 
ein erneuter Versuch gestartet werden). Die UART-Sende- und 
Empfangsroutinen sollen Interrupt-gesteuert sein, wobei die Zeichen in 
einem Ringbuffer (oder circular buffer, wie auch immer) landen.
Das ganze muß totsicher funktionieren, denn das Modem kann durch Zufall 
angerufen werden (wodurch ein RING oder BEEP im Empfangsbuffer landet, 
das verschwinden muß, da es nicht verlangt war). Zusätzlich kann das 
Handy durch Zufall eine SMS bekommen (keine Ahnung,ob es dann etwas 
ausgibt) oder das Handy-Echo (ATE1) kann sich einschalten oder sonstwas. 
Außerdem kann es passieren, daß die erwartete Meldung noch gar nicht 
komplett übertragen wurde und deshalb der Vergleich fehlschlägt! Oder 
man vergleicht eine durch ein zufälliges Ereignis entstandene Meldung 
mit der erwarteten Antwort eines zuvor abgesendeten Befehls und bekommt 
dann einen Fehler. Suchen kann man im Buffer nicht nach einer "OK" 
Meldung, weil man nicht weiß, ob diese Meldung auch wirklich zu dem 
entsprechenden abgesendeten Befehl gehört. Wie lange wartet man auf die 
Antwort des Modems? Das Modem kann ja unterschiedlich lang für die 
Meldung brauchen oder eben gar nix senden (in der Atmel Application Note 
AVR306 findet man Programmcode, der den AVR für immer lahmlegt, wenn man 
ein Zeichen empfangen möchte, aber das Gegenüber gar keine Lust hat, 
weitere Zeichen zu senden). Ist es ratsam den Buffer vor jedem 
abgesendeten Befehl generell komplett zu löschen bzw. auszuwerten und 
alle nicht brauchbaren Dinge zu verwerfen?!
Selbst dann kann es zu Überschneidungen kommen (das Modem wird nach dem 
Löschen des Buffers und vor Absenden des Befehls angerufen, wodurch die 
unerwartete Meldung entsteht). Ist der Handware-Handshake eine Lösung?

RS232-Kommunikation finde ich persönlich sch**ße, weil das Gegenüber 
unaufgefordert dazwischen plappern kann, und dadurch die einfache 
Programmierung zu unsicher ist, aber Fax-Programme bekommen das ja auch 
irgendwie hin. Es muß also gehen, aber wie? Oder denke ich zu 
kompliziert? Habt Ihr schonmal etwas Ähnliches gemacht oder Ideen wie 
man so etwas sicher aufbaut? Programmcode wäre natürlich super, aber 
Ideen sind mir genauso recht. Vielen Dank für Eure Antworten...

PS: Das Programm sollte noch irgendwie in einen AT90S8515 passen, also 
zu viel Verwaltung darf es auch nicht sein!


Sven

Autor: Sven Lübke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist! Aus Versehen falsches Forum gewählt...

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.