PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme Steuerung eines Terminalmodems(TC35i) über UART



Barracuda_cy
08.03.2009, 19:10
Hi Leute

Hab ein ATmega32
Siemens TC35i Modem

Steuerung über ein Terminalprogram auf dem PC funktioniert
Wenn ich den Terminal dann an meinen ATmega anhänge (über UART) und folgenden quelltext auf den MC lade:


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600



Print "AT+CMGF=1" 'In Textmode umschalten
Print Chr(13) 'Enter-Taste
Waitms 10
Print "AT+CMGS=0788027939" 'SMS nummer definieren
Print Chr(13)
Waitms 10
Print "Test Sms Von Mc2" 'SMS-Text
Print Chr(26) 'Ctrl-Z
Waitms 1


Config Pinb.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)
Led Alias Portb.0
Do
Led = 1 'Pin wird auf High, also 5V geschaltet
Waitms 100
Led = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
loop


End


dann klappt das ganze nicht mehr. An was kanns liegen?

Das mit den LED's am schluss hab ich einfach eingefügt, damit ich seh ob der MC funktioniert;)

Also, vorschläge?

Lg

repi64
08.03.2009, 19:55
tach auch,
hinter dein Print "AT+CMGF=1" wird schon ein CR angehängt.
Ist es dann richtig noch ein zweites CR mit deinem Print Chr(13) hinterher zu schicken? Wenn kein CR angehängt werden soll, bitte ein Semikolon am ende deiner Printzeile schreiben ( Print "Hallo" ; chr (13) ; "Welt" ; ).
Ist Print "AT+CMGS=0788027939" die Handynummer? Nicht 0178?
Sind die Configbits richtig gesetzt? Dauert z.B das Blinken der LED genau so lange wie es soll?
Eine ganz genaue Baudrate bekommst du mit einem Quarz von 11,0592 oder 14,7456 MHz hin.

Barracuda_cy
08.03.2009, 20:11
das mit dem semikolon hab ich inzwischen angepasst.
ich mach mal das mim quarz besser

Barracuda_cy
08.03.2009, 20:13
also, gebracht hats nichts
die handynummer stimmt

das wars also alles nicht:(

verwirrend finde ich das es vom PC->Modem ging

repi64
08.03.2009, 20:32
hast du an dem Controller auch einen MAX232 als invertierenden Pegelwandler dazwischen?
Ggf braucht dein Modem noch definierte Pegel an den Handshake Pins.
Geht die PC versenderei auch noch wenn du im Terminalprog die Hardware Flussteuerung auf Off hast bzw nur Pin 2,3 und 5 verbindest?
Wenn es dann mit dem PC nicht mehr geht, dan braucht das Modem die Handshakes.
Da kann es ausreichen die Pins 7 und 8 miteinander zu verbinden und ggf. noch Pin 1,4 und 6 zusammen legen.

Barracuda_cy
08.03.2009, 20:36
also in hterm ist CTS Flow Control deaktiviert, ist das das was du meinst?

um nur gewisse Pins zu verbinden müsstest du mir bitte helfen. Geht das mit dem Programm?

repi64
08.03.2009, 21:09
Ja ich meine die RTS / CTS Flowcontrol.
Dann sollte es nicht daran liegen aber um auf der sicheren Seite zu sein müsstest du die Pins Hardwaremäßig im Kabel Verbinden bzw. trennen.
Ich gehe davon aus, dass dein Kabel zw. PC und Modem voll belegt und 1:1 durchverbunden ist.
Um zu sehen ob es ausreicht nur die RX, TX und Masseleitung zu verbinden, müsstest du ein Kabel haben, welches nur Pin 2, 3 und 5 verbunden hat.

Eine weitere Fehlerquelle wäre eine vertauschte RX / TX Leitung an deinem Controller.
Hast du deien Controller auch mal testweise mit dem PC verbunden um zu sehen ob Daten fehlerfrei verschickt werden?
Wenn du den Controller via Max232 mit dem PC verbindest und die Daten am PC empfangen werden sollen, brauchst du ein Nullmodem Kabel (Pin 2->3 und 3->2). Für dein Modem brauchst du dann ein 1:1 Kabel.

Wenn der Controller jedoch über ein 1:1 Kabel erfolgreich mit dem PC kommuniziert, so musst du für die Verbindung zw. Controller und Modem ein gekreuztes also Nullmodem Kabel verwenden.

Barracuda_cy
08.03.2009, 21:24
ich habe controller und PC eben noch nicht verbinden können, da der controller sowie der PC männliche stecker besitzen und ich kein entsprechendes kabel habe.

was soll ich machen?

repi64
08.03.2009, 21:34
Na gut. Das deutet zunächst auf die richtige Belegung des Controllerboards.
Was für ein Board verwendest du denn?
Schon mal damit etwas erfolgreich über RS232 angesteuert?

Barracuda_cy
08.03.2009, 21:40
ich verwende das Atmega32 Prototype board aus dem embedit-shop.

nein ich habe damit noch nie erfolgreich was mit RS232 angesteuert

repi64
08.03.2009, 21:58
Das sollte so aber stimmen. Also das gleiche Kabel wie bei der PC Verbindung.
Für die testweise Verbindung zum PC brauchst du ein Nullmodemkabel wie auf der Herstellerseite ganz unten beschrieben.
http://www.wiki.elektronik-projekt.de/embedit/avr/prototype_boards/mega32_prototype_board

Könnte noch ein verkehrter Takt das Problem verursachen.
Sind die Configbits richtig gesetzt?
Mach mal einen Test mit einer LED, die z.B im 10 Sekunden Takt an und aus geht. Dauert der Zyklus wirklich genau 10 Sekunden?

Barracuda_cy
09.03.2009, 11:50
also für die verbindung zum PC hab ich eines das beim modem männlich ist und beim PC weiblich. Ist das richtig?
auf der Packung steht 1:1 verkabelt, also wohl ungekreuzt?

das mit dem Takt versuch ich grad

wie wären die configbits richtig gesetzt?

Barracuda_cy
09.03.2009, 12:28
noch ne idee:

mein modem schickt mir nach jedem Befehl den ich ihm sende ein "OK"
kann es sein das es probleme gibt wenn ich dieses "OK" nicht aufnehme?
So quasi ein stau in der leitung?

Grüsse

Barracuda_cy
09.03.2009, 15:19
also, mein Momentanes Programm sieht so aus:

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Waitms 1000
Print "AT"
Waitms 1000
Print "AT+CMGF=1"
Waitms 1000
Print "AT+CMGS=0788027939"
Waitms 1000
Print "Test Sms Von Mc";
Waitms 1000
Print Chr(26);
Waitms 1000

End

Es kommt genauso auf dem Modem an als wenn ich das Programm vom PC aus senden würde.

Aber es kommt keine SMS an, Ideen?

repi64
10.03.2009, 19:58
Du rufst hier um Hilfe und hast immer noch nicht die Empfehlungen befolgt, die ich Dir schon zum wiederholten mal gegeben habe.
Wenn du den einfachen Test mit der Blinkenden LED gemacht hättest, wären wir wahrscheinlich schon längst durch mit diesem Thema.
Höchstwahrscheinlich würdest du dann feststellen, dass die LED gar nicht so schnell blinkt wie es sein sollte, da der M32 nicht mit dem 16MHz Takt läuft sondern noch mit dem internen 8 oder 1MHz.
Wie kannst Du dir sicher sein, dass die Daten aus dem M32 genau so wie vom PC versendet werden, wenn du diese mangels Nullmodemkabel noch nicht mit einem Terminalprogramm geprüft hast?
Wie die Configbits richtig stehen müssen, steht im Datasheet.
Könnte was mit CKSEL 1111 sein.

Barracuda_cy
11.03.2009, 11:48
laso, hab den LED-leuchttest gemacht, sie brennt ziemlich genau 10 sekunden lang (habe mit einer Hand-stoppuhr gemessen, die ungenauigkeit wird von da kommen)

ICH HABE SCHON MIT EINEM NULLMODEMKABEL ZUM PC GESENDET!!!!

Barracuda_cy
11.03.2009, 12:10
Also Leute, habs geschafft und es lag am quarz/baudrate an all den dingen hallt;)

aber bevor ihr triumphierend rumschreit das ihrs doch gewusst habt:

Der quarz war defekt, hab nen neuen eingelötet und jetzt gehts

ich danke euch allen trotzdem! Hoffentlich können wir uns weiterhin helfen in diesem forum

echt spitze leute!

Grüsse