Upload
yestin
View
35
Download
0
Embed Size (px)
DESCRIPTION
SMS ü ber Festnetz. Teil2 praktische Realisierung Christian Ellenberg, Frank Siewert Labor RST, SS2001. Server. Das Konzept. ~. GSM-Netz. =. Fest- Netz. GSM Modem. Modem. ~. =. a b. Telefonleitung (TIP/RING). HOOK. D4-D7. MH884221 BD-1. C-Control2. D P H. D P L. - PowerPoint PPT Presentation
Citation preview
SMS über Festnetz
Teil2 praktische Realisierung
Christian Ellenberg, Frank Siewert
Labor RST, SS2001
Das Konzept
=~
Fest-Netz
Server
Modem
GSMModem
=~
GSM-Netz
Aufbau(1)
MH884221 BD-1
MT8880
PCF8574
C-Control2
DPL
DPH
i2c
AP0..7
Display
Tastatur
NF(DTMF)
D0-D3
IRQCP
phi2
R/W
RS0
D4-D7
RSR/WEnable
SDA
SCL
IRQ
Ring/LoopC
HOOK
ab Telefonleitung (TIP/RING)
Aufbau(2) b0
5 Register: Control_A (Control_B) Status
Receive Transmit
MT8880
R/W
RS0
DTMF
PHI2 (Takt)
CRACRBStatusReceiveTransmit
1
110
0
0
PCF8574
I2C Data0123
76
5
4
b0
b2
b3
1
0
IRQ
b1
Timing(1) MT8880C DTMF in
Timing(2) MT8880C Data I/O
Timing(3) I²C-Baustein
Beispiele(1) b0
MT8880Register Select
DTMF in/out
PHI2 (Takt) PCF8574
I2C Data Data in/out
IRQ
Tonausgabe ‘5‘ über I2C<->IO-Steuerung i2c.start(112) //Schreib-ADR, Startbedingung: SCL=HIGH,SDA H>L i2c.write(x0101101) //CRA: CRBenable,IRQenable,DTMFmode,TONEenable i2c.write(x1101101) //wie oben jedoch steigende Taktflanke i2c.write(x0101101) //Taktflanke wieder absenken -> Zyklus beendet i2c.write(x010x000) //CRB: C/R, DualTone,NoTest,BURSTenable i2c.write(x110x000) //wie oben mit Steigender Taktflanke i2c.write(x010x000) // Taktflanke fällt ->Zyklus beendet i2c.write(x0000101) // 5 ins Transmit-Register schreiben i2c.write(x1000101) // ... Taktflanke steigt... i2c.write(x0000101) // ...und fällt -> Ton für 50ms erzeugen i2c.stop() // Stopbedingung: SCL=HIGH,SDA L>H
Beispiele(2a)MT8880DTMF in/out PCF8574 I2C Data
Data in/outIRQPHI2 (Takt)Register Select
Beispiel: Tonerkennung über I2C<->IO-Steuerung i2c.start(112) // Schreib-Adresse, Startbedingung erzeugen i2c.write(10111111) // Status-Register auswählen i2c.write(11111111) // wie oben jedoch Taktflanke setzen i2c.start(113) // Lese-Adresse Wert=i2c.readlast() // I2C-Port auslesen (nur ein Byte lesen, dann STOP) i2c.stop() // Lesen abschliessen (zur Sicherheit) i2c.start(112) // Schreib-Adresse, Startbedingung erzeugen i2c.write(10111111) // Takt beenden i2c.stop() // I2C-Zyklus abschliessen
--------------------------- IRQ auswerten oder Polling --------------------------------Dann ...
Beispiele(2b)
Falls IRQ oder Polling Dateneingang erfasst, Receive-Wert auslesen:
i2c.start(112) // nochmal schreiben i2c.write(10011111) // Receive-Register wählen i2c.write(11011111) // wie oben mit positiver Taktflanke i2c.start(113) // Auf Lesen umschalten Wert=i2c.readlast() // I2C-Port auslesen (nur ein Byte lesen, dann STOP) i2c.stop() // Lesen beenden... i2c.start(112) // Schreiben... i2c.write(10011111) // Taktflanke fällt ->Zyklus beendet i2c.stop() // I2C-Zyklus abschliessen
Wert enthält dann (hoffentlich richtigen) dekodierten DTMF-TON
Das „SoPOTS“-Protokoll (1)
SMS-Unit SMS-Server
Sendet...
Anrufen RINGVoicemodusDTMF-Dauer setzen
Empfängt...
DTMF 12 senden „#“
Warten auf „#“
ZielNr. Senden+“#“+SMSTriggertimer starten
.
.
.
Auflegen
Auflegen nach Timeout
Das „SoPOTS“-Protokoll (2)
SMS-Unit SMS-Server
Sendet...
RING Anrufen
VoicemodusDTMF-Dauer setzen
Empfängt...
DTMF 12 senden „#“
Warten auf „#“
AbsendeNr. Senden+“#“+SMSTriggertimer starten
.
.
.
Auflegen
Auflegen nach Timeout