Forum: Mikrocontroller und Digitale Elektronik Fehler bei serieller Übertragung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian (Gast)


Lesenswert?

Hallo zusammen,

ich versuche gerade ein Handy seriell mit AT-Befehlen zu füttern. Es
soll einfach nur ne Nummer wählen (ATD08150815;). Meistens tut das Ding
überhaupt nichts und (höchst selten) wählt es dann ne falsche Nummer
wie (0888150815). Baudrate von 19200 stimmt und laut Datenblatt müßte
es auch nur eine Abweichung um 0,2% geben, was unproblematisch sein
soll. Außerdem schaltet sich das Handy immer wieder selber ab. Wo kann
hier der Fehler liegen ? Ich bin ratlos :-(

von Frankl (Gast)


Lesenswert?

Schon mal hier gesucht ?

von Christian (Gast)


Lesenswert?

Ich hab schon Stunden damit verbracht ! Aber ich wüßte nicht wo da ein
Hinweis auf die Lösung meines Problems stünde !

von Semme (Gast)


Lesenswert?

Welches Handy steuerst den du wie an (Hardware)?

von Christian (Gast)


Lesenswert?

Ein Siemens C35i. Ich verbinde RX --|1k|-- TX und TX --|1k|-- RX und
dann noch zwei Z-Dioden mit 2,7V. Und natürlich GND. Die Schaltung hab
ich hier im Forum gefunden.

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

hier ist die schaltung...

von Dirk Wiebel (Gast)


Lesenswert?

Hallo Christian,

vielleicht voellig falsch, aber: bist Du sicher, dass die AT-Befehle
korrekt sind und dass sie auch richtig interpretiert werden? Vorher
initialisiert? Freizeichenprobleme (probier mal ATX3DT)?

Gruss,
Dirk

von Stefan Peter (Gast)


Lesenswert?

Hallo!

Geht der Schaltplan von Christian auch mit dem SL45i? Funzen da auch
die AT befehle?

Danke

von Semme (Gast)


Lesenswert?

Also an der oben angegebnen Schaltung kann es nicht liegen, denn die
funktioniert bei mir einwandfei.
Ich hoffe, du sendest nach jedem Befehl hexadezimal A und D, sonst kann
es nicht hinhauen.

von Christian (Gast)


Lesenswert?

Ich schicke das hier raus: (ATD08150815081;) --> Line Feed --> Carriage
Return

ldi serbyte, 'A'
rcall serout
ldi serbyte, 'T'
rcall serout
ldi serbyte, 'D'
rcall serout
ldi serbyte, '0'
rcall serout
ldi serbyte, '8'
rcall serout
ldi serbyte, '1'
rcall serout
ldi serbyte, '5'
rcall serout
ldi serbyte, '0'
rcall serout
ldi serbyte, '8'
rcall serout
ldi serbyte, '1'
rcall serout
ldi serbyte, '5'
rcall serout
ldi serbyte, '0'
rcall serout
ldi serbyte, '8'
rcall serout
ldi serbyte, '1'
rcall serout
ldi serbyte, 59
rcall serout
ldi serbyte, 10
rjmp serout
ldi serbyte, 13
rjmp serout

Wie kann ich denn überprüfen ob das Handy überhaupt antwortet. Z.B.
wenn ich AT rausschicke, müsste ja AT wieder ankommen. Aber wie soll
ich das auswerten mit nem AVR? Ich hab ja kein LCD und keine Verbindung
zum PC.

von Semme (Gast)


Lesenswert?

Bei mir funktioniert es auf diese Art und Weise einwandfrei!

Allerdings lasse ich folgendes weg:
"ldi serbyte, 59"
"rcall serout"

Was bringt "59" eigentlich?

von Christian (Gast)


Lesenswert?

59(dec) ist dieses Zeichen --> ;
Hast recht, brauche ich eigentlich nicht. Bedeutet nur das eine
Sprachverbindung aufgebaut werden soll.

von Andreas Jäger (Gast)


Lesenswert?

Zitat

Wie kann ich denn überprüfen ob das Handy überhaupt antwortet. Z.B.
wenn ich AT rausschicke, müsste ja AT wieder ankommen. Aber wie soll
ich das auswerten mit nem AVR? Ich hab ja kein LCD und keine
Verbindung
zum PC.

/Zitat

Wenn Du "AT" sendest müsste eigentlich "OK" zurückkommen!?!

Den korrekten Empfang kannst Du doch über eine LED signalisieren.

MfG
Andreas Jäger

von Semme (Gast)


Lesenswert?

Hallo Christian,

funktioniert deine Handy - Ansteuerung jetzt eigentlich?
Wenn ja, wo lag den der Fehler?

Gruß,
Semme

von Meiserl (Gast)


Lesenswert?

Wenn es noch nicht funktioniert könntest du zwischen jeden Zeichen eine
kleine Wartezeit verstreichen lassen.
Das habe ich z.b. schon mal mit einer Kopplung µC <---> SPS gehabt.

von Sven (Gast)


Lesenswert?

Dumme Frage: Warum werden die letzten beiden Zeichen mit "rjmp serout"
gesendet?

ldi serbyte, 59
rcall serout
ldi serbyte, 10
rjmp serout
ldi serbyte, 13
rjmp serout

Müßte das nicht auch "rcall" sein? Wohin wird sonst zurückgesprungen?
Oder ist es nur ein Dreckfuhler?

Beste Grüße

Sven

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]
  • [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.