Fehler bei serieller Übertragung

Gast #47846
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 :-(
Gast #47850
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.
Gast #47852
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
Gast #47854
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.
Gast #47855
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.
Gast #47856
Bei mir funktioniert es auf diese Art und Weise einwandfrei!

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

Was bringt "59" eigentlich?
Gast #47858
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
Gast #47860
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.
Gast #47861
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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.