Siemens S35 Kommunikation über RS232 (STK500)

OP #2096708
Ich versuche einen Atmega8, der in einem STK500 steckt, mit meinem S35 
reden zu lassen, was leider nicht so richtig funktioniert.
Benutzt wird ein billiges ebay Datenkabel (P5=GND, P2=TxD, P3=RxD), 
welches dann auch genau so an das STK500 verbunden wurde, also direkt an 
PD0 bzw PD1 und GND.
Spreche ich das Telefon via Hterm und aktiviertem DTR an funktioniert 
dies auch, nur über den Mikrocontroller kommt nichts an, was anscheinend 
an DTR liegt, da ich nicht verstehe, wie ich das im Programm 
"aktivieren" kann.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART#Hardware_Handshake
Hier habe ich gelesen, dass ich den Handshake mittels 0x11 herstellen 
kann, aber entweder habe ich das ganze nicht verstanden, es falsch 
eingesetzt oder (am ehesten) beides zusammen.
Ich benutzte die UART Bibliothek von Peter Fleury.

Um genau zu sein, wird zwar was auf dem LCD ausgegeben (Kommunikation 
scheint zu gehen), aber das Handy reagiert nicht auf die AT Befehle.
ZB ausschalten (AT^SMSO), was via Hterm funktioniert).

Eventuell kann mir ja jemand auf die Sprünge helfen.
Danke!
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <inttypes.h>
4
#include <avr/io.h>
5
#include <avr/interrupt.h>
6
#include <avr/pgmspace.h>
7
#include <util/delay.h>
8
#include "lcd-routines.h"
9
#include "includes.h"
10
#include "uart.h"
11
#define UART_BAUD_RATE      19200
12

13
int main () {
14

15
  unsigned int c;
16
  char buffer[7];
17
  DDRD  &= ~(1<<PD3);
18
  PORTD &= ~(1<<PD3);
19

20
  lcd_init();
21
  uart_init(UART_BAUD_SELECT(19200,4000000L));
22
  sei();
23

24
  while (1) {
25
    c = uart_getc();
26

27
    if ( c & UART_NO_DATA ) {
28
      /*
29
       * no data available from UART
30
       */
31
    }
32

33
    else {
34
      itoa( c, buffer, 10);
35
      lcd_string(buffer);
36
    }
37

38
    if (debounce( PIND, PD3 )) {
39
      uart_putc(0x11);
40
      uart_puts("AT^SMSO");
41
      uart_putc(13);
42
      uart_putc(10);
43
    }
44
  }
45
}
Gast #2096734
benutztz mit Hterm auch das ebay-Kabel ?
Wenn ja, wie kommst Du darauf das es DTR ist ?
Einfach mal ein vollbelegtes RS232-Kabel nehmen und
den DTR entsprechend setzen.
Persönliche Seite #2096911
Das "Datenkabel" des S35 benutzt eine parasitäre Spannungsversorgung für 
die im Kabel verbauten RS232-Pegelwandler. Daher genügt es nicht, dieses 
Kabel nur mit RxD/TxD und Masse zu verbinden, sondern es müssen zwingend 
die anderen Handshakeleitungen auf korrektes Potential gelegt werden, 
was für einen PC kein Problem darstellt.

Einfacher wäre es hier, auf das Datenkabel komplett zu verzichten und 
das Telephon komplett ohne Pegelwandler mit dem µC zu verbinden -- wenn 
ich mich recht erinnere, nutzt das Telephon 3V-TTL-Pegel, die direkt mit 
der UART eines µC verbunden werden können, wenn der auch mit 3V 
betrieben wird.
OP #2097368
Danke erstml für die Hinweise.
Ich dachte, da nur diese drei Leitungen am Handy ankommen, würde es auch 
reichen nur diese zu beschalten.
Na ja.
Da ich den Atmega mit 5V betreibe, kann ich das Handy ja nicht einfach 
so anschließen, sondern wohl so wie in der angehängten Schaltung.
Nur habe ich aber leider grade keine 2.7V Zenerdioden da.
Kann ich diese mit 3.6V Zenerdioden ersetzen (ansonsten habe ich noch 
1N4148 und 1N4001 da)?
Angehängte Dateien:
Persönliche Seite #2097393
D1 und den Widerstand kannst Du weglassen - der mit 5V betriebene µC hat 
keine Probleme mit einem niedrigeren Spannungspegel (solange der nicht 
unter der unteren Schaltschwelle für einen High-Pegel liegt).

Ansonsten ist das Thema Pegelwandlung 3V<->5V in diesem Forum gewiss 
schon etliche tausend Mal ausgekippt worden ...
OP #2098174
Falls es jemanden interessieren sollte, so habe ich es nun erfolgreich 
hinbekommen:
1
                ____
2
AVR/RX o-------[____]--------o S35 Pin 5
3
                100ohm
4
                ____
5
AVR/TX o-------[____]----+---o S35 Pin 6
6
                100ohm   |
7
                        -+-
8
                        / \ 3.6V Z-Diode
9
                        -+-
10
                         |
11
AVR/GND o----------------+---o S35 Pin 1

Jetzt muss ich es nur noch hinkriegen, die Ausgabe vom Handy an das LCD 
in Klartext umzuwandeln...
OP #2098190
Bastian F. schrieb:
> Jetzt muss ich es nur noch hinkriegen, die Ausgabe vom Handy an das LCD
> in Klartext umzuwandeln...

Anstatt lcd_string und Variablen-/Arrayverwurschtelei einfach lcd_data 
verwenden hat was ;)

Nun gibt es aber folgendes Problem.
Das Handy reagiert brav auf uart_puts("AT^SMSO\r"); und geht aus, bei 
allen anderen Befehlen wie zB uart_puts("AT+CGMI\r");  bekomme ich immer 
einen ERROR ausgegeben. Woran liegt das denn nun?
Gast #2098212
wahrscheinlich daran das der Befehl vom Handy nicht unterstützt wird
oder ein Syntax-Fehler im Befehl. Eventuell gibt es ja eine
AT-Befehlsliste des Handys im www.
Gast #2098737
Beim S25 antwortet das Telefon bei 19200 kBaud sauber, wie man es vom 
Hyperterminal etc. gewohnt ist. Bei anderen Baudraten mußte ich immer 
Byteweise mit einer wartezeit zw. den Bytes senden. Das Autobauding hat 
bei dem Handy wohl seine Grenzen.

Aber Du solltest besser \r\n (0x0D, 0x0A) beim Senden benutzen. Bei 
manchen Befehlen funktioniert die Akzeptanz auch bei mir nicht.

Mit dem S25 kodiere und dekodiere ich SMS, die im PDU-Format gesendet 
werden. Bei eine SMS von 160 Zeichentext, mußte der Controler schnell 
mal 500 Byte verarbeiten können. Deshalb habe ich mir dann einen Mega 
mit mehr RAM ausgesucht. Wenn Du mehr vorhaben solltest, könnte Dir der 
RAM im mega8 irgendwann zu eng werden.

Der ATmega644P (DIP) kann noch im STK500 betrieben werden, hat 4 k RAM, 
kostet ca. 6-7 Euro bei Reichelt und hat ein OCD zum Debuggen on Chip. 
Außerdem kannst Du den mit 20Mhz betreiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 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.