Forum: Mikrocontroller und Digitale Elektronik UART Antwort abwarten


von Carsten (Gast)


Lesenswert?

Hallo Forum...
nachdem ich Euch nun einen Tag mit der Modemverbindung zu meinem Handy
genrvt habe, geht's jetzt weiter :-)

Wenn ich im Terminalprogramm eine SMS absetzen möchte, gebe ich erst
den Befehl AT+CMGS="01711234567" gefolgt von <CR>
Jetzt kommt der Text.
Im Terminalprogramm bekomme ich eine Eingabeaufforderung in Form von
'>'.
Wie kann ich diese im MC abwarten, bevor ich den Text übers UART
sende?
Bis jetzt sende ich den Text direkt hinterher, bekomme aber nur einen
Teil des Textes in der SMS. Vermutlich gehen hier die ersten Zeichen
verloren, weil das Handy noch nicht bereit ist.
Hat da jemand einen Tipp?

von Horni (Gast)


Lesenswert?

Hallo Carsten,

wieso frägst Du nicht einfach in Deiner Empfangsroutine ab, ob Du das
'>' empfangen hast und schickst erst anschließend Deine SMS Botschaft
raus?

Mfg

Horni

von OldBug (Gast)


Lesenswert?

Probiers doch einfach mal mit ein wenig Verzögerung aus...

So ca. 1 Sekunde sollte fürs erste Reichen.
Oder Du baust wirklich eine Erkennung für das > ein.
Das würde ich in etwa so machen:

2. modem_send("AT+CMGS=...");
3. while(!findstr(modem_rxbuf, ">"));
4. modem_send(sms_buffer);

(so ähnlich jedenfalls, Pseudocode!)

von Carsten (Gast)


Lesenswert?

...mhh
eigentlich muss ich ja nur irgendeine Antwort abwarten...
Hab das jetzt mal so versucht:
zuerst UART initialisieren:

  ldi Temp1,0b00011000  ;TX und RX einschalten
  out UCR,temp1    ;
  ldi Temp1,25    ;Baudrate auf 9600
  out UBRR,Temp1

Senden:

;Modem
  ldi ZL, LOW(Sendbefehl*2)
  ldi ZH, HIGH(Sendbefehl*2)
  rcall print_Modem

        rcall nextline
Antwort1:
  sbis USR,RXC
  rjmp Antwort1

...hier bleibt der MC aber offensichtlich in der Schleife hängen.
Muss ich vor dem Empfangen noch was machen ?
Im Terminal funktioniert es beim ersten mal.
Sobald ich ein Zeichen sende, kommt der zweite Text.
Wenn ich aber den Befehl ein zweites mal sende, kommt der Text sofort
hinterher.

Die Eingabaufforderung wird aber doch vom Handy geschickt oder macht
das der Terminal alleine?

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.