Home

VoIP FeTAp – Internet-Telefonie mit einem alten

image

Contents

1. 5V von Platine2_1 OC1B PB2 Mikrofon Schaltung Lautsprecher Schaltung Abbildung 3 3 Schaltplan von Platine 1 Legende IC Integrated Circuit S Wechselschalter C Kondensator integrierter Schaltkreis K Steckbuchsen Steckverbinder T Transistor X Quarz M Mikrofon R Widerstand Ls Lautsprecher 19 3 1 1 ATmega anschlie en F r den ATmega8 wird ein 28 poliger IC Sockel verwendet der auf die Lochrasterplatine aufgel tet wird In diesen Sockel wird der ATmega8 gesetzt Dies erm glicht dass der ATmega8 bei Bedarf einfach aus der Schaltung herausgenommen werden kann da er nicht direkt mit der Schaltung verl tet ist Au erdem wird er dadurch nicht mit der L thitze in Verbindung gebracht was gegebenenfalls Schaden am ATmega8 anrichten kann 3 1 2 Spannungsversorgung Der ATmega ben tigt eine stabile Spannungsversorgung von 4 5 bis 5 5 Volt ATmega8 Da die Platine 1 von Platine 2 mit 5V ber die Steckverbindung K2 versorgt wird wird das genaue Zustandekommen dieser 5V bei der Beschreibung von Platine 2 erkl rt Jedenfalls werden die 5V die von Platine 2 kommen mit den Pins VCC 5V und GND Masse des ATmega8 verbunden Die zwei gro en gepolten Tantal Elektrolytkondensatoren C2 und C19 sollen durch ihre Tr gheit beim Entladen kurzzeitige Spannungsabf lle in der Schaltung berbr cken 3 1 3 Reset Schalter Verbindet man den Pin RESET PC6 des ATmega8 mit GND Masse dann wird ein Reset des Pr
2. include lt avr io h gt include I O definitions port names etc include lt avr signal h gt include signal names interrupt names include lt avr interrupt h gt include interrupt support include lt avr wdt h gt enables watchdog cmdlinetest c Zeilen 18 22 45 5 4 2 Procyon AVRlib Die Procyon AVRlib ist eine weitere kostenlose C Bibliothek f r Mikrocontroller die aber nicht wie die AVR Libc grunds tzliche Funktionen f r den Zugriff auf die Mikrocontroller Hardware sondern h here unterst tzende Funktionen bietet die dem Zweck dienen einem Entwickler den Weg zum gew nschten Ziel zu erleichtern Procyon bietet zus tzlich fertige Projekte an die die Procyon AVRlib nutzen So wie z B das Projekt cmdlinetest das ein Kommandozeilen Interface darstellt Die Datei cmdlinetest c ist hierbei eine ausf hrbare C Datei die eine m gliche Verwendung der Comandline Funktionen der Procyon AVRlib aufzeigt Kurz beschrieben setzt dieses Programm einige Pins des Mikrocontrollers als Ein oder Aus gang und versendet dar ber per UART Texte an einen PC der diese an einem Terminal Fenster ausgeben kann Die Funktionen f r die UART Funktionalit t sind ebenfalls bereits in einer Datei der Procyon AVRlib enthalten F r diese Arbeit wurde das Projekt cmdlinetest als Vorlage verwendet und von mir auf meine Bed rfnisse angepasst und mit entsprechenden Funktionen erweitert Mit Hilfe des Projekts cm
3. bertragen und dort an den Pin PD2 des ATmega8 weitergeleitet 3 2 10 Telefonh rerstatus Schaltung Die Telefonh rerstatus Schaltung ist im Schaltplan der Platine 2 lila dargestellt Diese Schaltung ist dazu da um dem ATmega8 mit einem eindeutigen Signal mitzuteilen ob der Telefonh rer aufgelegt oder abgehoben ist Bei der Telefonh rerstatus Schaltung darf die 40V Wechselspannung nicht wie bei der W hlimpuls Schaltung mit dem Relais abgeschottet werden da der Telefonstatus auch w hrend dem Telefonklingeln ben tigt wird W hrend des Telefonklingelns wird irgendwann der Telefonh rer abgehoben Dieser Status muss dann an den ATmega8 36 weitergegeben werden damit dieser daraufhin die 5V f r das Relais abschaltet welches wiederum die 40V Wechselspannung abschaltet Die eventuelle 40V Wechselspannung wird gleich zu Anfang der Telefonh rerstatus Schal tung durch einen Tiefpassfilter erster Ordnung der aus dem Potentiometer P3 und dem Kondensator C23 besteht herausgefiltert Das Potentiometer ist dabei auf 2 3 KOhm ein gestellt Das Signal nach dem Tiefpassfilter liegt dann ob nun das Telefon klingelt oder nicht bei OV Wird der Telefonh rer abgehoben steigt das Signal mit starker Verz gerung auf 5V an Diese Verz gerung ist auf den Konsenstor C23 zur ckzuf hren der sich erst voll auf laden muss Der Tiefpassfilter bewirkt au erdem dass sich die in dieser Schaltung uner w nschten W hlsignale zwischen 5V und 10V
4. Abbildung 3 16 Signale an den Eing ngen 5 schwarz und 6 rot Wie bei der W hlimpuls Schaltung ist die Schwelle f r das Signal am Ausgang 7 des Operationsverst rkers ausschlaggebend Befindet sich das Signal am Eingang 5 unterhalb der Schwelle dann hat das Signal am Ausgang 7 des Operationsverst rkers OV Wenn das Signal oberhalb der Schwelle liegt dann hat das Signal am Ausgang 5V Somit ergibt sich ein reines Signal das f r den ATmega ideal f r die Weiterverarbeitung ist U V 5V 4 2 5V 4 ov T T 1 t Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 3 17 Ausgangssignal des Operationsverst rkers Das entstandene Signal wird ber den Steckverbinder K5 9 von Platine 2 zu Platine 1 bertragen und dort an den Pin PBO des ATmega8 weitergeleitet 38 3 2 11 Sprachsignal Schaltung Die Sprachsignal Schaltung ist im Schaltplan der Platine 2 braun dargestellt Die analogen Sprachsignale vom Telefonh rer werden mit Hilfe der Sprachsignal Schaltung um das Zweifache verst rkt Die Sprachsignal Schaltung kann man entweder ebenfalls mit dem Relais vor der 40V Wechselspannung sch tzen oder man baut stattdessen einen ungepolten Kondensator C24 in die Schaltung ein der die danach kommende Schaltung sch tzt Wenn das Telefon nicht klingelt dann hat das Signal vor dem Kondensator C24 je nachdem ob der Telefonh rer aufliegt ode
5. Diese Z hler werden f r die verschiedensten Aufgaben ben tig Timer 0 function 488 times called in a second void timerOverflow0 void d eli disable interrupts ELLE ATI COUMO COVE CaS counie if countc 100 bi FOL Laing tel receiver check tel receiver status ower Of teltools c Zeilen 61 77 countc wird z B verwendet um regelm ig den Telefonh rerstatus abzufragen und ihn in der Variablen telreceiver zu speichern Dabei wird wenn countc bis 100 gez hlt hat die Funktion tel_receiver aufgerufen die sich ebenfalls in teltools c befindet Mit dieser Funktion wird abgefragt ob an dem Pin PBO 5V anliegen oder nicht Liegen 5V an ist der Telefonh rer abgehoben Zeigt die Variable telreceiver dabei noch an dass der Telefonh rer aufliegt dann ist der Telfonh rer gerade eben abgehoben wor den und es ist somit sinnvoll zu berpr fen ob die Telefonklingel l utet Gibt die Variable ring nun an dass das Telefon klingelt wird das Klingeln abgeschaltet und die Sprach ber tragung wird eingeschaltet Hierbei wird der Timer 1 mit dem Funktionsaufruf enable_timerl eingeschaltet Der Analog Digital Wandler und die Pulsweitenmodu lation werden so erm glicht Ist der Telefonh rer aufgelegt wird der Timer 1 deaktiviert Au erdem wird berpr ft ob kurz vorher Ziffern am W hlscheibentelefon gew hlt wurden die verworfen werden m ssen 71 Der du
6. PH 24 PH FH if tel bell rings 2 seconds stop tel bell if tel bell not rings 1 second ring tel bell teltools c Zeilen 80 98 Das letzte St ck Quelltext in der Funktion timerOverflow0 wird sp ter in einem ande ren Zusammenhang noch erl utert 73 Die Funktion extIntO0 wird bei einem externen Interrupt aufgerufen Daf r muss sich das Signal am Pin PD2 des ATmega8 ver ndern An diesem Pin ist das W hlsignal ange schlossen M chte man eine Nummer w hlen hebt man den Telefonh rer ab Dabei ndert sich das W hlsignal das erste Mal und l st einen Interrupt aus In der Funktion wird dann zun chst mit Hilfe von counta count1 und count2 berechnet wie lange der letzte ex terne Interrupt her ist Liegt er l nger als 50 Z hler Einheiten zur ck kann es sein dass eine neue Ziffer gew hlt wird Diesen Zustand halt man mit den Variablen diall und dial2 fest Tritt der n chste Interrupt innerhalb von 15 bis 35 Z hler Einheiten ein so wird der erste W hlimpuls mit der Variablen dialcount gez hlt So lange der Telefonh rer abgehoben ist und die Ziffer die durch eine bestimmte Anzahl von W hlimpulsen darge stellt wird noch nicht komplett ist wird auch bei allen weiteren Interrupts berpr ft ob die Zeit seit dem letzten Interrupt zwischen 15 und 35 Z hler Einheiten liegt Wenn ja wird dialcount immer um eins hochgez hlt Ist die erste Ziffer am Telefon fertig gew hlt so kann der Atm
7. USB Schnittstelle Zur M glichkeit ber die RS232 Schnittstelle zu kommunizieren kam au erdem die Kommunikationsm glichkeit ber USB dazu Per USB k nnen Daten schneller bertragen werden Bei Schaltungen mit geringem Stromverbrauch ist es sogar m glich die Schaltung ber den USB Bus ohne externe Versorgung mit Strom zu versorgen Mit den Jumpern JP1 und JP2 auf Platine 1 kann man zwischen den beiden bertragungs m glichkeiten RS232 und USB w hlen F r die Realisierung der USB Schnittstelle ist ein Chip der schottischen Firma FTDI ideal Dieser FTDI Chip vermittelt zwischen PC und ATmega8 und macht dabei eine USB zu seriell Umsetzung Dabei ist eine Seite des FTDI Chips RS232 und die andere USB 26 Die bertragung von Daten erfolgt auf der PC Seite ber die standardm igen COM Port Funktionen so dass bei der Erweiterung auf FTDI keinerlei nderung der Applikation erforderlich ist Einstellungen bez glich der bertragungsrate werden ignoriert Ungeachtet der im Pro gramm eingestellten Baudrate erfolgt die bertragung der Daten ber USB immer mit der h chstm glichen Geschwindigkeit Wird der FTDI Chip als UART konfiguriert k nnen serielle Daten mit bis zu 920 kBaud s ber USB bertragen werden In dieser Arbeit wird der FTDI Chip FT2232 verwendet Dieser kompakte Chip ist ein SMD Baustein und kann durch seine Bauform nicht ohne Weiteres auf Platine 1 gel tet werden Aus diesem Grund entschied ich mich f
8. Elektrolytkondensator C22 ist wichtig da er die Spannung die vom 9V Netz ger t kommt gl ttet 3 2 3 Schutzwiderstand Der Widerstand R16 ist ein Schutzwiderstand f r eventuelle Kurzschl sse 3 2 4 5V Relais Das Relais REL mit 2 Umschaltkontakten ben tigt 5V um beide Schalter umzuschalten Sobald diese 5V nachlassen gehen die Schalter wieder in ihre Ausgangsposition zur ck Die Diode D1 arbeitet als Schutzdiode um die beim Schalten des Relais entstehenden Induktionsspannungen abzuleiten Der NPN Transistor T1 verhindert dass das Relais beim Anlegen der Betriebsspannung oder bei kurzen Spannungsunterbrechungen ungewollt schaltet Die 5V zum Umschalten des Relais kommen vom ATmega8 ber den Steckverbinder K5 11 Schickt der ATmega8 dar ber nun diese 5V so schalten die beiden Wechselschalter gleichzeitig um Einer der Wechselschalter bewirkt durch das Umschalten dass der Telefon schaltung eine 40V Wechselspannung zugef hrt wird und somit das Telefon klingelt Der andere Wechselschalter ffnet durch das Umschalten einen Stromkreis damit dieser Strom kreis von den 40V verschont bleibt Wird nun der Telefonh rer abgehoben ndert sich das Telefonsignal Diese nderung muss an den ATmega8 weitergegeben werden der wiederum die 5V f r das Relais abschaltet Die beiden Schalter des Relais gehen in ihre Ausgangsposition und die 40V verschwinden aus der Schaltung 33 3 2 5 40V Wechselspannung Um die Telefonklingel
9. Hz Timer 1 PWM Phase Correct 8 bit TCCRIA 1 lt lt WGM10 1 lt lt COM1B1 Je scene jocesealer 1 wy TCCRIB AaKKCSil0 ger Coumesiel to zero TCNT1 0x00 clear counterl overflow flag MIR j SEN 2 enable counterl overflow interrupt IMIS j ET ORTE timer c Zeilen 98 118 In der Funktion timerInit werden nach der Initialisierung der Timer und Interrupts au erdem noch alle Interrupts mit ihren zugeh rigen Funktionen mit Hilfe der Funktion timerAttach verkn pft timerAttach EXTERNOINTERRUPT extInt0 timerAttach TIMEROOVERFLOW INT timerOverflow0 timerAttach TIMER1OVERFLOW INT timerOverflowl timer c Zeilen 64 66 61 Wird nun z B von Timer 0 ein Interrupt ausgel st so wird zun chst die Interrupt Routine TIMER_INTERRUPT_HANDLER SIG_OVERFLOWO in der Datei timer c aufgerufen In einer Interrupt Routine darf auf Grund des zugeh rigen Registers nur ein Befehl stehen Mit diesem Befehl wird die vorher mit Timer 1 verkn pfte Funktion timerOverflow0 auf gerufen Diese Funktion enth lt nun alle wichtigen Aufgaben die nach einem Interrupt des Timers 0 aufgef hrt werden sollen Die Funktionen timerOverflow0 und ext Int0 sind in der Datei teltools c implemen tiert Die Funktion timerOverflow1 f r den Timer 1 befindet sich hingegen in der Datei pwmsw c Interrupt handler for te
10. bewegen Somit ist es sinnvoll f r den Telefonh rerstatus nur noch das Signal unter 5V zu betrachten Insgesamt wird das Signal durch den Tiefpassfilter noch tr ger und somit f r den ATmega f r die Weiterverarbei tung noch schlechter Mit einem Operationsverst rker kann das Signal wieder verbessert werden U V 10V 7 7 5V 7 DN 2 5V 4 OV Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 3 15 Signal nach Tiefpassfilter Um die Tr gheit des Signals zu entfernen und ein sauberes Signal f r den ATmega8 zu erzeugen wird das Signal nach dem Tiefpassfilter zun chst mit einem Spannungsteiler R22 R23 halbiert das Signal bewegt sich dann nur noch zwischen OV und 5V und an den nichtinvertierenden Eingang 5 des Operationsverst rkers IC6 B weitergeleitet Durch die Widerst nde R24 bis R27 wird eine konstante Spannung von 1 75V an den invertierenden Eingang 6 gelegt Schwelle Der Widerstand R28 ist eigentlich nur dann n tig wenn das Signal am Eingang 5 h ufig in der n he der Schwelle 1 75V liegt Dies ist jedoch nicht der Fall Auch in dieser Schaltung wird der Operationsverst rker als Komparator verwendet da er ebenfalls zwei Eingangssignale vergleicht 37 U V Schwelle 1 75V E Sp el _ Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt
11. das Vergleichsregister OCR1B auf 0 void pwmInit void set PWM value to 0 OCRIB 0 pwmsw c Zeilen 38 42 69 5 14 7 Datei teltools c Wird im Terminal Fenster der Buchstabe r eingegeben so wird die zu diesem Kommando zugeh rige Funktion ringBell aufgerufen die sich in der Datei teltools c befindet In dieser Funktion wird der interne Pull Up Widerstand des Pins PD7 ber das Register PORTD eingeschaltet und der Pin somit auf VCC gezogen Der Pin PD7 schickt dann 5V an das Relais dass mit dem Pin PD7 verbunden ist Das Relais l sst die Telefonklingel ert nen Dass das Telefon gerade klingelt wird in der Variablen ring festgehalten Ist der Telefonh rer beim Aufrufen der Funktion ringBell abgehoben so wird die Telefonklingel nicht eingeschaltet sondern im Terminal Fenster die Meldung ausgegeben dass das Telefon gerade belegt ist void ringBell void if telreceiver 0 if tel receiver down countd 0 ff Correct start em bell ring PORTD 1 lt lt PD7 set Pin PD7 high ring the telephone bell ne ly status bell rings else if tel receiver up rprintf telephone busy r n teltools c Zeilen 45 57 70 Als n chstes folgt die Funktion timerOverflow0 Sie wird jedes Mal aufgerufen wenn Timer 0 einen berlauf hat In dieser Funktion werden bei jedem Aufruf einige Z hler counta bis countd um eins hochgez hlt
12. dass der Ausgangspin OC1B beim Hochz hlen des Z hlers gel scht und beim Herunterz hlen gesetzt wird In der Abbildung 5 2 ist das sehr gut erkennbar Das Verh ltnis zu Setzen und L schen des Ausgangspins nennt man Tastverh ltnis Einmal Hoch und Runterz hlen ergibt dabei die Periode Die Periode ist gleich der PWM Ausgangsfrequenz vom PWM Signal 66 Die PWM Ausgangsfrequenz berechnet sich wie Folgt PWM Ausgangsfrequenz Quarzfrequenz Vorteiler Timeraufl sung 2 Quarzfrequenz 8 MHz Vorteiler 1 8 bit Timer 1 Aufl sung 256 PWM Ausgangsfrequenz 8 000 000 Hz 1 256 2 15 625 kHz Diese 15 625 kHz werden ben tigt denn die PWM Ausgangsfrequenz muss doppelt am besten vier mal so gro sein wie die Signalfrequenz die nach dem Lautsprecher Filter brig ist Nach der Lautsprecher Schaltung hat das Signal 4 kHz U V PWM Signal Timer 5V 2 5V gt ov 1 D Periode Frequenz Abbildung 5 2 Nicht invertierende PWM mit Tastverh ltnis 50 Um genau festzulegen wann der Pin beim Hochz hlen gel scht und beim Herunterz hlen gesetzt wird ben tigt man noch den Vergleichswert der in das 16 Bit OCR1B Timer Output Compare Register Register geschrieben wird berall dort wo der Timer 1 diese Vergleichs Linie schneidet schaltet der Ausgang beim Hochz hlen des Z hlers auf LOW und beim Herunterz hlen auf HIGH Folgende Abbildung soll den Zusammenhang zwischen dem Vergleichswert
13. dem Programm AVRDude auf den ATmega8 79 6 VoIP FeTAp in der Praxis Wie das VoIP FeTAp in der Praxis funktioniert soll mit den Folgenden Ablaufprotokollen aufgezeigt werden 6 1 Ablaufprotokoll beim Anrufen Beim Wunsch einen Gespr chspartner anzurufen hebt der Benutzer den Telefonh rer ab Dadurch ndert sich das Signal das von der Telefonh rerstatus Schaltung an den ATmega8 geleitet wird Der ATmega8 wei nun dass der Telefonh rer abgehoben ist Das Kom mando p im Terminal Fenster gibt immer den aktuellen Telefonh rerstatus aus Wird in diesem Moment vom PC die Meldung an den ATmega8 geschickt dass jemand dieses Telefon anrufen m chte dieser Fall wird mit dem Kommando r dargestellt dieses Kommando soll das Telefon klingeln lassen so wird im Terminal Fenster ausgegeben dass ein Anruf zur Zeit nicht m glich und das Telefon belegt ist Der Benutzer w hlt nun die IP Adresse des gew nschten Gespr chspartners dabei ndert sich das Signal das von der W hlsignal Schaltung zum Atmega8 gleitet wird Der ATmega8 kann aus diesem Signal erkennen welche Ziffern der Benutzer w hlt und gibt diese an den PC weiter der sie im Terminal Fenster ausgibt Bei der IP Adresse sind 4 mal 3 Ziffern m glich und werden auch so in Gruppen im Terminal Fenster ausgegeben Sind alle Ziffern gew hlt gibt der Mikrokontroller eine Meldung aus Hat sich der Benutzer verw hlt so legt er den Telefonh rer auf Dabei
14. der Sprachsignale in viele kleine Pakete aufgeteilt Der eigentliche Transport der Daten erfolgt ber das Real Time Transport Protocol RTP gesteuert durch das Real Time Transport Control Protocol RTCP RTP verwendet zur ber tragung in der Regel das User Datagram Protocol UDP UDP kommt zum Einsatz da es ein minimales verbindungsloses Netzwerkprotokoll ist das nicht auf Zuverl ssigkeit ausgelegt wurde wie beispielsweise das Transmission Control Protocol TCP Bei UDP wird der Empfang der Sprachpakete nicht best tigt es bestehet also keine Ubertragungsgarantie Daf r wird aber der Datenfluss auch nicht verz gert 7 3 5 Nach dem Datentransport Beim Empf nger werden die Pakete zun chst in einem Puffer zwischengespeichert Von diesem Puffer werden sie zum Puffer des Mikrocontrollers RAM Speicher bertragen Wenn dieser Puffer voll ist sollte ein Interrupt ausgel st werden der diese Daten an den PWM Ausgang zum analogisieren schickt 85 8 Fazit Die gro e Motivation dieser Arbeit war alte und neue Technik miteinander zu verbinden Das alte W hlscheibentelefon und der moderne Mikrocontroller k nnen problemlos mit einander kommunizieren und aufeinander reagieren Entstanden ist ein Hardware Inter face das f r das Telefonieren ber das Internet ger stet ist Einen gro en Teil dieser Arbeit stellte die Signalverarbeitung dar Das Telefon erzeugt ein spezielles Signal das es galt f r den Mikrocontroller verst nd
15. dial3 dienen beim Z hlen der W hlimpulse der Zustand beschreibung Wenn die M glichkeit besteht dass aktuell eine Ziffer am Telefon gew hlt wird dann werden diall und dial2 auf 1 gesetzt Wenn sich die Vermutung best tigt wird dial2 wieder auf 0 gesetzt dial2 steht f r den allerersten W hlimpuls dial3 wird gleichzeitig auf 1 gesetzt was anzeigt dass definitiv eine Ziffer gew hlt wird Dieses Verfahren dient 75 dazu dass in der Funktion extInt0 immer in die Richtige if Bedingung gesprungen wird Jedes Mal wenn dialcount um eins hochgez hlt wird wird auch der Z hler countb auf null gesetzt Ist das W hlen einer Ziffer abgeschlossen erreicht der Z hler countb bald den Wert 50 Ob der Z hler countb den Wert 50 erreicht hat wird in der Funktion timerOverflow0 abgefragt Hat nun countb den Wert 50 erreicht kann das bedeuten dass das W hlen der ersten Ziffer abgeschlossen ist und diese abgelesen werden kann Fragt man zus tzlich die Variable dial3 ab und ist diese auf 1 so zeigt dies eindeutig an dass gerade eine Ziffer gew hlt wurde Die gew hlte Ziffer kann dann mit der Funktion print_number am Terminal Fenster ausgegeben werden Alle Variablen die f r das W hlen zust ndig sind werden an dieser Stelle zur ckgesetzt Hier wird dann die Variable y aktiv sie z hlt die gew hlten Ziffern und l sst nur die 12 Ziffern die f r eine IP Adresse ben tigt werden zu Sind dann alle Ziffern f r die IP Adres
16. entschieden da es die Abarbeitung des Programmablaufs nicht belastet und die Hardware PWM Pins auch nicht f r einen anderen Zweck ben tigt werden 5 14 5 1 Genaue Erkl rung der Hardware Pulsweitenmodulation Da der ATmega ein rein digitales Bauteil ist kann man ein Ausgangs Pin entweder auf HIGH setzen worauf am Ausgang die Versorgungsspannung 5V liegt oder aber den Ausgang auf LOW setzen wonach dann 0V anliegen Bei der Pulsweitenmodulation wird nun periodisch mit einer festen Frequenz zwischen 5V und OV umgeschalten Dabei entsteht ein Rechtecksignal U V 5V 2 5V gt OV Abbildung 5 1 PWM Rechtecksignal F r das Erzeugen einer periodischen nderungen eines Signals k nnen f r die drei PWM Ausg nge PB1 OC1A PB2 OC1B PB3 OC2 des ATmega die Timer 1 und 2 verwendet werden Timer 1 ist ein 16 bit Z hler und kann daher zwei PWM Ausg nge OC1A und OCIB verwal ten die allerdings gleiche Timer Einstellungen haben und somit auch den gleichen Vorteiler Timer 2 ist ein 8 bit Z hler und verwaltet den dritten PWM Ausgang OC2 In der Datei timer c wurde der Timer 1 bereits f r den OC1B PWM Ausgang initialisiert Er wurde so eingestellt dass er im 8 bit nicht invertierenden PWM Modus betrieben wird Er z hlt von 0 aufw rts bis zu Obergrenze bei 8 bit 255 und danach wieder zur ck auf 0 und wird als sogenannter Auf und Ab Z hler betrieben Der nicht invertierende PWM Modus bewirkt nun
17. erkl rt wird 15 625 kHz betragen Teilt man nun die Quarzfrequenz von 8 MHz durch die Abtastfrequenz 15 625 kHz so ergibt sich die Zahl 512 Diese Zahl gibt an dass bei der gew nschten Abtastfrequenz von 15 625 kHz alle 512 Quarztakte eine Analog Digital Wandlung gestartet werden muss Aus dem Datenblatt des Atmeag8 ATmega8 ist ersichtlich dass alle Analog Digital Wand lungen bis auf die aller erste die dauert 25 Takte 13 Takte dauern F r die Berechnung des Teilungsfaktors bedeutet dies dass man die 512 Quarztakte die f r eine Analog Digi tal Wandlung zur Verf gung stehen durch die 13 Takte die f r eine Wandlung ben tigt werden teilt Daraus ergibt sich die Zahl 39 Als ADC Teilungsfaktor wird somit der n chstgelegene niedrigere m gliche Teilungsfaktor von 32 gew hlt 64 Multipliziert man nun die Takte die f r eine Wandlung n tig sind 13 mit dem ADC Teilungsfaktor 32 dann ergibt sich die Anzahl der Quarztakte die f r eine Analog Digital Wandlung tats chlich gebraucht werden 416 Die Berechnung des Teilungsfaktors ist korrekt da der Wert 416 unterhalb der f r eine Wandlung zur Verf gung stehenden 512 Quarztakte liegt In der Funktion adInit wird zum Schluss lediglich die aller erste Analog Digital Wand lung angesto en da diese einige ADC Takte l nger dauert als die folgenden Die n chsten Analog Digital Wandlungen werden dann in der Datei pwmsw c angesto en Auch deren Ergebnisse werden dor
18. goCmdline wird zun chst alles was im Terminal Fenster am PC steht gel scht und der Begr ungstext Welcome to VoIP FeTAp ausgegeben Daraufhin wird das Kommandozeilen Interface initialisiert indem die Funktion cmdlineInit die sich in der Datei cmdline c befindet aufgerufen wird Im weiteren Quelltext k nnen Kommandos und deren zugeh rigen Funktionen eingege ben werden Wird nun ein Kommando in das Terminal Fenster des PCs eingegeben das hier bekannt ist wird die zugeh rige Funktion aufgerufen Somit kann man ber das Terminal Fenster mit der Software auf dem ATmega8 kommunizieren An dieser Stelle wurden von mir die Kommandos r und p eingef gt Das Kommando it ruft eine Funktion ringBell auf die sich in der Datei teltools c befindet und das Telefon zum Klingeln bringt Das Kommando p gibt mit der zugeh rigen Funktion print_receiver die sich auch in teltools c befindet den aktuellen Telefonh rerstatus aus Als n chstes werden die bereits initialisierten Interrupts mit dem Funktionsaufruf sei aktiviert print welcome messag vt100ClearScreen vt100SetCursorPos 1 0 rprintfProgStrM r nWelcome to VoIP FeTAp r n initialize cmdline system cemdlinelnit direct cmdline output to uart serial port cmdlineSetOutputFunc uartSendByte add commands to the command database cemdlineAddCommand exit exitFunction cmdlineAddCommand r ri
19. n dargestellt Mit dieser Schaltung werden im Speziellen die W hlsignale des Telefons f r den ATmega8 aufbereitet 34 Die eventuelle 40V Wechselspannung ist in der W hlimpuls Schaltung st rend und au er dem berfl ssig weil man wenn das Telefon klingelt gew hnlich keine Ziffer w hlt Aus diesem Grund hat das Relais REL zwei Wechselschalter Mit dem ersten Wechselschal ter wird die 40V Wechselspannung eingeschaltet der zweite Wechselschalter schaltet immer gleichzeitig mit dem ersten und bewirkt in dem Moment eine Unterbrechung des W hlimpuls Stromkreises U V 10V 7 5V 5V 2 5V OV Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 3 12 Ursprungsform Telefonsignal In Abbildung 3 12 ist das Telefonsignal in seiner Ursprungsform dargestellt Dieses Tele fonsignal das sich zwischen OV und 10V bewegt gilt es nun f r den ATmega8 aufzuberei ten d h das Signal soll sich zwischen OV und 5V bewegen und die W hlimpulse eindeutig anzeigen Das Telefonsignal wird nach dem Relais REL zun chst durch den Spannungsteiler beste hend aus R17 und R18 halbiert Das Signal bewegt sich nun also nur noch zwischen OV und 5V Dieses Signal wird an den nichtinvertierenden Eingang 3 des Operationsverst rkers IC6 A weitergeleitet Durch die Widerst nde R19 R20 und R21 l sst sich f r den invertie renden Eingang 2 des Operationsverst
20. rkers IC6 A eine konstante Spannung von 1 75V erzeugen Diese 1 75V werden auch Schwelle genannt denn Ist die Spannung am Ein gang 3 kleiner als die Spannung am Eingang 2 so liegt am Ausgang 1 des Operationsver st rkers die volle negative Betriebsspannung des Operationsverst rkers hier OV an Ist die Spannung am Eingang 3 gr er als die Spannung am Eingang 2 so liegt am Ausgang 1 dagegen die volle positive Betriebsspannung 5V an Die Schwelle 1 75V ist daher aus schlaggebend f r das entstehende Signal und bewirkt am Ausgang 1 des Operations verst rkers eine eindeutige Signalumschaltung ohne Verz gerung Da der Operationsverst rker au erdem keine weitere Beschaltung hat arbeitet er hier als Komparator Wie der Name sagt vergleicht er ein Eingangssignal mit einem Vergleichs signal 35 U V Schwelle 1 75V 5V f 2 5V gt oV _ den EEE VE H Teletonbh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 3 13 Signale an den Eing ngen 3 schwarz und 2 rot U V 5V 4 2 5V gt OV t Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 3 14 reines Signal nach W hlimpuls Schaltung In Abbildung 3 14 ist das Signal nach dem Operationsverst rker IC6 A dargestellt Dieses Signal wird ber den Steckverbinder K5 von Platine 2 zu Platine 1
21. werden die bisher gew hlten Zahlen verworfen und er kann von neuem mit dem W hlen beginnen 80 e cmd ftdi HyperTerminal E iol x File Edit View Call Transfer Help Dels3laa e Welcome to VoIP FelfAp gt r telephone busy gt p up gt 123 46 gt 123 456 789 012 number complete Connected 00 01 21 gy 19600 8 N 1 Abbildung 6 1 Terminal Fenster beim Anrufen 6 2 Ablaufprotokoll beim Angerufenwerden Beim Angerufenwerden wird vom PC ein Signal an den AtmeagB verschickt In dieser Arbeit wird dieses Signal mit dem Kommando r im Terminal Fenster dargestellt Der ATmega erkennt dieses Kommando und sendet daraufhin ein 5V Signal an die Telefon Schaltung Diese 5V bewirken dass einigen Teilbereichen der Telefon Schaltung eine Wechselspannung von 40V zugef hrt wird und die Telefonklingel zu l uten beginnt Hebt der Angerufene den Telefonh rer ab ndert sich das Signal das von der Telefonh rerstatus Schaltung an den ATmega8 geleitet wird Der ATmega8 erkennt dieses Signal und erm glicht die Sprach bertragung In dieser Arbeit wird die analoge Sprache vom Atmega digitalisiert und gleich darauf wieder analogisiert und an einem Lautsprecher der an die Schaltung angeschlossen werden kann ausgegeben 81 cmd ftdi HyperTerminal oO x File Edit View Call Transfer Help Dee zo Welcome to VoIP FelfAp gt Connected 00 13 04 T100 600 B N 1 LG Abbildung 6 2 Terminal Fens
22. zwischen beiden Eingangsspannungen 2 und 3 auf Null zu halten Der Widerstand R8 und der Kondensator C12 stellen einen einfachen Tiefpassfilter erster Ordnung dar Dieser Tiefpassfilter l sst alle Frequenzen unterhalb der Grenzfrequenz durch und filtert die Frequenzen die h her sind heraus Die Grenzfrequenz kann man mit dem Widerstand und dem Kondensator einstellen Sie berechnet sich bei diesem Tiefpassfilter wie folgt R 12K C 4n7F fgz 1 2 n R Q fg 1 2 3 14 12000 Q 0 0000000047 F fg 2821 fg 2 8 kHz Somit werden alle Frequenzen Uber 2 8 kHz durch den Tiefpassfilter herausgefiltert 22 Zus tzlich besch tzt der Widerstand R8 den Verst rker vor Sch den falls der Ausgang 1 kurzgeschlossen wird Nach dieser Filter Schaltung wird das verst rkte analoge Sprachsignal ber den Jumper JP3 an den analogen Eingang ADCO des ATmega8 weitergeleitet 3 1 7 Lautsprecher Schaltung Das Sprachsignal das vom Gespr chspartner ber das Internet verschickt wird und somit digital ist muss f r die Ausgabe am Telefonh rer wieder analogisiert werden Diese Aufgabe bernimmt der ATmega8 Auf Platine 1 ist hierf r ebenfalls ein Filter f r die Aufbereitung des Sprachsignals angebracht Im Schaltplan von Platine 1 ist die Lautsprecher Schaltung braun dargestellt Da der ATmega8 keinen Digital Analog Wandler besitzt wird diese Funktion durch die Pulsweitenmodulation weiter unten im Text wird dieses Verfahren
23. AA kreeg ee eee ee C t a JG J AG ee v CE tv ee se ee o Li eeo0e0 ee ee eee VU Lee ee ee ee ee Korea ee ee Seege Vi eee ee ee vo Vi eo eeeeeeeens CeCkL 2 eee ees ee s CLM ORR 6 we D ec a 2 SANT 6 EI H ee ce Sege e ee LA eee es EI D zk ee eee enw eg Er NR IS K K Lil Kuno PS ERS Soon eats D Akt SEN eo a S GE A s LEE 6106 e en E ACC va Ka ZS een e sie e gt en Co TESCO Abbildung 3 9 Lochrasterplatine 2 30 Abbildung 3 10 Best ckungsplan von Platine 2 31 W hlimpuls Schaltung Telefonh rerstatus Schaltung Sprachsignal Schaltung Abbildung 3 11 Schaltplan von Platine 2 3 2 1 9V Gleichspannung Platine 1 und 2 werden grunds tzlich mit der 9V Gleichspannung versorgt Zum einen be n tigt das Telefon 9V mit dessen 9V Signalen auch die gesamte Schaltung auf Platine 2 weiterarbeitet zum anderen werden die 9V von einem Spannungsregler IC5 in 5V umge wandelt die Platine 1 ber den Steckverbinder K5 zugef hrt werden 32 3 2 2 Spannungsregler Der Spannungsregler OCH wandelt eine h here Eingangsspannung in diesem Fall 9 V immer genau in 5V um Dies kommt auch Platine 1 zugute die diese stabilen 5V ber die Steckverbindung K5 13 14 von Platine 2 erh lt Als Spannungsregler wird hier der Typ L78SO5CV L78505 verwendet welcher 2A vertr gt sowie ber einen Kurzschluss und berlastungsschutz verf gt Der gepolte
24. Gehirn fungiert denn er muss die Signale des W hlscheibentelefons verstehen und an den PC weiterleiten k nnen Auch Signale vom PC sollen ber den Mikrocontroller Auswirkungen auf das W hlscheibentelefon haben Die Aufgabe war es nun die Signale des W hlscheibentelefons so aufzubereiten dass sie f r den Mikrocontroller leicht weiterzuverarbeiten sind Der Mikrocontroller soll ber USB an den PC gekoppelt werden Au erdem soll statt einer Telefonnummer die IP Adresse des Gespr chspartners gew hlt werden k nnen 1 3 Gliederung Diese Arbeit beschreibt alle verwendete Hardware und Software Auf Grund dessen ist es m glich das Produkt dieser Arbeit selbst nachzubauen Vorausgesetzt werden allerdings grundlegende Unix Kenntnisse und Kenntnisse der Programmiersprache C Au erdem ist diese Arbeit an einem PC mit dem Betriebssystem Microsoft Windows XP erstellt worden und geht bei der Erl uterung auch nicht auf andere Betriebssysteme ein Diese Arbeit ist in 8 Kapitel gegliedert die sich wie folgt zusammenfassen lassen Nach der Einleitung werden die zwei f r die Realisierung der Hardware wichtigsten Kom ponenten in Kapitel 2 beschrieben Kapitel 3 besch ftigt sich dann mit den aus dieser Arbeit entstandenen Lochrasterplatinen und beschreibt deren Aufbau und Funktion im Detail Des Weiteren werden in Kapitel 4 alle verwendeten Programme n her erkl rt Die entstandene Software wird in Kapitel 5 ausf hrlich dokumenti
25. Les lt gt Serial Cable C opto Isolate m Programming Options 7 High Current I O s I Only Program Blank Devices Driver Ze Virtual COM Port D2XX Direct Abbildung 3 8 Das Programm MProg us 28 Ist man nun im Bearbeitungs Modus des Programms kann man alle Optionen im Fenster ndern Links oben w hlt man z B den verwendeten FTDI Chip Typ aus und die IDs des Chips hier werden die Standard IDs verwendet In der zweiten Spalte des Fensters gibt man oben an ob der FTDI Chip eine externe Be triebsspannung erh lt oder ob er sie ber den USB Bus vom PC erhalten soll Ganz rechts wird dem EEprom mitgeteilt welcher Treiber f r die Kommunikation zwischen FTDI Chip und PC verwendet werden soll und welche bertragungsart gew nscht ist Weil der FT2232C zwei USB Umsetzer integriert hat kann man diese Einstellungen f r zwei Ka n le A und B angeben Alle anderen Einstellungen des MProg Fensters werden so beibehalten Hat man die Einstellungen gespeichert so kann man im Programmier Modus des Pro gramms MProg diese Einstellungen in das EEprom des USB Moduls programmieren F r die Kommunikation wurde im weiteren Betrieb der VCP Treiber gew hlt der nach dem Programmieren des EEproms auf dem PC installiert werden muss und somit den D2XX Treiber ersetzt Der VCP Treiber bietet den Vorteil dass er dem PC zwei virtuelle COM Ports erzeugt 3 1 11 Verbindung mit Platine 2 Platine 1 ist m
26. O MOSI SCK und RESET des ATmega8 verbunden Mit Pin RESET wird er deswegen verbunden weil SPI die Reset Leitung kontrolliert und nach dem Hochladen des Programms auf den Mikrocontroller ein Reset ausgef hrt wird Die in dieser Arbeit gew hlte Anschlussbelegung f r den 10 poligen Stecker ist aus dem Schaltplan der Platine 1 entnehmbar 3 1 9 RS232 Schnittstelle Um Daten und Texte zwischen ATmega8 und PC zu bertragen ist eine RS232 Schnittstelle sehr gut geeignet Da der ATmega ber einen internen UART verf gt ein Modul das Daten ber die RS232 Schnittstelle zum PC senden bzw auch von ihm empfangen kann ist eine serielle bertragung schnell realisierbar Da aber die PC Schnittstelle der Norm entsprechend mit 12V 12V arbeitet und der ATmega8 mit 0V 5V muss unbedingt ein Schaltkreis dazwischen welcher die Pegel anpasst Hierf r wird ein MAX232 IC2 verwendet der die Spannungsumsetzung realisiert 25 Der Pegelwandler MAX232 wird ber einen 16 poligen IC Sockel mit Platine 1 verl tet und wie aus dem Schaltplan von Platine 1 entnehmbar mit 5 gepolten Tantal Elektrolytkonden satoren C6 bis C10 verschaltet Das f r den PC auf 12V 12V gewandelte Signal wird ber einen 9 poligen Sub D Stecker bei dem 3 Pole belegt sind bertragen F r die Verbindung zwischen dem Sub D Stecker und dem seriellen Port des PC s wird ein 9 poliges Modemkabel verwendet Abbildung 3 6 Modemkabel mit Sub D Stecker 3 1 10
27. Ports an die mit Hyper Terminal ausgew hlt und verwendet werden k nnen 4 5 MProg MProg in der Version 2 3 wird verwendet um den EEprom Speicher des USB Moduls ber USB zu programmieren Das Programm kann unter http www ftdichip com Resources Utilities htm MProg kostenlos heruntergeladen werden 43 5 Software Im Folgenden wird die Entwicklung der Software die auf den ATmega8 geladen wird beschrieben Diese Software hat die Funktion alle Signale des Telefons zu verstehen und teilweise an den PC weiterzuleiten Andererseits soll sie Anweisungen des PCs verarbeiten k nnen und dadurch eventuelle Aktionen an die Telefonschaltung weiterleiten Die Informationen Uber die verwendeten Register des ATmega habe ich aus dem Daten blatt des ATmega8 entnommen ATmega8 5 1 Programmiersprache Fr her wurde die Software f r Mikrocontroller ausschlie lich mit der Maschinensprache Assembler erstellt Da ein Programm in Assembler aber f r einen bestimmten Mikrocon troller Typ geschrieben wird und nicht ohne weiteres f r ein anderes Mikrocontroller Modell verwendet werden kann habe ich mich daf r entschieden die Software in C zu schreiben Mit C kann man Programme erstellen die f r eine ganze Mikrocontroller Familie verwendbar sind F r die Mehrzweck Programmiersprache C gibt es au erdem viele Bibliotheken die speziell f r die AVR Familie angeboten werden Eine Software kann in C zudem schneller geschrie ben werden u
28. Taktzyklus Die sich daraus ergebende Architektur ist code effizienter indem sie einen zehn mal schnelleren Durchsatz erzielt als konventionelle CISC Mikrocontroller F r diese Arbeit wurde der 8 bit AVR Mikrocontroller ATmega8 von Atmel verwendet der im Folgenden Text kurz ATmega8 genannt wird 2 2 2 ATmega in K rze Genaue Bezeichnung ATMEGA8 16PI Geh useform PDIP28 8192 Byte Flash Programmspeicher 1024 Byte RAM 512 Byte EEprom 23 I O s bidirektional 12 0415 16PI Abbildung 2 4 Der Mikrocontroller ATmega8 von der Firma Atmel 2 2 2 Bauform Den ATmega8 gibt es in verschiedenen Bauformen In dieser Arbeit habe ich mich f r die klassische Bauform PDIP28 entschieden In dieser Bauform besitzt der ATmega8 28 Pins Beinchen Be PC6 XD PDO T XD PD1 INTO PD2 INT1 PD3 XCK TO PD4 vcc GND PB6 PB7 PD5 PD6 PD7 PBO XTAL1 TOSC1 XTAL2 TOSC2 T1 AINO AIN1 ICP1 Jo o E Go h PC5 ADC5 SCL PC4 ADC4 SDA PC3 ADC3 PC2 ADC2 PC1 ADC1 PCO ADCO PBS PB4 me PB3 MOSI OC2 PB2 SS OC1B PB1 OC1A Abbildung 2 5 Pin Konfiguration des ATmega8 ATmega8 13 2 2 3 Digitale bidirektionale I O Ports Beim ATmega gibt es 3 Ports B D denen die Pins zugeh ren Jeder Pin kann individuell als Eingang oder Ausgang konfiguriert werden Die meisten Ports sind doppelt belegt sie besitzen n
29. VoIP FeTAp Internet Telefonie mit einem alten W hlscheibenapparat Diplomarbeit im Studiengang Multimedia Fachbereich Informatik Fachhochschule Augsburg Doris Sch llhorn Matrikelnummer 902812 Sommersemester 2006 Erstpr fer Prof Dr Wolfgang Kowarschick Zweitpr fer Prof Dr Hubert H gl Erstellungserkl rung Hiermit erkl re ich dass ich diese Arbeit selbstst ndig verfasst und anderweitig noch nicht f r Pr fungszwecke vorgelegt habe Es wurden ausschlie lich die angegebenen Quellen oder Hilfsmittel benutzt W rtliche und sinngem e Zitate wurden als solche gekennzeichnet Augsburg 19 April 2006 Doris Sch llhorn Inhaltsverzeichnis 1 Einleitung 1 1 Motivation 1 2 Aufgabenstellung 1 3 Gliederung 2 Wichtige Komponenten 2 1 W hlscheibentelefon 2 1 1 2 1 2 Telefonsignal nderung beim hrifen Telefonsignal nderung beim Angerufenwerden 2 2 Mikrocontroller 2 2 1 2 2 2 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 2 7 2 2 8 2 2 9 Auswahl Mikrocontroller Modell ATmega8 in K rze Bauform Digitale Bidirektiondle ue Ports Spannung Stromverbrauch Takt Geschwindigkeit Speicher Peripherigfunkti nen Programmiersprache 2 2 10 Programm bertragung 3 Elektronische Schaltung 3 1 Lochrasterplatine 1 3 1 1 3 1 2 3 1 3 3 1 4 3 1 5 3 1 6 3 1 7 3 1 8 3 1 9 ATmega8 anschlie en Spannungsversorgung Reset Schalter Externer Taktgeb
30. chen ADCs einen Analog Multiplexer der dazu benutzt wird um zwischen den 6 analogen Eing ngen zu w hlen Das bedeutet dass man bis zu 6 analoge Signale in digitale umwandeln kann allerdings nicht gleichzeitig sondern zeitversetzt Das analoge Signal das an einem ADC Eingang anliegt muss gr er als OV und kleiner als die Referenzspannung VREF sein Die Referenzspannung ist eine externe Spannung die am AREF Pin des Mikrocontrollers zugef hrt werden muss Das Bestimmen der digitalen Werte die das analoge Signal repr sentieren nennt man Quantisieren Das analoge Signal wird dabei mit einer bestimmten Abtastfrequenz abge tastet Beim Abtasten wird ein analoges Signal dem n chsten erlaubten digitalen Wert zugewiesen Die Anzahl der digitalen Werte wird Aufl sung genannt und ist immer limitiert z B auf 1024 Werte bei einem 10 bit digitalen Signal Deshalb gibt es bei der Quantisierung immer einen Verlust von Informationen 5 14 4 Datei a2d c In der Datei a2d c ist eigentlich nur die Funktion adInit relevant denn hier wird der ADC eingerichtet Mit dem Register ADMUX ADC Multiplexer Selection Register kann man unter Anderem den gew nschten Eingangs Pin des ATmega8 ausw hlen an dem das analoge Sprachsignal das digitalisiert werden soll ankommt In diesem Fall wurde der Eingang ADCO gew hlt Mit dem Setzen oder L schen des Bits ADEN im Register ADCSRA ADC Control and Status Register A kann man den ADC entweder ein ode
31. d Ausschaltschwellen die um den Hysterese genannten Wert auseinanderliegen WIKI Spannungsteiler Ein Spannungsteiler besteht im Regelfall aus zwei Widerst nden an denen sich die Gesamtspannung in zwei Teilspannungen aufteilt Spannungsteiler werden verwen det um Arbeitspunkte Spannungsverh ltnisse an aktiven Bauelemente einzustellen Haupts chlich werden mit einem Spannungsteiler Spannungspotentiale erzeugt die geringer als die Gesamtspannung sind ELKO 94 Spikes und Glitches Spikes sind kurzzeitig unerw nschte Signalwechsel auf einer einzelnen Signalleitung w hrend man unter Glitches unkorrekte Daten in einem Datenbus versteht die auf grund von Laufzeitunterschieden in der kombinatorischen Logik entstehen AnSch Status Register SREG Das Status Register enth lt Informationen ber die Ergebnisse der meisten k rzlich ausgef hrten arithmetischen Instruktionen Diese Informationen k nnen f r den Programmfluss von Bedeutung sein um zus tzliche Funktionen auszuf hren Tantal Elektrolytkondensator Der Tantal Elektrolytkondensator ist ein Elektrolytkondensator dessen feste Elektrode aus Tantal besteht Die Tantal Elektroden werden je nach Bauform aus Folien gewickelt oder aus Pulvermaterial gesintert WIKI Tastverh ltnis Das Tastverh ltnis auch Tastgrad engl Duty cycle gibt das Verh ltnis der L nge des eingeschalteten Zustandes zur Periodendauer bei einem Rechteckssignal an Tiefpassfilter Der Tiefpassf
32. d liegt im Bereich um die 5V Beim Ablegen des Telefonh rers nach dem Telefonat sinkt das Signal mit etwas Verz ge rung wieder auf OV ab 10 2 1 2 Telefonsignal nderung beim Angerufenwerden U V 15V 10V 7 5V 4 ov 5V 4 10V gt Telefon Telefon Telefonh rer Sprechen Telefonh rer ruhig klingelt abgehoben aufgelegt Abbildung 2 3 Telefonsignal nderung beim Angerufenwerden Wird man angerufen so wird die Telefonklingel normalerweise vom Amt mit 60V Wechsel spannung versorgt Da auch 40V ausreichen wird die Telefonklingel bei dieser Arbeit mit einem 40V Transformator betrieben Diese 40V Wechselspannung legt sich auf die 9V Ver sorgungsspannung und ergibt das Signal wie es in Abbildung 2 3 ersichtlich ist 2 2 Mikrocontroller In dieser Arbeit hat der Mikrocontroller eine zentrale Rolle Er stellt sozusagen das Gehirn dar Er steht zwischen Telefon und PC und erm glicht die Kommunikation zwischen beiden Ein Mikrocontroller ist im Grunde ein fast kompletter Computer auf einem einzigen Chip Die CPU steckt ganz anders als bei einem gew hnlichen PC zusammen mit der gesamten O Elektronik und dem Speicher auf einem Halbleiter In punkto Geschwindigkeit kommen Mikrocontroller mit modernen CPU s f r PC s bei weitem nicht mit Daf r sind sie bez glich der Leistung auch sehr viel gen gsamer und kommen ohne spezielle L fter und K hlungs ma nahmen aus Die einzelnen Mikrocontroller
33. darauf folgende main Funktion schaltet mit dem Funktionsaufruf eli QO cmdlinetest c Zeile 52 zun chst alle m glichen Interrupts ab Diese Interrupts werden unter Anderem mit den n chsten Funktionsaufrufen initialisiert und sollen erst im sp teren Verlauf der cmdlinetest c Datei mit dem Funktionsaufruf sei OF cmdlinetest c Zeile 138 aktiviert werden 5 14 1 3 Initialisierung Die folgenden Funktionsaufrufe in der Datei cmdlinetest c initialisieren die wichtigsten Funktionen der Software wie z B das UART die Timer den Analog Digital Wandler etc indem sie die Initialisierungs Funktionen in deren C Dateien aufrufen Aber auch der Watchdog Timer wird hier initialisiert Der Funktionsaufruf wdt_enable WDTO_500MS bewirkt dass ein Reset des Programms ausgef hrt wird wenn der Watchdog Timer nicht innerhalb von 500 ms zur ckgesetzt wird initialize the UART serial port ewer Iimal e 2 uartSetBaudRate 9600 make all rprintf statements use uart for output gorie E MILE MSIE SSINClENAES p initialize pwm pwmlInit initialize watchdog timer wdt_enable WDTO_500MS initialize the timer system iE mee imal 54 intitialize the analog digital converter Dt UI Je intbeiealizs WeELOO termine meet Asp O cmdlinetest c Zeilen 57 78 5 14 1 4 Datenrichtung bestimmen In der main Funktion werden dann als n c
34. den Jumper JP3 kann man w hlen ob das analoge Sprachsignal vom Mikrofon der Platine 1 an den Atemga geleitet wird oder vom W hlscheibentelefon das an Platine 2 angeschlossen ist Ohne diesen Jumper w rde man beide Signale an jeweils einen analogen Eingang des Atmeag 8 anschlie en und m sste dann in der Software angeben welcher analoge Ein gang genutzt werden soll Der Jumper erm glicht nun ein Umschalten ohne die Software ver ndern zu m ssen Der Widerstand R3 wird in der Mikrofon Schaltung benutzt um das Mikrofon mit Energie zu versorgen Der Kondensator C11 blockt hierbei alle Gleichstrom Komponenten zum Verst rker Als Operationsverst rker wird der vierfach Universaloperationsverst rker LM324 LM324 verwendet Er hat vier Operationsverst rker integriert von denen einer IC4 A f r die Mikrofon Schaltung und die anderen drei CAB IC4 C IC4 D f r die im n chsten Abschnitt erkl rte Lautsprecher Schaltung verwendet werden Die vom Mikrofon kommenden Sprachsignale werden mit dem Operationsverst rker IC4 A und durch die Widerst nde R14 und verst rkt Verst rkung V R14 R4 V 10 1 V 10 das Signal wird somit um das 10 fache verst rkt R5 und R6 ergeben einen Spannungsteiler der die 5V Versorgungsspannung auf 2 5V hal biert und diese an den nicht invertierenden Eingang 3 des Operationsverst rkers IC4 A weitergibt Mit Hilfe des Ausgangssignals 1 versucht der Operationsverst rker nun die Differenzspannung
35. den Takt des Mikrocontrollers der bekanntlich vom externen Quarz kommt um einen einstellbaren Faktor zu reduzieren Die so geteilte Frequenz wird den Eing ngen der Timer zugef hrt Bei Teilung 1 geht z B die volle Quarzfrequenz zum Timer Bei Teilung 8 nur ein Achtel der Quarzfrequenz 5 11 Interruptgesteuerter Programmablauf Der Programmablauf der Software dieser Arbeit ist haupts chlich interruptgesteuert Das bedeutet dass eine Endlos Hauptschleife des Programms durch Interrupts unterbrochen wird um Unterroutinen auszuf hren Eine Steuerung des Programmablaufs durch Inter rupts ist effektiv und entlastet den Prozessor Jeder Unterroutine ist ein Interruptlevel zugeordnet das die Priorit t bestimmt Eine Routine h herer Priorit t kann eine Routine niedriger Priorit t unterbrechen Interrupts k nnen nicht nur durch einen Timer berlauf ausgel st werden sondern auch durch besondere Ereignisse wie z B einer nderung an einem Pin oder einer abge schlossenen Analog Digital Wandlung 51 Funktionen zur Interrupt Verarbeitung werden in den Include Dateien interrupt h derAVR Libc zur Verf gung gestellt die unter Anderem von der Datei timer c eingebunden werden Interrupts k nnen w hrend des Programmablaufs mit Hilfe der Funktionen sei und cli ein bzw ausgeschaltet werden Diese Funktionen haben Zugriff auf das Global Interrupt Enable Bit im Status Register SREG 5 11 1 In der Software verwendete Inte
36. dlinetest war somit schon zu Anfang die M glichkeit gegeben vom ATmega8 Meldungen am PC auszugeben was nat rlich auch die Fehlersuche erleichterte Bei der Procyon AVRlib ist die Lizenz zu beachten in Kurzform man muss Dritten auf Verlangen den gesamten Quelltext zur Verf gung stellen falls Teile der Procyon Bibliothek genutzt werden Die Procyon AVRlib ist unter dem Link http hubbard engr scu edu embedded avr avrlib erh ltlich 5 4 3 Verwendete Dateien der Procyon AVRlib Die Ausf hrbare Datei cmdlinetest c verwendet folgende C Dateien mit zugeh rigen Header Dateien aus der Procyon AVRlib a2d c a2d h Analog Digital Konverter Funktionen Bibliothek avrlibdefs h AVRlib globale Definitionen und Makros avrlibtypes h AVRlib globale Typen und Typdefinitionen buffer c buffer h Mehrzweck Buffer Struktur und Funktionen cmdline c cmdline h Kommandozeilen Interface Bibliothek cmdlineconf h Kommandozeilen Interface Bibliothek Konfiguration pwmsw c pwmsw h Pulsweitenmodulation Funktionen Bibliothek rprintf c rprintf h Printf Ausgabe Routinen 46 timer c timer h Timer Funktionen Bibliothek uart c uart h UART Treiber vt100 c vt100 h VT100 Terminal Funktionen Bibliothek global h Globale Header Datei f r AVRlib Projekte Diese Dateien wurden f r die Software dieser Arbeit als Grundlage verwendet Weiter unten im Text werden sie einzeln genauer beschrieben 5 5 Header Datei global h Zu jedem Procyon Projekt gibt es e
37. e man dauerhaft speichern m chte allerdings kann das EEprom nur 100 000 mal beschrieben werden 2 2 8 Peripheriefunktionen Der ATmega hat eine ganze Menge Peripheriefunktionen hardwarem ig implementiert z B UART I2C Bus SPI PWM usw Der Vorteil liegt darin dass der Mikrocontroller damit mehrere Anfragen gleichzeitig ausf hren kann Dadurch steigt zum einen die Gesamtleis tung des Mikrocontrollers zum anderen sind viele Dinge zeitkritisch und die Program mierung ist deutlich einfacher wenn man zehn zeitkritische Anfragen gleichzeitig erle digen kann 2 2 9 Programmiersprache Den besten Zugriff auf die Innereien des Mikrocontrollers hat man mit Assembler Bei Zunahme des Umfangs und der Komplexit t von Assembler Programmen w chst aber der Wunsch nach einer effektiveren Programmierumgebung F r gr ere Entwicklungen werden somit mittlerweile auch h here Programmiersprachen eingesetzt Hier ist die Programmiersprache C klar dominierend Ein Vorteil der h heren Programmiersprachen gegen ber Assembler ist z B dass diese Programme portabel sind d h eine einmal erstellte Programmstruktur l sst sich auf andere Mikrocontroller Typen bertragen 2 2 10 Programm bertragung Der Controller verf gt ber eine sogenannte SPI Schnittstelle Das bedeutet dass der ATmega8 ber bestimmte Pins mit einer geeigneten PC Software programmiert werden kann Zum Anschluss an den PC ben tigt man einen ISP Programmi
38. eben der normalen Port Funktion noch eine Sonderfunktion An jedem Pin gibt es zuschaltbare interne Pull up Widerst nde die teilweise auch bei akti vierter Sonderfunktion verf gbar sind M chte man dass der ATmega8 an einem Pin die Versorgungsspannung VCC anlegt so muss man lediglich den Pull up Widerstand ein schalten 2 2 4 Spannung Der ATmega8 ben tigt zum Betrieb eine Versorgungsspannung VCC von 4 5 bis 5 5 Volt Netzteile liefern im Leerlauf manchmal deutlich mehr Spannung als angegeben ein Spannungsregler ist deshalb Pflicht 2 2 5 Stromverbrauch Im Vergleich zu PC Prozessoren Pentium Athlon usw brauchen Mikrocontroller relativ wenig Strom Der Stromverbrauch des ATmega8 h ngt stark vom Takt ab Takt Stromverbrauch 32 kHz 80uA 100 kHz 0 5mA 1 MHz 2 3mA 8MHz 11mA 16 MHz 20mA Tabelle 2 1 Stromverbrauch des ATmega8 2 2 6 Takt Geschwindigkeit Der ATmega8 wird mit einem internen Taktgeber von 1 MHz ausgeliefert Mit einem externen Taktgeber ist es jedoch m glich einen Takt von bis zu 16 MHz zu erreichen 14 2 2 7 Speicher Das Programm das der ATmega8 ausf hrt wird im 8192 Byte gro en Flash Speicher abge legt Im 1024 Byte gro en SRAM werden die Variablen der Stack usw gespeichert Das SRAM kann beliebig oft wiederbeschrieben werden allerdings sind die Daten nach dem Abschalten weg Im 512 Byte gro en EEprom k nnen Werte gespeichert werden di
39. ega8 anhand von dialcount diese Ziffer rekonstruieren dialing signals void extInt0 void SES disable interrupts countl counta x time between the last interrupt x Ep Eer if tel receiver up and dialing number not complete ait telrscsivar 1 e number compolste 0 a2 Ce SS O amp amp sz In no dial action if diall 1 possibly a dial action die Chalks 1 dial action active Lit gt 15 amp s 35 f f ine next Slab dialcount tt t counth 0 if dial2 1 ZH Aa ale che Fiese Leem aie ies gt 15 amp x lt 35 eilaleoiiimier rg dial2 0 status now first dial impulse exists 74 dial3 1 5 status now dial action active countb 0 ie fe gt 50 possibly a dial action starts diall 1 possibly a dial action starts cial is possibly the first dial impuls GIE Cornel store counter to claculate the next sei teltools c Zeilen 170 214 Die externen Interrutps werden wie in folgender Abbildung gez hlt Interrupts die Interrupts die gez hlt werden gez hlt werden Die Ziffer 1 Die Ziffer 3 wird gew hlt wird gew hlt Eventuell wird Eventuell wird Eventuell wird eine Ziffer gew hlt eine Ziffer gew hlt feine Ziffer gew hlt Abbildung 5 4 Z hlen der externen Interrupts Die Variablen diall dial2 und
40. en Impulswahlverfahren Durch das Abheben des Telefonh rers beim analogen Endger t wird zur Vermitt lungsstelle eine Stromschleife geschlossen und von der Vermittlungsstelle der W hl Ton zum Teilnehmer gesendet Das Bet tigen des Nummernschalters unterbricht diese Schleife entsprechend der gew hlten Ziffer Bei Wahl der Ziffer 1 einmal bei Ziffer 2 zweimal bei Ziffer 0 zehnmal Im Telefonh rer ist dies bei manchen Telefonen als eine Folge von Knacksern zu h ren Die gew hlten Ziffern werden auf diese Weise in W hlimpulse umgesetzt Sobald eine etwas l ngere Pause folgt wird auf die n chste Ziffer gewartet Bei alten analogen Telefonen ist so eine Impulswahl auch durch geschicktes Bet tigen des Gabelumschalters m glich WIKI ISP In System Programmable Das bedeutet dass der Mikrocontroller in der Schaltung programmiert werden kann Wenn ein Mikrocontroller diesen Vorteil nicht hat dann muss man ihm zum Pro grammieren aus der Schaltung entfernen und in einem speziellen Programmierger t programmieren Komparator Ein Komparator ist ein Operationsverst rker der ohne Gegenkopplung betrieben wird Er vergleicht zwei Eingangssignale und gibt das Vergleichsergebnis am Aus gang aus Wenn die Spannung am nicht invertierenden Eingang h her ist als die Spannung am invertierenden Eingang so n hert sich die Ausgangsspannung der positiven Versorgungsspannung Bei umgekehrten Verh ltnissen geht die Ausgangs spannung gegen die ne
41. en Namensnennung Sie m ssen den Namen des Autors Rechtsinhabers nennen Keine kommerzielle Nutzung Dieser Inhalt darf nicht f r kommerzielle Zwecke verwendet werden 89 Weitergabe unter gleichen Bedingungen Wenn Sie diesen Inhalt bearbeiten oder in anderer Weise umgestalten ver ndern oder als Grundlage f r einen anderen Inhalt verwenden dann d rfen Sie den neu entstandenen Inhalt nur unter Verwendung identischer Lizenzbedingungen weitergeben Im Falle einer Verbreitung m ssen Sie anderen die Lizenzbedingungen unter die dieser Inhalt f llt mitteilen Jede dieser Bedingungen kann nach schriftlicher Einwilligung des Rechtsinhabers aufge hoben werden Die gesetzlichen Schranken des Urheberrechts bleiben hiervon unber hrt 90 C Abbildungsverzeichnis Abbildung 2 1 Abbildung 2 2 Abbildung 2 3 Abbildung 2 4 Abbildung 2 5 Abbildung 3 1 Abbildung 3 2 Abbildung 3 3 Abbildung 3 4 Abbildung 3 5 Abbildung 3 6 Abbildung 3 7 Abbildung 3 8 Abbildung 3 9 Abbildung 3 10 Abbildung 3 11 Abbildung 3 12 Abbildung 3 13 Abbildung 3 14 Abbildung 3 15 Abbildung 3 16 Abbildung 3 17 Abbildung 3 18 Abbildung 5 1 Abbildung 5 2 Abbildung 5 3 Abbildung 5 4 Abbildung 6 1 Abbildung 6 2 Das W hlscheibentelefon Telefonsignal nderung beim Anrufen Telefonsignal nderung beim Angerufenwerden Der Mikrocontroller ATmega8 von der Firma Atmel Pi
42. en einzelnen Dateien Header Module Bibliotheken ausf hrbare Programme einmal zu definieren wobei dann bei einer nderung einer Datei nur die Teile eines Projekts neu erstellt werden m ssen die laut Abh ngigkeiten im Makefile auch von der nderung betroffen sind Gibt man nun make in die Bash bzw Eingabeaufforderung ein so wird das Programm make exe das beim Installieren von WinAVR in das Unterverzeichnis WinAVR utils bin kopiert wurde aufgerufen Make sucht automatisch das Makefile im aktuellen Arbeits verzeichnis das dann die Ablaufsteuerung des Programms Make darstellt Es werden viele verschiedenen Makefiles als Vorlage angeboten die man f r seine eigenen Bed rfnisse anpassen kann Da Procyon auch eine solche Vorlage bietet habe ich diese ver wendet Hier gibt es aber eine Besonderheit Procyon verwendet zwei Makefiles wobei das eine vom anderen eingebunden wird Das Makefile avrproj_make ist hierbei ein allgemeines Makefile das bei allen Procyon Projekten gleich ist und viele allgemeine Funktionen bietet Das eigentliche Makefile makefile enth lt nun die speziellen Angaben zum Projekt wie z B den verwendeten Mikrocontroller Typ und die C Dateien Au erdem bindet dieses Makefile das allgemeine Makefiel avrproj_ make mit folgender Zeile ein include avrproj_make makefile Zeile 38 Beide Makefiles sind im gleichen Verzeichnis wie die C Dateien des Projekts gespeichert
43. er Betriebsspannung f r Analog Digital Wandler Mikrofon Schaltung Lautsprecher Schaltung SPI Schnittstelle RS232 Schnittstelle 3 1 10 USB Schnittstelle 3 1 11 Verbindung mit Platine 2 3 2 Lochrasterplatine 2 3 2 1 3 2 2 3 2 3 3 2 4 9V Gleichspannung Spannungsregler Schutzwiderstand 5V Relais NN OO 10 11 11 12 12 13 14 14 14 14 15 15 15 15 16 16 20 20 20 21 21 21 23 24 25 26 29 29 32 33 33 33 3 2 5 40V Wechselspannung 3 2 6 Telefonanschluss 3 2 7 Telefonsignalverarbeitung 3 2 8 Operationsverst rker 3 2 9 W hlimpuls Schaltung 3 2 10 Telefonh rerstatus Schaltung 3 2 11 Sprachsignal Schaltung 3 3 Verbindung der zwei Lochrasterplatinen 4 Verwendete Programme 4 1 WinAVR 4 1 1 AVRDude 4 4 o 4 1 2 Die Datei install_giveio bat 4 3 Cygwin 4 4 HyperTerminal 4 5 MProg 5 Software 5 1 Programmiersprache 5 2 Compiler 5 3 E E EEN 5 4 Bibliotheken 5 4 1 AVR Libc 5 4 2 Procyon AVRlib 5 4 3 Verwendete Dateien der E AVRlib 5 5 Header Datei global h 5 6 Erzeugen von Maschinencode 5 7 Makefile vr 5 8 Fuse Bits programmieren 5 8 1 Externen Quarz verwenden 5 8 2 Fuse Bits abfragen und programmieren 5 9 Timer 5 10 Vorteiler 5 11 Interruptgesteuerter prograrnmablaut 5 11 1 In der Software verwendete Interrupts 5 11 1 1 Uberlauf Timer 0 5 11 1 2 Externe Interrupts 5 12 Pollingverfahren 5 13 Watchdog Time
44. er status if you write an p at comandline void print receiver void if telreceiver 0 tel receiver down y 0 new dialing action Ee ert ie eene A eher else tel receiver up y 0 new dialing action Ee AE IE ON TEN A teltools c Zeilen 267 280 5 15 Batch Datei Nachdem nun alle relevanten Teile der Software erstellt wurden geht es an das Ubersetzen dieser Software in Maschinencode damit sie auf den ATmega8 geladen werden kann Um das Kompilieren der C Dateien und das Ubertragen der Hex Datei zum ATmega8 zu automatisieren habe ich eine Batch Datei voip bat erstellt Beim Ausf hren dieser Datei werden die Anweisungen darin nacheinander Stapelverarbeitung vom Betriebssystem ausgef hrt Die auszuf hrenden Befehle werden beim Erzeugen einer Batch Datei in eine einfache Textdatei geschrieben und mit der Dateiendung bat abgespeichert Die Batch Datei f r diese Arbeit enth lt folgendes make clean make avrdude p m8 c bsd e U flash w cmdlinetest hex voip bat 78 Was mit dem Befehl make clean passiert ist im Makefile definiert und bewirkt dass alle tempor ren Dateien die beim letzen Kompilieren entstanden sind sicherheitshalber ge l scht werden Durch den Befehl make wird das Makefile aufgerufen und das Programm nach den darin enthaltenen Kompilier Anweisungen kompiliert Die dritte Zeile bertr gt die gerade entstandene Hex Datei mit
45. eradapter Hier gibt es verschiedene L sungen serielle und parallele Adapter original von Atmel oder kompa tible L sungen Der in dieser Arbeit verwendete Programmieradapter wird am Druckerport betrieben 15 3 Elektronische Schaltung Bei den elektronischen Schaltungen wurden nur handels bliche und leicht zu beschaffende Bauteile verwendet F r diese Arbeit wurden zwei Lochrasterplatinen eingesetzt mit denen man schnell funk tionsf hige Schaltungen aufbauen kann die auch leicht wieder ver ndert werden k nnen Die zwei Lochrasterplatinen haben eine Abmessung von 10 x 16 cm und ein Raster von 1 mm Bohrungen mit einem Lochrasterabstand von 2 54 mm Die erste Lochrasterplatine wurde mit dem ATmega8 und den ben tigten Teilen f r die Kommunikation zwischen PC und ATmega best ckt Zus tzlich befinden sich auf der ersten Lochrasterplatine noch Filter f r den Audioaus und eingang Auf der zweiten Lochrasterplatine befindet sich die Schaltung f r die Aufbereitung der Telefonsignale f r den ATmega8 Im folgenden werden die Best ckungen der beiden Lochrasterplatinen einzeln erkl rt 3 1 Lochrasterplatine 1 Genauer befinden sich auf Platine 1 der ATmega8 ein MAX232 Pegelwandler der die serielle Kommunikation zwischen PC und ATmega8 realisiert ein DLP2232M FTDI Modul das zus tzlich die Kommunikation zwischen PC und ATMEGAS ber USB erm glicht und eine SPI Schnittstelle die die In System Programmierung ISP unt
46. erden ber diese zwei Leitungen werden die Sprache die W hlsignale und das Signal zum Klingeln des Telefons bertragen 2 1 1 Telefonsignal nderung beim Anrufen U V 20V 7 15V gt 10V 5V 4 ov 5V Telefonh rer Telefonh rer Ziffer 1 Ziffer 3 Sprechen Telefonh rer aufgelegt abgehoben w hlen w hlen aufgelegt Abbildung 2 2 Telefonsignal nderung beim Anrufen In dieser Abbildung ist gut erkennbar wie sich das Signal in der Leitung beim Wunsch einen Gespr chspartner anzurufen ver ndert Befindet sich der Telefonh rer noch auf der Telefongabel dann liegt das Telefonsignal bei OV Beim Abheben des Telefonh rers wird im Telefon eine Stromschleife geschlossen wodurch das Signal mit etwas Verz gerung auf 5V steigt Somit kann das Abheben durch die Signal nderung leicht erkannt werden Beim W hlen einer Ziffer tritt das Impulswahlverfahren in Kraft Dieses Verfahren be nutzen auch heute noch viele ltere Telefonger te Dreht man nun die W hlscheibe um eine Ziffer zu w hlen steigt das Signal von 5V auf 10V an Beim W hlen der Ziffer 3 sinkt das Signal drei mal f r eine bestimmte Zeitdauer auf OV steigt jeweils danach drei mal kurz auf 10V an und bleibt dann wenn die W hl scheibe wieder in Ruheposition ist bei 5V Diese eindeutigen Signal nderungen gew hr leisten ein einfaches Z hlen der W hlimpulse Das analoge Sprachsignal bewegt sich in einem Bereich zwischen 500mV und 1V un
47. erst tzt Au erdem be finden sich auf dieser Platine noch einige Operationsverst rker die bei der Aufbereitung vom Sprachsignal behilflich sind Die gesamte Lochrasterplatine wird mit einer 5V Gleich spannung betrieben Diese stabilen 5V werden auf der zweiten Lochrasterplatine durch einen Spannungsregler erzeugt Im Folgenden wird genau erl utert wie diese einzelnen Bauteile auf Platine 1 miteinander verbunden sind Allen Bauteilen wurde eine eindeutige Bezeichnung gegeben die bei der Erkl rung immer eventuell auch in Klammern mitangegeben ist 16 pr Dok 2 d neh Sts dch h tt De ULCERA 2 FEI oe Oot Do d Te GGG ig BOCRROD Helelsicici Teleiefeleisier Om Red JO J000 HOODI oononnoe Ion Tanan SRiaphttrotsr Panar no D le EG schRIOIt zg 3 JONA DOQUGE 3 Great Eg DOOR ononon 16 fe A2 J onf ODDDDE f nkt Ne S is els1s s sisierzr EILILICICHTETeTete Sdslsistdelelet WigtstgtspotztzGp e esaazccar Doe Bacon Inout 1813 Jauo gt Bo BEE GDG bie tel lEicieleipieipiefnfnTn KSC 7 De A Le O22 17 Abbildung 3 1 Lochrasterplatine 1 IC2 MAX232 ICH DLP 2232M Abbildung 3 2 Best ckungsplan von Platine 1 GE GE 18 PC6 Reset MOSI PB3 vcc MISO PB4 GND SCK PBS PB6 XTAL1 RXD PDO 2 0 PB7 XTAL2 AGND C21 100nF 20 MAX232 1 GND von Platine2 PBO 2 24 PCO ADCO 4 4_ PD2 INTO 8 ATmega8
48. ert Kapitel 6 beschreibt die Ablaufprotokolle beim Anrufen und Angerufenwerden ein abschlie endes Mal um die genaue Funktionsweise des Hardware Interfaces verst ndlich zu machen In Kapitel 7 werden berlegungen angestellt wie diese Arbeit weiterentwickelt werden k nnte Kapitel 8 stellt das Fazit dar Folgende Schriftkonventionen kamen in dieser Arbeit zum Einsatz feste Breite wird verwendet f r Quelltexte kursiv wird verwendet f r Begriffe die im Glossar erkl rt werden fett wird verwendet f r Hervorhebungen Sinngem e Zitate und Quellen sind mit AUTOR oder QUELLE direkt dem Satz oder Absatz folgend gekennzeichnet In den eckigen Klammern steht die Kurzbezeichnung des Autors oder der Quelle und ist damit im Quellenverzeichnis zu finden Bei Abgabe dieser Arbeit sind alle Internetverweise ffentlich zug nglich 2 Wichtige Komponenten 2 1 W hlscheibentelefon Verwendet wurde ein altes W hlscheibentelefon aus dem Jahr 1986 Genaue Typbezeich nung dieses W hlscheibentelefons FeTAp 791 1 Abbildung 2 1 Das W hlscheibentelefon Grunds tzlich ben tigt ein Telefon eine Versorgungsspannung von ca 10 Volt Gleich spannung die es f r gew hnlich vom Amt bekommt In meiner Arbeit habe ich hierf r eine externe Spannungsquelle angeschlossen die konstant 9 Volt Gleichspannung liefert Das Telefon hat vier ausgehende Leitungsadern von denen aber zur normalen Telekom munikation nur zwei verwendet w
49. gative Versorgungsspannung UniP 92 NPN Transistor Ein Transistor ist ein elektronisches Halbleiterbauelement das zum Schalten und Verst rken von elektrischem Strom verwendet wird Transistoren haben drei Anschl sse Mit der Bezeichnung npn Transistor bezeichnet man einen Transistor der die Schichtfolge n dotiert p dotiert und n dotiert auf weist Entsprechend steht pnp Transistor f r die Schichtfolge p dotiert n dotiert und p dotiert Aus diesen drei Schichtfolgen ergeben sich auch die drei Anschl sse die ein Tran sistor in der Regel hat Den mittleren Anschluss bezeichnet man als Basis B und die beiden u eren Anschl sse als Kollektor C und Emitter E Der Basisanschluss B dient bei der Verst rkerschaltung als Steueranschluss So bewirkt ein relativer schwacher Strom an der Basis B die Steuerung des Stromflusses zwischen Kollektor und Emmiter UniP Operationsverst rker Ein Operationsverst rker Abk OP OPV OV OpAmp besitzt einen invertierenden und einen nichtinvertierenden Eingang sowie einen Ausgang Au erdem muss er eine Betriebsspannung erhalten Ohne jegliche zus tzliche Beschaltung liegt am Ausgang die volle positive oder negative Betriebsspannung an abh ngig von den anliegenden Spannungen an den Eing ngen Liegt am invertierenden Eingang eine h here Spannung als am nicht invertierenden liegt der Ausgang auf negativer Betriebsspannung Ist die Eingangs spannung genau a
50. genauer erkl rt nachgebaut Das entstandene Signal wird am PWM Ausgang OC1B des ATmega8 ausgegeben Durch die Pulsweitenmodulation hat das Signal unerw nscht hohe Frequenzen die herausgefiltert werden m ssen Die Filter in der Lautsprecher Schaltung entfernen die hohen Frequenzen und l sst das gegl ttete analoge Sprachsignal brig Genauer besteht die Lautsprecher Schaltung aus zwei gestaffelten und aufeinander abgestimmten Tschebyscheff Filtern zweiter Ordnung IC4 D R9 R10 R11 C13 C14 und IC4 C R11 R12 R13 C15 C16 und einem Tiefpassfilter erster Ordnung R13 C17 Die Tschebyscheff Filter werden hier verwendet da diese Filter die Eigenschaft haben Frequenzen die unterhalb der Grenzfrequenz liegen bestm glich durchzulassen und die Frequenzen oberhalb der Grenzfrequenz rabiat herauszufiltern Bei einem einfachen Tiefpassfilter ist der Bereich um die Grenzfrequenz nicht so gut gel st In Abbildung 3 4 ist der Kurvenverlauf der beiden Filter Tschebyscheff und Tiefpass erster Ordnung um die Grenzfrequenz gut erkennbar 23 OG Grenzfrequenz Tiefpassfilter Kurvenverlauf Tschebyscheff Filter Kurvenverlauf Abbildung 3 4 Filter Kurvenverlauf Der letzte Operationsverst rker IC4 B in der Lautsprecher Schaltung besch tzt die Schal tung vor R ckkopplung Die Grenzfrequenz fg des gesamten Lautsprecher Filters wurde auf 4 kHz gesetzt so dass die hohen unerw nschten Frequenzen des Sprachsignals herausgefiltert we
51. gte Hex Wert berechnet wird Der Link zum AVR Fuse Calculator von Mark Hammerling http haemi dyndns org local fusecalc calc cgi ID atmega8 5 8 2 Fuse Bits abfragen und programmieren Um Fuse Bits abzufragen und zu programmieren benutzt man die gleiche Software AVRDude und Hardware ISP Programmieradapter wie zum Hochladen eines Programms in den Flash Speicher des ATmega8 Mit folgendem Befehl in der Bash bzw Eingabeaufforderung kann man den hierzu ben tigten Terminal Modus von AVRDude starten awrecluicks o md C loscl i Ist der Teminal Modus ge ffnet hat man unter Anderem Zugriff auf die drei Fuse Bytes des ATmega8 Fuse Low Byte Ifuse Fuse High Byte hfuse Extended Fuse Byte efuse Fur die Umstellung auf einen externen Quarz werden nur die beiden Fuse Bytes hfuse und Ifuse ben tigt 49 Bit Nummer Ifuse hfuse BODLEVEL RSTDISBL BODEN WDTON SUT1 SPIEN SUTO CKOPT CKSEL3 EESAVE CKSEL2 BOOTSZ1 CKSEL1 BOOTSZO CO INIWAN CKSELO BOOTRST Tabelle 5 1 Die Bits von hfuse und Ifuse Gibt man nun den Befehl dump 1fuse bzw dump hfuse im Terminal Modus ein wird bei beiden Fuse Bytes der aktuelle Wert der Fuse Bytes ausgegeben Hier zwei mal ff Dies be deutet dass im Lieferzustand alle Fuse Bits unprogrammiert sind dump lfuse gt 0000 ff dump hfuse gt 0000 ff Aus dem Datenblatt des ATmega8 ist z
52. hstes die Ein und Ausgangs Ports des ATmega8 eingestellt Jeder Port B C D wird ber 3 Register gesteuert DDRx Datenrichtungsregister f r Portx x entspricht den Ports B C D des ATmega8 Mit diesem Register kann man den gan zen Port oder einzelne Pins des ATmega8 als Eingang oder Ausgang definieren Eine 0 im Register steht f r Eingang eine 1 f r Ausgang PINx Eingangsadresse f r Portx Diese dient dazu den Zustand des Port Pins abzufragen Die Bits in PINx entsprechen dem Zustand der Portpins Wenn z B im Bit PINBO eine 1 steht dann ist der Pin HIGH dort liegt sozusagen eine Spannung an die entweder vom ATmega oder von au en kommt Eine 0 steht hier f r LOW PORTx Datenregister f r Portx Dieses Register wird verwendet um die Ausg nge eines Ports anzusteuern Bei den Pins k nnen ber PORTx die internen Pull Up Widerst nde aktiviert oder deaktiviert werden 1 aktiv Somit kann der ATmega selber 5V an einem Pin anlegen Da der Pin 2 des Port B PB2 der PWM Ausgang OC1B ist an dem der ATmega8 PWM Signale ausgibt wird dieser Pin hiermit EE EE les cmdlinetest c Zeile 84 als Ausgang definiert 55 Pin O von Port B PBO wird hingegen als Eingang definiert da an diesem Pin das Telefonh rerstatus Signal von der Telefonh rerstatus Schaltung angelegt wird und der ATmega8 dieses Eingangs Signal mit dem Pollingverfahren abfragen soll DDRB amp 1 lt lt DDB0 cmdlinetes
53. ieren von C Quelltexten angestos sen werden kann Es ist z B mit dem bereits erw hnten Programmer s Notepad m glich Unkomplizierter fand ich jedoch das Kompilieren der C Dateien mit Hilfe der Shell bash exe aus dem Cygwin Paket das eine UNIX Umgebung f r Windows bietet An dieser Stelle ist aber auch die Eingabeaufforderung cmd exe von Windows ausreichend Cygwin kann man unter http www cygwin com mirrors html herunterladen 42 4 4 HyperTerminal HyperTerminal erlaubt die Kommunikation zwischen Atmega8 und PC ber eine serielle Schnittstelle Es ist standardm ig auf jedem Windows PC installiert und auffindbar unter Start gt Programme gt Zubeh r gt Kommunikation gt HyperTerminal Das Programm muss f r eine Verwendung erst Konfiguriert werden Nach dem Start fragt das Programm zun chst nach einem Namen f r die neue Verbindung Im n chsten Fenster w hlt man bei Verbindung herstellen ber die COM Schnittstelle des PCs aus an der der ATmega angeschlossen ist Nach dem Dr cken auf OK ffnet sich ein neues Fenster in dem man weitere Einstellungen f r die Verbindung vornimmt Bits pro Sekunde 9600 Datenbits 8 Parit t keine Stoppbits 1 Flusssteuerung Kein Nach Best tigung dieser Einstellungen ist eine Verbindung aufgebaut Eine Kommunikation ber USB ist damit ebenfalls m glich Der VCP Treiber des USB Moduls bietet wie weiter oben bereits erw hnt virtuelle COM
54. ilter ist der in der Messtechnik am h ufigsten benutzte Filter Wie der Name schon sagt l sst der Tiefpassfilter tieffrequente Signale passieren und filtert h herfrequente Signale aus Frequenzen unter der Grenzfrequenz gelten als durch gelassene Frequenzen Die vier h ufigsten Tiefpassfilter Typen sind kritische D mpfung Bessel Butterworth und Tschebyscheff Quali Wechselschalter Ein Wechselschalter ist ein Schalter mit drei Anschl ssen die an den mittleren Kontakt angeschlossene Leitung wird je nach Schalterstellung mit dem einen oder anderen Schalteranschluss verbunden 95 E Quellenverzeichnis Literaturverzeichnis Ansch Homepage von Andreas Schwope http Awww andreas schwope de ASIC_s Glossar body_glossar html ATmega8 Datenblatt von ATmega8 http www atmel com dyn resources prod_documents doc2486 pdf ATMEL Die offizielle Website von Atmel http www atmel com AVRdude Dokumentation des AVRDUDE Programms C Programme AVRdude doc avrdude 4 3 0 avrdude pdf AVRfreaks Die inoffizielle AVR Website von AVR Freaks http Awww avrfreaks com AVRGCC AVR GCC Tutorial http www mikrocontroller net articles AVR GCC Tutorial AVRrisc Wolfgang Trampert 2003 AVR RISC Mikrocontroller 2 Auflage Franzis ISBN 3 7723 5476 9 AVR335 AVR335 Digital Sound Recorder with AVR and Serial DataFlash http www atmel com dyn resources prod_documents doc1456 pdf DesElek Design amp Elektronik http www design elek
55. imer Falls sich das Programm einmal aufh ngen sollte bietet ein Watchdog die L sung Der Watchdog enth lt einen separaten Timer der je nach eingestelltem Vorteiler von 0 hochzuz hlen beginnt Wenn nun eine vorher eingestellte Anzahl von Zyklen erreicht wurde l st der Watchdog einen Reset des Programms aus Um im Normalbetrieb einen Reset zu verhindern muss man den Watchdog Timer regel m ig wieder zur cksetzten In der Datei cmdlinetest c war noch kein Watchdog Timer enthalten und wurde daher von mir eingef gt 5 14 C Dateien des Projekts Prinzipiell werde ich nur die Quelltext Bereiche in den C Dateien von Procyon beschreiben die entweder von mir ge ndert oder eingef gt wurden oder f r die Beschreibungen rele vant sind Der komplette Quelltext ist auf der beigef gten CD ROM zu finden Die C Datei teltools c wurde extra f r dieses Projekt erstellt Sie enth lt die wichtigsten Funktionen f r den ATmega8 um mit dem W hlscheibentelefon kommunizieren zu k nnen 5 14 1 Datei cmdlinetest c Die Datei cmdlinetest c ist die ausf hrbare Datei in der sich die main Funktion befindet 5 14 1 1 Bibliotheken einbinden In der Datei cmdlinetest c und allen anderen C Dateien werden zun chst einige Teile der Bibliotheken AVR Libc und Procyon AVRlib eingebunden damit vorgefertigte Funktionen wie z B die Timer der Watchdog Timer usw im Programm genutzt werden k nnen 53 5 14 1 2 Interrupts deaktivieren Die
56. ine global h Header Datei die sich im selben Verzeichnis wie die ausf hrbare Datei des Projektes befindet In der Datei global h und nur hier wird die Taktgeschwindigkeit des Mikrocontrollers eingegeben 5 6 Erzeugen von Maschinencode Aus dem C Quelltext erzeugt der AVR GCC Compiler Maschinencode f r den Mikrocon troller Dieser Code liegt dann im Intel Hex Format vor Hex Datei Die Programmier software AVRDude liest diese Datei und bertr gt die enthaltene Information in den Speicher des Mikrocontrollers Um aus einem C Code eine Hex Datei zu erhalten muss man den AVR GCC Compiler mit den richtigen Optionen aufrufen Grunds tzlich stehen dazu zwei verschiedene Ans tze zur Verf gung Zum einen g be es hier die Verwendung einer Integrierten Entwicklungsumgebung Das sind unter Umst nden mehrere Programme die gemeinsam die Hex Datei erstellen Da sich die verschiedenen Entwicklungsumgebungen in ihrer Bedienung stark unterscheiden und auch nicht f r alle Plattformen zur Verf gung stehen tendiere ich zur zweiten M glichkeit eine Hex Datei zu erstellen Durch die Verwendung des Programms Make mit passenden Make Dateien Makefile 47 5 7 Makefile Ein Makefile ist eine Textdatei die festlegt wie ein oder mehrere Programme kompiliert werden Der Grundgedanke dabei ist dass gewisse Dateien in Abh ngigkeit zu anderen Dateien stehen W nschenswert ist daher eine M glichkeit die Abh ngigkeiten zwischen d
57. it Platine 2 ber einen 14 poligen Wannenstecker K2 verbunden Ein 10 poliger Stecker h tte auch ausgereicht ich habe mich aber trotzdem f r einen 14 poligen entschieden um ein Falschanschlie en mit dem 10 poligen Stecker der SPI Schnittstelle auszuschlie en 3 2 Lochrasterplatine 2 Die zweite Lochrasterplatine wird mit einer 9V Gleichspannungsquelle versorgt Aus diesen 9V bereitet ein Spannungsregler die 5V die an Platine 1 weitergereicht werden Die Sig nale des Telefons kommen an Platine 2 an und werden hier f r den ATmega8 aufbereitet Aus dem Telefonsignal wird mit Hilfe verschiedener Teilschaltungen das W hlsignal der Telefonh rerstatus und das Sprachsignal aufgedr selt Zus tzlich gibt es f r Platine 2 noch eine 40V Wechselspannungsquelle die f r das Bet tigen der Telefonklingel eingesetzt 29 wird Der Einsatz eines Relais mit zwei Umschaltern auf Platine 2 erm glicht gie Einspeisung der 40V f r das Telefonklingeln ohne die restliche Schaltung zu belasten pe Ok ee CO wre mut or Ch ee o SKS CSL ES eee Pic OC ee SE ER GEN ER O CNE Sitt ee eg qr EG WI s it e o oole 9 mir eege wa KRASS D Ox ecco Ox cote UIK LE Ox ce eo ee Cp z gt Lg te A 08 veg h i o 2 ei ES 9 id e Ox gt v4 s Ois ceo d vo eee gt CSR eee gt 00 OR eee eee E DW eee eee e L eee ee ee ee Ai eee ee eo ee Leoe eo Sg ee L teoo ee ee ee LK LA ee ee ee ee ee
58. krocontroller so zu verbinden dass es m glich wird die neueste Technik im Telefonie Bereich Voice over IP VoIP ver wenden zu k nnen Warum ist VoIP so interessant VoIP ist stark im Kommen nicht zuletzt deswegen weil es bereits von vielen Firmen f r den Privatanwender als kosteng nstige alternative ange boten wird 14 Prozent des deutschen Mittelstandes nutzen bereits Internet Telefonie VoIPinfo 10 02 06 Tendenz steigend F r den Anwender ist VoIP sehr kosteng nstig und ohne weiteren Aufwand mit dem vorhandenen Telefon und einem Internetanschluss praktizierbar Auch die deutsche Telekom hat angek ndigt das herk mmliche Festnetz bis sp testens zum Jahr 2012 vollst ndig durch IP basierte Technologie abzul sen Telt Motiviert hat mich au erdem mich mit den im Alltag in fast jedem Ger t versteckten Mikrocontrollern zu besch ftigen Der immerw hrende Trend zur Nostalgie hat mich auch ermutigt mich mit der alten Technik dem W hlscheibentelefon fr her Fernsprechtischapparat genannt kurz FeTAp auseinander zusetzen Die Verbindung von neuer und alter Technik spiegelt sich auch im Projektnamen VolP FeTAp wieder 1 2 Aufgabenstellung Ziel dieser Arbeit war es zun chst ein Hardware Interface zwischen einem W hlscheiben telefon und einem PC der unter Microsoft Windows XP l uft zu entwickeln Im Hardware Interface befindet sich ein Mikrocontroller der hier als
59. lektrische Felder zu mechanischen Schwingun gen anregen l sst Der Quarz verh lt sich elektrisch wie ein LCR Glied mit parallel geschaltetem Kondensator und weist somit eine scharf definierte und stabile Parallel und Serienresonanz auf Der Quarz eignet sich daher besonders als Referenz f r Schwingkreise etwa in Taktgebern DesElek RC Glied RC Filter Eine Kombination aus Widerstand R und Kondensator C die einen als Tiefpass bezeichneten Filter bilden Dieser Filter l sst nur Frequenzen unterhalb der Grenz frequenz ungeschw cht passieren Gebr uchlich sind solche Filter in der Elektronik k nnen aber auch in anderen Bereichen wie zum Beispiel Mechanik Akustik oder Hydraulik vorkommen Lexi Relais Relais sind elektromagnetisch bet tigte Schaltelemente mit geringer Schaltleistung Man verwendet Relais f r Steuerung und Regelungen Ein Relais besteht aus einer Spule mit Eisenkern Wird die Spule mit Strom durchflossen so bewirkt das sich bil dende magnetische Feld dass sich Kontakte ffnen und schlie en ELKO Ein monostabiles Relais f llt nachdem der Strom zum Bet tigen des Relais abgeschal tet wird zur ck in die Ausgangsstellung WIKI Schmitt Trigger Der Schmitt Trigger ist ein analoger Komparator mit Mitkopplung Er arbeitet also als Vergleicher f r zwei analoge Spannungen Er funktioniert als Schwellwertschal ter Durch die Mitkopplung besitzt er im Gegensatz zum Komparator jedoch unter schiedliche Ein un
60. lich zu machen Die Kommunikation zwischen Mikrocontroller und PC funktioniert ber USB Da der PC keinen Treiber erhalten hat ist es noch nicht m glich ber das Internet zu telefonieren Mit dem funktionierenden Hardware Interface ist es auf jeden Fall nicht mehr schwierig eine VoIP Telefonie zu erm glichen 86 A Beigef gte CD ROM A 1 Inhalt der beigef gten CD ROM Diplomtheorie Diplom_Altstaedter pdf Programme AVRDude HyperTerminal MProg WinAVR Quelltext a2d c a2d h avrlibdefs h avrlibtypes h avrproj_make buffer c buffer h cmdline c cmdline h cmdlineconf h cmdlinetest c cmdlinetest hex global h makefile pwmsw c pwmsw h rprintf c rprintf h teltools c teltools h timer c timer h uart c uart h voip bat vt100 c vt100 h 87 A 2 CD ROM 88 B Lizenz Der Inhalt dieser Arbeit ist unter einem Creative Commons Namensnennung NichtKommerziell Weitergabe unter gleichen Bedingungen 2 0 Germany Lizenzvertrag lizenziert Um die Lizenz anzusehen gehen Sie bitte zu http creativecommons org licenses by nc sa 2 0 de Im Folgenden ist eine Zusammenfassung des Lizenzvertrages in allgemeinverstandlicher Sprache angegeben greative commons DK ok D Namensnennung NichtKommerziell Weitergabe unter gleichen Bedingungen 2 0 Deutschland Sie d rfen den Inhalt vervielf ltigen verbreiten und ffentlich auff hren Bearbeitungen anfertigen Zu den folgenden Bedingung
61. muel D Stearns Don R Hush 1994 Digitale Verarbeitung analoger Signale 6 Auflage R Oldenbourg Verlag GmbH Munchen ISBN 3 486 22027 6 Teltarif de http www teltarif de i voip html 97 UniP VirUni WIKI Lexikon von www uni protokolle de http www uni protokolle de Lexikon Virtual University http www virtualuniversity ch telekom voip WIKIPEDIA http de wikipedia org 98
62. n Konfiguration des ATmega8 ATmega8 Lochrasterplatine 1 Best ckungsplan von Platine 1 Schaltplan von Platine 1 Filter Kurvenverlauf ISP Programmieradapter Modemkabel mit Sub D Stecker USB Interfacemodul DLP2232M Das Programm MProg Lochrasterplatine 2 Best ckungsplan von Platine 2 Schaltplan von Platine 2 Ursprungsform Telefonsignal Signale an den Eing ngen 3 schwarz und 2 rot reines Signal nach W hlimpuls Schaltung Signal nach Tiefpassfilter Signale an den Eing ngen 5 chw tz and 6 rot Ausgangssignal des Operationsverst rkers Beide Lochrasterplatinen sind miteinander verbunden PWM Rechtecksignal e ep Nicht invertierende PWM mit Tastverh ktnis 50 Nicht invertierende PWM mit Vergleichswert Z hlen der externen Interrupts Terminal Fenster beim Anrufen Terminal Fenster beim Angerufenwerden 10 11 13 13 17 18 19 24 25 26 27 28 30 31 32 35 36 36 37 38 38 40 66 67 68 75 81 82 91 D Glossar ALU Arithmetisch Logische Einheit Eine arithmetisch logische Einheit ist ein elektronisches Rechenwerk welches in Prozessoren zum Einsatz kommt Batch Datei Stapeldatei mit einer Folge einem Stapel Stapelverarbeitung von Anweisungen oder Befehlen die das Betriebssystem der Reihe nach abarbeitet Baudrate Die Baudrate ist die europ ische Bezeichnung f r bps d h Bits pro Sekunde die Ma zahl f r die Geschwindigkeit der bertragung von digitalen Dat
63. n der Regel zu starken Hochfrequenzensignalen f hrt die nicht nur diese sondern auch andere Schaltungen in der N he st ren k nnten RoboW 3 1 5 Betriebsspannung f r Analog Digital Wandler Die drei Anschl sse AVCC AGND und AREF des Atmega haben eine besondere Funktion Der Analog Digital Wandler des ATmega8 ben tigt eine eigene Versorgungsspannung die er ber diese drei Anschl sse erh lt Die Referenzspannung die am Pin AREF anliegt kann eine beliebige Spannung zwischen VCC und GND sein ber das Potentiometer P1 ist diese Spannung einstellbar In dieser Schaltung ist das Potentiometer auf 2 6 K Ohm eingestellt und erzeugt damit eine Refe renzspannung VREF von 2 45V Das analoge Sprachsignal das dann am Eingang des ATmega8 anliegt darf nur zwischen OV und AREF liegen 3 1 6 Mikrofon Schaltung Die Applikation Note AVR335 von Atmel AVR335 bietet haupts chlich die Vorlage f r die Mikrofon und Lautsprecher Schaltung auf Platine 1 Das analoge Mono Sprachsignal kommt normalerweise vom W hlscheibentelefon und soll f r die bertragung zum PC vom ATmega8 digitalisiert werden Um dies zu testen wurden auf Platine 1 zus tzlich ein Anschluss und Filter f r ein hier anschlie bares Mikrofon M1 21 angebracht Der Filter ist ein invertierender Verst rker der die schwachen Sprachsignale vom Mikrofon f r den ATmega8 verst rkt Im Schaltplan von Platine 1 ist die Mikrofon Schaltung gr n dargestellt Durch
64. nd durchgelassen Alle Frequenzen die h her als die Grenzfrequenz fg sind wie die PWM Frequenz werden vom Lautsprecher Filter herausgefiltert 68 5 14 6 Datei pwmsw c Der Timer 1 der immer von 0 auf 255 z hlt und dann wieder zur ck auf 0 ist f r das Erzeu gen vom PWM Signal notwendig Timer 1 wurde bereits in der Datei timer c initialisiert In der Funktion timerOverflow1 die Timer 1 alle 512 Takte aufruft wird zun chst der digitale Wert der letzten Analog Digital Wandlung direkt in das Vergleichsregister OCR1B geschrieben Daraufhin wird eine neue Analog Digital Wandlung angesto en die bis zum n chsten Aufruf der Funktion timerOverflow1 abgeschlossen ist Das 10 bit Ergebnis der Analog Digital Wandlung berechnet man mit der Formel ADC VREF ADC 2410 Der daraus entstandene Wert h ngt somit von der Referenzspannung VREF die am Pin AREF anliegt ab Au erdem wird in dieser Formel ber cksichtigt ob es ein 10 bit oder 8 bit ADC Ergebnis ist ADC PWM every 512 cycles void timerOverflowl void 10 bit digital speech signal U VREF ADC 1024 CET Awe 2 45 Aue 7 10124 conversion should be done but wait for conversion done ADIF flag active while ADCSRA amp 0x10 start new single conversion ADCSRA 1 lt lt ADSC pwmsw c Zeilen 45 58 Die Funktion pwmInit in der Datei pwmsw c setzt beim Initialisieren des PWMs lediglich
65. nd ist einfacher nachzuvollziehen und zu warten 5 2 Compiler Der AVR GCC ist ein kostenloser C Compiler mit dem man C Programme zu ausf hrbaren Programmen bersetzen kann die auf Mikrocontrollern der AVR Familie lauff hig sind An Sprachen versteht AVR GCC sowohl C als auch C 44 5 3 Entwicklungsumgebung Wie bereits in Kapitel 4 beschrieben gibt es f r Windows das Softwarepaket WinAVR das eine AVR GCC Entwicklungsumgebung bietet Der mitgelieferte Programmer s Notepad ist f r die Programmerstellung sehr gut geeignet und wurde auch von mir zum Entwickeln der Software verwendet 5 4 Bibliotheken 5 4 1 AVR Libc Die AVR Libc ist die gebr uchlichste Laufzeitbibliothek zum AVR GCC C Compiler welche den Zugriff auf die Mikrocontroller Hardware erheblich erleichtert Die AVR Libc ist kostenlos erh ltlich und f r nahezu alle Plattformen und Betriebssysteme geeignet Ein ausf hrliches AVR Libc Benutzerhandbuch wird unter http Awww linuxfocus org common src2 article352 avr libc user manual 1 0 4 pdf angeboten das alle in C verf gbaren Funktionen dokumentiert Bei Installation des Programms WinAVR wird die AVR Libc auf den PC kopiert und ist im Verzeichnis WinAVR AVR include avr verf gbar Die AVR Libc ist au erdem unter http savannah nongnu org projects avr libc erh ltlich Die Bibliothek wird verwendet indem man die n tigen AVR Libc Module wie folgt in den eignen Quelltext einbindet
66. nders herum kann am Ausgang die positive maximale Spannung gemessen werden Dies liegt daran dass durch den Differenzverst rker und die an schlie ende gro e Verst rkung schon eine sehr kleine Spannungsdifferenz ausreicht um den OP kippen zu lassen In dieser Betriebsart arbeitet der Operationsverst rker als Komparator Durch unterschiedliche Au enbeschaltungen des Operationsverst rkers lassen sich die unterschiedlichsten Funktionen realisieren beispielsweise Integrator und Differenzierer Addierer und Subtrahierer oder auch einfach nur Verst rkerschaltun gen mit einem vorher bestimmbaren Eingangs und Ausgangsspannungsbereich Diese Schaltungen werden auch heute noch verwendet um beispielsweise Regler Schmitt Trigger und Filter wie Hochpass oder Tiefpass aufzubauen WIKI Potentiometer Potentiometer sind regelbare Widerst nde Mit einem Drehknopf oder Schrauben zieher l sst sich der elektrische Widerstandswert ver ndern Pull Up Pull Down Das sind Widerst nde die die Pins eines Mikrocntrollers auf VCC Pull Up oder auf GND Pull Down ziehen ELKO 93 Pulsweitenmodulation PWM Die Pulsweitenmodulation PWM ist eine Modulationsart bei der eine technische Gr e z B elektrischer Strom zwischen zwei Werten wechselt Dabei wird das Tastverh ltnis bei konstanter Frequenz moduliert Ein PWM Signal wird allgemein ber einen Tiefpass demoduliert WIKI Quarz Schwingquarz Eine Kristallstruktur die sich durch e
67. nem D2XX Treiber und kopiert diesen bei Installation auf die Festplatte Verbindet man nun das USB Modul per USB mit dem PC so wird per Plug and Play Funktion nach einem Treiber gefragt Daraufhin installiert man den D2XX Treiber des Programms MProg Beim ffnen des Programms erscheint unten abgebildetes Fenster Im Bearbeitungs Mod kann man dann eine neue Programmier Vorlage erstellen die auch speicherbar ist Bl MProg Multi Device EEPROM Programmer Program Mode xj Fie Device Tools Help 322 s 2 2 paa Details USB Power Options EE Ee FT2232C Device Options Device Type Froo D C Bus Powered Side A fo milli Amps 2 Self Powered Hardware USB VID PID Froi Default DI e RS232 UART M USB Serial Number Control C 245 FIFO Vendor iD 40403 Productip ko 0 Serial Number Prefix 2 digits FT C CPUFIFO Use Fixed Serial Number OPTO Isolate M BM C Device Specific Options e pii Fixed Serial Number CS digits J High Current Wis USB Version Number fuse 2 0 D I Disable USB Serial Number pe sates Virtual COM Port Pull Down I0 Pins in USB Suspend USB Remote Wake Up C DON Direct J Enable USB Remote Wake Up M Plug amp Play FT232 Series Only Side B VV Enable Plug And Play Hardware RS232 UART M Product and Manufacturer Descriptor Strings C 245 FIFO Manufacturer Product Description C CPUFIFO km
68. ngBell cmdlineAddCommand p print receiver send a CR to cmdline input to stimulate a prompt emdlineInputFunc r 57 jf ser state wo il Run TRUE enable interrupts sei cmdlinetest c Zeilen 115 138 Sehr wichtig ist die darauf folgende Endlosschleife in der Funktion goCmdline die nur noch durch Interrupts oder dem Kommando exit im Termial Fenster unterbrochen bzw beendet werden kann In dieser Endlosschleife wird st ndig abgefragt ob Daten vom PC an den ATmega8 geschickt worden sind und ob diese ein vorher bekanntes Kommando darstellen Zuletzt wird in der Endlosschleife der Watchdog Timer mit Hilfe des Funktions aufrufs wdt_reset zur ckgesetzt main loop while Run pass characters received on the uart serial port into the cmdline processor while uartReceiveByte amp c cemdlineInputFunc cC run the cmdline execution functions cemdlineMainLoop reset the watchdog wdt_ reset cmdlinetest c Zeilen 140 155 58 5 14 2 Datei timer c In der Datei timer c werden die Timer 0 und 1 sowie die Externen Interrupts verwaltet In der Funktion timerInit werden zun chst drei verschiedene Funktionen aufgerufen die die einzelnen Interruptquellen initialisieren void timerInit void initialize extern interrupt INTO extInt initialize timer 0 and 1 timerOInit Amen Tas
69. nt overflow interrupt TIMER INTERRUPT HANDLER SIG OVERFLOWO ff iA a user Eeer denn ig Clerc execute dic tOO if TimerIntFunc TIMEROOVERFLOW_ INT TimerIntFunc TIMEROOVERFLOW INT timer c Zeilen 179 185 Die Funktionen disable_timer1 und enable_timer1 sind dazu da um den Timer 1 bei Bedarf ein und auszuschalten Der Timer 1 ist f r den Analog Digial Wandler und f r die Ausgabe des PWM Signals zust ndig Wird mit dem Telefon kein Gespr ch gef hrt so werden diese Funktionen nicht ben tigt Um diese Funktionen bei Bedarf auszuschalten wurden die Funktionen disable_timer1 und enable_timer1 eingef gt void disable timerl void disable counterl overflow interrupt TIMSK amp 1 lt lt TOIE1 void enable timerl void enable counterl overflow interrupt MSK i lt lt woO wimil s timer c Zeilen 121 132 62 5 14 3 Analog Digital Wandler Die analoge Sprache die beim Hineinsprechen in den H rer des W hlscheibentelefons ent steht muss f r die Weiterverarbeitung und das Versenden ber das Internet digitalisiert werden Der ATmega8 verf gt ber einen Analog Digital Wandler im Folgenden kurz ADC genannt mit 6 Eingangskan len ADCO bis ADC6 Hier werden analoge Signale in 10 bit digitale Werte umgewandelt die vom Atmega8 interpretiert werden k nnen Der ATmega hat beim Eingang des eigentli
70. nterschiede beschrieben 83 7 3 1 Protokoll H 323 Beim H 323 Protokoll wird f r den Verbindungsausbau ein Gatekeeper verwendet Zu seinen Aufgaben geh ren Dienste im Bereich der Anrufsignalisierung und steuerung Umsetzung von Adressen Zugriffs und Bandbreiten Kontrolle Die Kommunikation wird bei diesem Protokoll somit vom Gatekeeper gesteuert ELKO VolIP Software die den H 323 Standard verwenden NetMeeting GnomeMeeting OhPhone 7 3 2 Protokoll SIP Der gro e Vorteil von SIP Session Initiation Protokoll ist das dieses Protokoll alle Dienste wie HTTP SMTP MIME URL und DNS mit nutzt Statt einem Gatekeeper wird bei diesem Protokoll ein Proxy Server verwendet Bei diesem Protokoll steuert der Client die Kommunikation ELKO F r das eigentliche Telefongespr ch ist somit der Proxy Server nicht mehr notwendig Die Gespr chspartner senden sich ihre Daten direkt ber das Internet zu VolP Software die das SIP Protokoll verwenden X Lite Jajah Gizmo 7 3 3 VoIP Software F r diese Arbeit w re eine VolIP Software geeignet der man lediglich die IP Adresse des Gespr chpartners bergeben kann Eine aufw ndige Adress bersetzung er brigt sich dann Von den oben genanten VoIP Programmen unterst tzen dies folgende Programme X Lite NetMeeting 84 7 3 4 Datentransport Ist mit Hilfe eines der oben beschriebenen Protokolle ein Verbindung aufgebaut worden werden die Daten bei der bertragung
71. ogramms auf dem ATmega8 ausgel st Der Wechselschalter S1 bernimmt die Aufgabe bei Umschalten einen Reset am ATmega8 auszul sen Der ATmega hat zwar einen internen Pull Up Widerstand der den Reset Pin wieder gegen VCC zieht dieser ist jedoch sehr hochohmig und reicht unter Umst nden nicht aus Um den Reset Pin sicher wieder hochzuschalten empfiehlt es sich einen externen Pull Up Widerstand R1 zu verwenden der den Reset Pin mit VCC verbindet Zus tzlich sollte man noch einen Kondensator C1 zwischen Reset Pin und GND anordnen Dieser Konden sator sorgt daf r dass der Reset Eingang gegen ber Spikes und Glitches unempfindlich wird Der Kondensator C1 sollte f r diese Aufgabe nah am ATmega8 montiert werden Mikro 20 3 1 4 Externer Taktgeber Der ATmega8 wird mit einem aktivierten internen Taktgeber von 1 MHz ausgeliefert Leider ist dieser Taktgeber nicht 100 exakt Um nun einen exakten Takt zu erhalten und den ATmega8 au erdem schneller zu machen wird in dieser Arbeit ein externer Quarz X1 mit 8 MHz genutzt Zum Anschwingen des Quarzes werden die zwei Kondensatoren C3 und C4 verwendet Die zwei Pins XTAL1 und XTAL2 des ATmega8 werden mit den beiden Anschl ssen des Quarzes und jeweils mit einem der beiden Kondensatoren gegen Masse angeschlossen Der Quarz sollte genauso wie die beiden Kondensatoren m glichst nahe am ATmega8 platziert werden L ngere Leitungen k nnten n mlich wie eine Funkantenne fungieren was i
72. r 5 14 C Dateien des Projekts 5 14 1 Datei cmdlinetest c 5 14 1 1 Bibliotheken einbinden 5 14 1 2 Interrupts deaktivieren 34 34 34 34 34 36 39 40 41 41 41 42 42 43 43 44 44 44 45 45 45 46 46 47 47 48 48 48 49 51 51 51 52 52 52 52 53 53 53 53 54 5 14 1 3 Initialisierung 5 14 1 4 Datenrichtung bestimnen 5 14 1 5 Funktion goCmdline 5 14 2 Datei timer c 5 14 3 Analog Digital Wandler 5 14 4 Datei a2d c i 5 14 5 Pulsweitenmodulation 5 14 5 1 Genaue Erkl rung der Hardware puleweilenmodulation 5 14 6 Datei pwmsw c 5 14 7 Datei teltools c 5 15 Batch Datei 6 VoIP FeTAp in der Praxis 6 1 Ablaufprotokoll beim S nn 6 2 Ablaufprotokoll beim Angerufenwerden 7 Uberlegungen zur Weiterentwicklung 7 1 Treiber f r PC 7 2 Soundbibliothek 7 3 VOIP 7 3 1 Protokoll H 323 7 3 2 Protokoll SIP 7 3 3 VolP Software 7 3 4 Datentransport 7 3 5 Nach dem Datentransport 8 Fazit A Beigef gte CD ROM A 1 Inhalt der beigef gten CD ROM A 2 CD ROM B Lizenz C Abbildungsverzeichnis D Glossar E Quellenverzeichnis Literaturverzeichnis 54 55 57 59 63 63 65 66 69 70 78 80 80 81 83 83 83 83 84 84 84 85 85 86 87 87 88 89 91 ER 96 1 Einleitung 1 1 Motivation Die Motivation zu dieser Arbeit war alte und neue Technik miteinander zu vereinen Ein altes W hlscheibentelefon mit einem modernen Mi
73. r Installation des Programms WinAVR im Verzeichnis WinAVR bin avrdude exe 41 AVRDude ist wie bereits erw hnt in WinAVR enthalten man kann es aber auch unter http savannah nongnu org download avr avrdude 5 0 w32 zip separat herunterladen Die in dieser Arbeit entstandene Software wird mittels AVRDude Uber einen BSD Pro grammieradapter an der parallelen Schnittstelle LPT1 des PCs bertragen Bei Eingabe der folgenden Zeile in die Bash bzw Eingabeaufforderung wird die ber tragung des Maschinencodes Hex Datei auf den ATmega8 angesto en avrdude p m8 c bsd e U flash w cmdlinetest hex avrdude Aufrufen des Programms AVRDude p m8 Angabe des Mikrocontroller Typ s ATmega8 gt m8 c bsd Angabe des Programmierger tes hier BSD e Verursacht ein L schen des Atmega8 vor dem Neuprogrammieren U flash w cmdlinetest hex U bewirkt eine Aktion auf einen Speicher des ATmega8 in diesem Fall wird der flash Speicher ausgew hlt w gibt an dass der Speicher beschrieben werden soll und zwar mit der Datei cmdlinetest hex 4 1 2 Die Datei install_giveio bat F r die Ansteuerung von Parallelport Adaptern unter Windows XP wird ein spezieller Porttreiber give io mitgeliefert Der Porttreiber kann durch das Ausf hren der Datei install_giveio bat die beim Installieren von WinAVR in das Verzeichnis WinAVR bin install_giveio bat kopiert wurde installiert werden 4 3 Cygwin Es gibt verschiedene Programme mit denen das Kompil
74. r ausschalten Im Register ADCSRA muss man au erdem noch andere Einstellungen f r den ADC vorneh men Wie z B die Betriebsart mit der der ADC laufen soll Einfache Wandlung Single Conversion In dieser Betriebsart muss jede Wandlung neu gestartet werden Frei laufend Free Running In dieser Betriebsart wird eine Wandlung nach der anderen durchgef hrt 63 Hier wurde der Modus der einfachen Wandlung gew hlt eine neue Wandlung wird von der Software immer zu einem bestimmten Takt gestartet initialize a2d converter void adInit void ADCO is analog input ADMUX 0X00 sampling frequency 15625 Hz if 15625 lle 8 000 000 Sr Sil a single conversion takes 14 ADC cycles 13 32 416 gt one ad conversion lasts 416 cycles ADCSRA 1 lt lt ADPSO prescaler 32 INDICSINA I lt lt ADESZ prescaler 32 ADCSRA 1 lt lt ADEN activate ADC do a dummy readout first ADCSRA wait for conversion done ADIF flag active while ADCSRA amp 0x10 1 lt lt ADSC x do single conversion a2d c Zeilen 27 46 Mit den Bits ADPSO ADPS1 und ADPS2 des selben Registers kann man den Teilungsfaktor zwischen der Quarzfrequenz und dem Eingangstakt des Analog Digital Wandlers einstel len Der in dieser Software ben tigte Teilungsfaktor wird wie folgt berechnet Die Abtastfrequenz soll genauso wie die PWM Frequenz die im n chsten Abschnitt
75. r ein fertiges USB Interfacemodul IC3 von DLP Design das bereits einen FT2232 beinhaltet und zus tzliche f r dessen Betrieb n tige Bauteile wie z B ein 4 MHz Quarz Das Modul mit der genauen Bezeichnung DLP2232M realisiert einen zweikanaligen USB Umsetzer f r serielle und parallele Schnittstellen Abbildung 3 7 USB Interfacemodul DLP2232M Das USB Modul wird auf Platine gel tet und erh lt von dort auch die 5V Betriebsspan nung ber die Pins 17 18 und 19 Die Pins 22 23 24 und 25 des USB Moduls sind mit Masse verbunden Die Leitungen RxD Recive Data und TxD Transmit Data des USB Moduls werden bei der Verbindung mit den RxD und TxD Pins des ATmega8 gekreuzt Um vom PC aus mit dem USB Modul kommunizieren zu k nnen ist ein Treiber n tig FTDI Treiber sind kostenlos unter http www ftdichip com FTDrivers htm erh ltlich 27 F r die meisten Betriebssysteme sind hierbei zwei Treibervatianten erh ltlich VCP Treiber Virtuell COM Port Der VCP Treiber emuliert am PC eine normale serielle Schnittstelle COM Das USB Ger t kann damit vom PC als normales RS232 Ger t angesprochen werden D2XX Treiber Mit dem D2XX Treiber kann man ber eine DLL Schnittstelle direkt auf das USB Ger t zugreifen Das USB Modul kann viele Arbeitsmodi annehmen und muss daher zun chst f r die eigenen Bed rfnissee konfiguriert werden Dies wird mit dem Programm MProg vorgenommen Das Programm MProg funktioniert nur mit ei
76. r nicht OV bis 5V Das Sprachsignal befindet sich im Bereich zwischen 500mV und 1V und liegt im Bereich um die 5V Der Spannungsteiler bestehend aus den Widerst nden R29 und R30 halbiert die 5V die vom Spannungsregler kommen und addiert die so entstandenen 2 5V mit dem Sprach signal Das so entstandene Signal wird an den nichtinvertierenden Eingang 3 des Opera tionsverst rkers IC7 A weitergegeben Der Operationsverst rker wird hier als nichtinvertierender Verst rker Schmitt Trigger verwendet da er eine Gegenkopplung hat um eine definierte Verst rkungen zu erhalten Die Verst rkung wird durch das Gegenkopplungsnetzwerk R32 und R31 definiert Mit Hilfe des Signals am Ausgang 1 versucht er die Differenzspannung zwischen seinen zwei Eing ngen auf Null zu halten Die Ausgangsspannung wird auf den invertierenden Eingang 2 zur ckgef hrt Die Verst rkung erh lt man nach folgender Gleichung Verst rkung 1 R32 R31 Verstarkung 2 das Signal wird verdoppelt Das f r den ATmega verst rkte Sprachsignal befindet sich dann immer um die 2 5V und wird ber den Steckverbinder K5 12 von Platine 2 zu Platine 1 bertragen und dort an den Pin PCO des ATmega8 weitergeleitet 39 3 3 Verbindung der zwei Lochrasterplatinen In der folgenden Abbildung sind beide Lochrasterplatinen dargestellt Sie sind miteinander verbunden und alle m glichen Anschl sse sind belegt Abbildung 3 18 Beide Lochrasterplatinen sind mi
77. rch die Funktion tel_receiver erhaltene Telefonh rerstatus wird immer in der Variablen telreceiver festgehalten void tel receiver void CLL disable interrupts if PINB amp 1 lt lt PINBO if tel receiver up if telreceiver 0 if tel receiver was recently down if ring 1 Pf a cal el oe enable timeri e J aterki Conversei ion BO Ulee n stoo tel beTi ring 0 telreceiver 1 status tel receiver up else if tel receiver down disable timerl stop conversation f f UL teuer tens Sege aie Gy t 0 mumoer ecmoleres 1 y Og exit number dialing Humber completes 0 cmdlinePrintPrompt velrseeiwer 05 status tel receiver down sei enable interrupts teltools c Zeilen 134 166 72 Der Z hler countd in der Funktion timerOverflow0 ist daf r zust ndig dass das Telefon in einem bestimmten Rhythmus klingelt Ist nun das Telefonklingeln eingeschaltet soll dass Telefon genau 2 Sekunden klingeln und danach 1 Sekunde still sein um wieder 2 Sekunden zu klingeln ff nee AEN ee Aas cimes called ain a second void timerOverflow0 void if ring 1 if PIND amp 1 lt lt PIND7 if countd gt 976 PORTOS ECCERE countd 0 if PIND amp 1 lt lt PIND7 if countd gt 488 PORTD countd 1 lt lt PD7 0
78. rden jedoch das gew nschte Analogsignal nicht ver ndert wird Um eine Klangverschlechterung am Lautsprecher Ls1 durch die Gleichspannungskomponente zu vermeiden wird der Konden sator C18 verwendet 3 1 8 SPI Schnittstelle Die SPI Schnittstelle wird unter Anderem ben tigt um den Flash Speicher des ATmega8 zu programmieren und das ohne den ATmega aus der Schaltung herausnehmen zu m ssen Ein gro er Vorteil der SPI Schnittstelle ist au erdem ihre Geschwindigkeit F r das bertragen von Daten wird ein SP Programmieradapter ben tigt Dieser wird ber einen 10 poligen Wannenstecker K1 mit Platine 1 verbunden und ber den parallelen Druckerport an den PC angeschlossen Einen Programmieradapter kann man entweder fertig kaufen oder man baut sich selbst einen Eine Bauanleitung hierf r findet man im Internet z B unter folgendem Link http www roboternetz de wissen index php AVR ISP_Programmierkabel 24 Abbildung 3 5 ISP Programmieradapter F r die Belegung des 10 poligen Steckers gibt es keinen Standard Hier wurde der BSD Programmieradapter Brian Dean s Programmer http www bsdhome com avrdude verwendet der auch als Standard Einstellung beim Programm AVRDude das zum bertragen des Programms zum ATmega 8 verwendet wird eingestellt ist Die weitere SPI Schaltung auf Platine 1 muss sich dann nach dem gew hlten ISP Programmieradapter richten Der 10 polige Stecker auf Platine 1 wird lediglich mit 4 Pins MIS
79. rrupts 5 11 1 1 berlauf Timer 0 Der 8 bit Timer 0 wird beim Initialisieren in der Datei timer c aktiviert und bekommt den Vorteiler 64 zugeteilt der in der Header Datei timer h angegeben ist Der 8 bit Timer 0 hat eine Aufl sung von 256 und l st bei jedem berlauf einen Interrupt aus In Anbetracht des Vorteilers wird somit alle 16384 64 256 Quarztakte ein Timer berlauf Interrupt ausgel st der den normen Programmablauf unterbricht Es wird dann die zuge h rige Interrupt Routine aufgerufen 5 11 1 2 Externe Interrupts Wie weiter oben bereits erkl rt hat das W hlsignal eine ganz bestimmte Form In genauen Abst nden sinkt das Signal von 5V auf OV ab und zeigt somit die gew hlte Ziffer an Dieses Signal ist ideal f r die Verwendung von externen Interrupts Das Signal wird hierbei an den Pin PD2 INTO des ATmega8 gelegt Den ATmega8 kann man nun so einstellen dass er bei jeder Signalanderung an diesem Pin einen Interrupt ausl st und auch hier eine passende Interrupt Routine ausgef hrt wird 5 12 Pollingverfahren Der Telefonh rerstatus wird per Pollingverfahren abgefragt Das bedeutet dass in festge legten Zeitabst nden der Telefonh rerstatus abgefragt und in einer Variable gespeichert wird Damit diese Abfrage nicht zu h ufig geschieht und den Programmablauf nicht allzu sehr st rt wird sie nicht in der Hauptschleife des Programms platziert sondern in der Interrupt Routine des Timers 0 52 5 13 Watchdog T
80. se gew hlt so gibt das Terminal Fenster aus dass die Nummer komplett ist Es ist dann auch nicht mehr m glich weitere Ziffern hinzuzuf gen Sobald der Telefonh rer aufgelegt wird wird die Variable y wieder auf 0 gesetzt Hebt man dann den Telefonh rer wieder ab kann von Neuem ein W hlvorgang beginnen fi Timer function 488 times called in a second void timerOverflow0 void possibly the end of dialing a number if countb 50 if dial3 1 end of dialed number print_number print the dialed number diall 0 reset dial3 0 reset dialcount 0 reset warer 9 ie G7 3 Il Gy Ss ed EE N WE if y 12 dialed number complete 76 rprintf r nnumber complete r n cmdlinePrintPrompt muMloee Comoplece vy 0 send dialed number to pc sea 4 IJ CONNECTA enable interrupts teltools c Zeilen 101 130 print dialed number void print number void cli if dialcount 1 PEEN E E CAES if dialcount 3 EECHER SS disable interrupts the dialed number the dialed number enable interrupts is is teltools c Zeilen 217 264 77 Die letzte Funktion in der Datei teltools c print_receiver gibt immer den aktuellen Telefonh rerstatus im Terminalfester aus wenn man das Kommando p eingibt print tel receiv
81. t TOIEO im Register TIMSK gesetzt werden Aber auch hier ist der Interrupt trotzdem nicht aktiviert wenn das globale Interrupt Bit im Status Register nicht gesetzt ist 8 bit timterO for telefone functions void timerOInit void set prescaler timer0SetPrescaler TIMEROPRESCALE jf see cownceril to men TCNTO 0x00 enable counterl overflow interrupt wiss gt KOO initialize time registers timer0ClearOverflowCount timer c Zeilen 81 95 Timer 1 l uft im Phase Correct 8 bit PWM Modus der durch das Setzten des Bits WGM10 im Register TCCR1A angegeben wird Das gesetzte Bit COM1B1 im selben Register gibt an dass das PWM Signal am zweiten PWM Ausgang OC1B PB2 des ATmega8 ausgegeben wird Au erdem wird hierdurch auch der nicht invertierende PWM Modus gew hlt der in der Erkl rung der Datei pwmsw c n her erl utert wird Durch das Setzen des Bits CS10 im Register TCCR1B erh lt der Timer 1 den Vorteiler 1 Das bedeutet dass die volle Quarzfrequenz von 8 MHz an Timer 1 weitergegeben wird Timer 1 wird in dieser Datei dann als n chstes auf 0 gesetzt Und die Interrupts die durch Timer 1 entstehen werden zugelassen 60 16 bit timerl for speech adc pwm void timerlInit void PWM Output frequency Quarz Frequency Timer Prescale 2 8 Bit PWM 2 PWM Output frequency 8 000 000Hz 1 2 8 2 15625
82. t ausgelesen 5 14 5 Pulsweitenmodulation Das Sprachsignal das vom Gespr chspartner aus dem Internet kommt soll ber den ATmega8 an das W hlscheibentelefon geschickt werden Somit muss der ATmega8 die digitale Sprache f r das W hlscheibentelefon wieder analogisieren Da f r den ATmega8 kein eingebauter Digital Analog Wandler existiert muss diese Funktion durch eine Hardware oder Software L sung realisiert werden Die Pulsweitenmodulation PWM hat sich hierf r etabliert und bietet auch in diesem Fall die L sung Das digitale Signal wird analogisiert indem an einem Ausgabe Pin des ATmega8 Impulse mit voller Spannung und variabler Breite gesendet werden die dann mit der Lautsprecher Filter Schaltung gegl ttet werden woraus sich dann ein analoges Signal ergibt Mikro Grunds tzlich gibt es zwei Arten von PWM Robo Software PWM Vorteil Das PWM kann man auf jedem Ausgabe Pin des Mikrocontrollers anwenden Nachteil Das PWM wird per Software generiert und ist daher eher langsam Hardware PWM Vorteil Dieses PWM ist sehr schnell da die drei m glichen Hardware PWM Ausg nge nach Definition der Register Werte selbst ndig ablaufen und somit belastet das Hardware PM die Abarbeitung des Programms nicht Nachteil Die drei Hardware PWM Ausg nge sind bestimmten ATmega8 Ausgangs Pins zugeordnet und k nnen somit nicht auf beliebige Pins gelegt werden 65 An dieser Stelle habe ich mich f r das schnelle Hardware PWM
83. t c Zeile 88 Der Gesamte Port C wird als Eingang definiert da alle Ports f r den Analog Digital Wandler als analoge Eing nge fungieren Bisher wird allerdings nur der Pin PCO ADCO als Eingang f r ein analoges Signal verwendet DDRC 0x00 cmdlinetest c Zeile 92 Der ATmega hat zwei Pins PD2 und PD3 mit denen Interrupts ausgel st werden k nnen in diesem Fall externe Interrupts genannt INTO und INT1 wenn sich das Signal das von au en kommt an diesen Pins ver ndert Diese Eigenschaft ist z B f r das Signal das von der W hlimpuls Schaltung kommt hilf reich Jedes Mal wenn sich das W hlimpulssignal ndert wird im ATmega8 ein Interrupt ausgel st womit dann die W hlimpulse gez hlt werden k nnen Das W hlimpulssignal wird an den Pin PD2 des Port D des Atmega8 gelegt Hierf r muss der Pin PD2 allerdings als Ausgang definiert werden damit Interrupts ausgel st werden k nnen ATmega8 DDRD 1 lt lt PD2 cmdlinetest c Zeile 96 Zuletzt wird noch der Pin 7 von Port D PD7 als Ausgang definiert weil an diesem Pin das Signal vom ATmega8 ausgesendet werden soll das das Relais schaltet wodurch das Telefon dann zu klingeln beginnt DDRD 1 lt lt DDD7 cmdlinetest c Zeile 100 56 5 14 1 5 Funktion goCmdline In der main Funktion wird zuletzt die Funktion goCmdline die sich auch in cmdlinetest c befindet aufgerufen Beim Aufruf der Funktion
84. te 5 timer c Zeilen 55 67 Zum einen ist das der externe Interrupt INTO Wie weiter oben schon erklart soll durch ein externes Ereignis an Pin PD2 ein Interrupt ausgel st werden In der Funktion ext Int die diesen Interrupt initialisiert sind genauere Einstellungen enthalten Mit dem Register MCUCR MCU Control Register kann man dem ATmega 8 sagen dass er nicht nur beim Ansteigen der Spannung an Pin PD2 von OV auf 5V sondern auch beim Absinken von 5V auf OV einen Interrupt ausl sen soll was f r das Z hlen der W hlsignale hilfreich ist Setzt man das Bit INTO im Register GICR General Interrupt Control Register auf 1 dann ist der externe Interrupt INTO aktiviert Ist aber das globale Interrupt Bit im Status Register SREG nicht gesetzt so ist dieser Interrupt trotzdem nicht aktiv void extInt void trigger on any logical change on INTO MCUCR 0 MCUCR 1 lt lt ISCOO enable INTO GICR 1 lt lt INTO timer c Zeilen 70 78 59 Als n chstes werden die Timer 0 und 1 mit den Funktionen timerOInit und timerlInit initialisiert Dem Timer 0 wird in der Funktion timerOInit der Vorteiler 64 zugeteilt der in der Header Datei timer h eingetragen ist Timer 0 z hlt ein 8 Bit Register TCNTO mit jedem Taktsignal um eins hoch Dieses Register TCNTO wird zu Anfang auf 0 zur ckgesetzt Um nun Interrupts durch den Uberlauf des Timer 0 bei 255 zu erlauben muss das Bi
85. teinander verbunden 40 4 Verwendete Programme F r diese Arbeit wurde ausschlie lich Open Source Software verwendet Dieses Kapitel be schreibt alle Programme wobei das wichtigste WinAVR ist welches als erstes erl utert wird 4 1 WinAVR WinAVR ist eine gro e Sammlung von Open Source Tools f r die Atmel AVR Mikrocon troller Serie Das Programm enth lt unter Anderem den AVR GCC Compiler f r C und C die C Standardbibliothek AVR Libc inkl Dokumentation die Programmiersoftware AVRDude und den Editor Programmer s Notepad Der schnelle und komfortable Editor Programmer s Notepad diente mir als Entwicklungs umgebung Er bietet sehr n tzliche Funktionen wie z B Syntax Highlighting eine datei bergreifende Suche und die M glichkeit externe Tools einzubinden Die f r diese Arbeit verwendete WinAVR Version ist vom 20 07 2004 WinAVR 20040720 install exe Die wichtigsten Tools in dieser WinAVR Version haben folgende Versionen AVR GCC 3 4 1 AVR Libc 1 0 4 AVRDude 4 4 0 Programmer s Notepad 2 0 5 32 WinAVR kann man kostenlos unter http winavr sourceforge net herunterladen 4 1 1 AVRDude 4 4 0 Das in WinAVR enthaltene Programm AVRDude ist ein Kommandozeilen Programm zum up und downloaden des Flash Speichers und EEpoms des ATmega8 Au erdem k nnen damit Fuse und Lock Bits programmiert werden Es benutzt hierzu die SPI Schnittstelle Das Programm AVRDude befindet sich nach de
86. ter beim Angerufenwerden 82 7 berlegungen zur Weiterentwicklung In diesem Kapitel werden berlegungen angestellt wie dieses Projekt weitergef hrt werden k nnte 7 1 Treiber f r PC Der PC sollte einen eigenen Treiber erhalten damit er die Signale des ATmega nicht nur ber das Terminal Programm versteht Bei der bertragung der Sprache im Speziellen muss die Treibersoftware am PC per Pollingverfahren abfragen ob der Puffer im Speicher des ATmega8 voll ist Ist er voll wird der Inhalt des Puffers per USB an den PC bertragen So erh lt der PC 10 bit Rohdaten 7 2 Soundbibliothek Um die Soundrohdaten f r die VoIP bertragung aufzubereiten kann die Soundbibliothek Open Source Audio Library Project zu finden unter folgendem Link hilfreich sein http osalp sourceforge net 7 3 VoIP Der Begriff Voice over IP VoIP bezeichnet die Technik mit der Sprache ber IP Netzwerke bertragen werden kann Um eine IP Sprach bertragung zu erm glichen sollte berpr ft werden ob sich daf r eine bereits bestehende VoIP Software eignet Die zwei bekanntesten Protokoll Standards bei der IP Sprach bertragung sind H 323 SIP Diese Protokolle sind dazu da um zun chst mit Hilfe der Adresse des Gespr chspartners ahnlich Email Adresse die aktuelle IP Adresse herauszufinden und daraufhin eine Verbindung aufzubauen Im Folgenden werden diese beiden Protokolle bez glich der f r diese Arbeit relevanten U
87. tronik de elex ElekP ELEKTRONIK PROJEKT http www elektronik projekt de ELKO Das Elektronik Kompendium http www elektronik kompendium de Elektro Horst Elschner Albrecht M schwitzer 1992 Einf hrung in die Elektrotechnik Elektronik 3 Auflage Verlag Technik GmbH Berlin ISBN 3 341 00835 7 96 Hess Lexi LM324 L78S05 Mikro OPA2340 Quali Robo RoboF Schule Signal Telt Wolfgang Hess 1993 Digitale Filter 2 Auflage Teubner Studienb cher Stuttgart ISBN 3 519 16121 4 Lexikona http www lexikona de Datenblatt von vierfach Universaloperationsverst rker LM324 http pdf1 alldatasheet com datasheet pdf view 11666 ONSEMI LM324 html Datenblatt des 2A Spannungsreglers L78S05CV http pdf1 alldatasheet com datasheet pdf view 22636 STMICROELECTRONICS L78S05CV html Mikrocontroller Internetseite http Awww mikrocontroller net Datenblatt des zweifach einzelversorgten Rail to Rail Operationsverstarker OPA2340PA http pdf1 alldatasheet com datasheet pdf view 56765 BURR BROWN OPA2340PA html Lexikon von Qualitatsmanagement http Awww quality de lexikon Roboter NETZ Wissen Roboter Elektronik Mikrocontroller http www roboternetz de wissen Roboter NETZ Forum Roboter Elektronik Mikrocontroller http www roboternetz de Winfield Hill Paul Horowitz 2002 Die hohe Schule der Elektronik Teil1 Analogtechnik 7 Auflage Elektor Verlag ISBN 3 895 76024 2 Sa
88. u entnehmen dass bei Quarzen die maximale Fre quenz 8 MHZ sein darf wenn CKOPT unprogrammiert 1 ist und 16 MHz wenn CKOPT programmiert 0 ist ATmega8 Bei einem 8 MHz Quarz sollte CKOPT somit unprogram miert sein CKSELO sollte programmiert sein und gibt die Art des Quarzes an CKSEL3 CKSEL2 und CKSEL1 sollten unprogrammiert sein und geben an dass die Frequenz des Quarzes zwischen 3 und 8 MHz liegt SUT1 und SUTO sollten unprogrammiert sein Diese Fuse Bits geben an wie lange der Mikrocontroller beim Einschalten verz gert Mit dieser Einstellung wurde die k rzeste Verz gerungszeit gew hlt Um nun die Fuse Bytes auf den externen Quarz einzustellen programmiert man die Fuse Bytes mit dem Befehl write write lfuse 0 Oxfe write hfuse 0 0xd9 50 5 9 Timer Ein Timer ist ein Zeitgeber Er kann dazu verwendet werden Zeitspannen zu messen oder Zeitspannen bestimmter L nge zu erzeugen bzw Spannungspulse bestimmter L ngen zu erzeugen Der ATmega verf gt ber drei Timer Timer 0 8 bit Timer Timer 1 16 bit Timer Timer 2 8 bit Timer Ein 8 bit Timer z hlt aufw rts bis 255 um dann wieder bei 0 zu beginnen Bei jedem ber lauf von 255 auf 0 wird ein Interrupt ausgel st Ist eine Interrupt Routine gegeben wird diese jedes Mal ausgef hrt Timer 1 und 2 sind besondere Timer sie k nnen z B f r die Pulsweitenmodulation verwendet werden 5 10 Vorteiler Der Vorteiler dient dazu
89. und dem generierten PWM Signal aufzeigen 67 U V PWM Signal Timer Vergleichswert 2 B i KO Abbildung 5 3 Nicht invertierende PWM mit Vergleichswert 5V 2 5V F OV 0 In Abbildung 5 3 ist zun chst ein Tastverh ltnis von 80 und dann ein Tastverh ltnis von 20 gezeigt Ein Tastverh ltnis von 80 erh lt man wenn der Vergleichswert im Ver gleichsregister OCR1B den Wert 205 hat Wenn der Timer z B beim Hochz hlen den Wert 205 erreicht so schaltet der PWM Ausgang auf LOW Ein Tastverh ltnis von 20 erh lt man hingegen wenn der Vergleichswert den Wert 51 hat Wird am Telefonh rer nicht gesprochen so hat das Rechtecksignal ein Tastverh ltnis von 50 d h dass der PWM Ausgangs Pin periodisch gleich lang auf HIGH und auf LOW ge setzt wird siehe Abbildung 5 2 Dieses Rechecksignal wird an die Lautsprecher Filter Schaltung weitergeleitet Der Filter gl ttet das Signal insofern dass er die hohe PWM Frequenz herausfiltert und in diesem Fall dann die halbe Betriebsspannung von 2 5V Gleichspannung brig bleibt Das Sprechen in den Telefonh rer bewirkt eine nderung des Tastverh ltnisses Diese nderung wird vom Filter nicht herausgenommen und ergibt dann das erw nschte analoge Sprachsignal Ein Sprachsignal hat seine Hauptinformationen unter 3 kHz Somit ist die Grenzfrequenz fg des Lautsprecher Filters auf 4 kHz gesetzt Hierbei werden alle Frequenzen die niedriger als die Grenzfrequenz fg si
90. und haben keine Dateiendung 5 8 Fuse Bits programmieren 5 8 1 Externen Quarz verwenden Auf Platine 1 wurde ein externer Quarz angebracht der dem ATmega einen Takt von 8 MHz geben soll jedoch wird er noch nicht genutzt Noch immer arbeitet der ATmega8 mit seiner intern voreingestellten 1 MHz Taktfrequenz Um dies umzustellen muss man soge nannte Fues Bits Sicherungs Bits im ATmega8 programmieren Diese Fuse Bits beeinflus sen das Verhalten des ATmega8 auf grundlegender Ebene Mit ihnen kann man z B Ein 48 stellungen f r externe Taktgeber Reset Einstellungen etc beeinflussen Deshalb ist beim Programmieren der Fuse Bits besondere Vorsicht geboten denn wenn hier falsche Einstel lungen vorgenommen werden kann es passieren dass der ATmega8 von einer nichtvor handenen Taktquelle ausgeht und keine Reaktion mehr zeigt Der Mikrocontroller kann dann nicht mehr umprogrammiert werden au er man stellt ihm die geforderte Taktquelle zur Verf gung Fuse Bits k nnen programmiert oder unprogrammiert sein Eine 0 bedeutet hierbei pro grammiert und eine 1 unprogrammiert Dies kann verwirrend sein und leicht zu fal schen Einstellungen f hren weshalb die Programmierung der Fuse Bits besonderer Vor sicht bedarf An dieser Stelle ist der Fuse Bits Rechner von Mark H mmerling den er auf seiner Website anbietet hilfreich Er bietet die M glichkeit die zu programmierenden Bits auszuw hlen woraufhin dann der ben ti
91. werden an der Bit Zahl des internen Datenbusses unter schieden Es gibt 4 bit 8 Bit 16 bit und 32 bit Diese Bit Zahl kann als die L nge der Daten interpretiert werden die der Mikrocontroller in einem Befehl verarbeiten kann 11 2 2 1 Auswahl Mikrocontroller Modell Der Mikrocontroller sollte f r diese Arbeit idealerweise folgende Voraussetzungen erf llen Gute Beschaffbarkeit und geringer Preis Handliche Bauform ein Mikrocontroller mit zu vielen Pins Beinchen ist schwieriger zu handhaben Flash ROM der Mikrocontroller sollte mindestens 1000 mal neu programmiert werden k nnen In System Programmierbarkeit ISP man ben tigt hier kein teures Programmierger t und muss den Controller zur Programmierung nicht aus der Schaltung entfernen Kostenlose Software verf gbar Zur Zeit werden diese Anforderungen sehr gut von den 8 bit AVR Mikrocontrollern der amerikanischen Halbleiter Firma Atmel erf llt Diese Mikrocontroller mit RISC Architektur besitzen eine zweistufige Pipeline die es erm glicht die meisten Befehle innerhalb eines einzigen Prozessortaktes auszuf hren Die Mikrocontroller von Atmel haben gegen ber einer normalen CPU 32 x 8 Register anstatt 4 Diese 32 Allzweckregister sind f r den allgemeinen Gebrauch Sie sind alle direkt mit der Arithmetischen Logischen Einheit ALU verbunden was erlaubt mit einer einzigen Anweisung auf zwei unabh ngige Register zuzugreifen und das in nur einem
92. zu bet tigen werden kurzzeitig 40V Wechselspannung auf die 9V Gleichspannung gelegt Wie bereits beschrieben werden die 40V durch das Schalten der Relais Schalter der Telefonschaltung zugef hrt 3 2 6 Telefonanschluss Das Telefon wird ber den Steckverbinder K6 mit Platine 1 verbunden Es wird konstant mit der 9V Gleichspannungsquelle versorgt Soll das Telefon klingeln schaltet das Relais und es werden 40V Wechselspannung zus tzlich in den Telefon Stromkreis gespeist 3 2 7 Telefonsignalverarbeitung Wie in Kapitel 2 1 erw hnt hat das Telefon eine Leitung die alle f r das Telefonieren relevanten Signale enth lt Ein Grossteil der Schaltung auf Platine 2 dient dazu aus dieser Leitung die W hlsignale den Telefonh rerstatus und die Sprachsignale heraus zu filtern Die einzelnen Zust nde sind hierbei eindeutig auseinanderzuhalten 3 2 8 Operationsverst rker Um die Telefonsignale f r den Atmeag8 aufzubereiten werden auf Platine 2 zwei Opera tionsverst rker mit der genauen Bezeichnung OPA2340PA OPA2340 IC6 IC7 verwendet Mit Hilfe von zwei 8 poligen IC Sockeln werden diese auf die Platine gel tet Jeder OPA2340 hat zwei Operationsverst rker integriert die im Schaltplan durch A und B IC6 A IC6 B gekennzeichnet sind Als Betriebsspannung ben tigen die OPA2340s 5V Im Folgen den werden die einzelnen Einsatzgebiete erkl rt 3 2 9 W hlimpuls Schaltung Die W hlimpuls Schaltung ist im Schaltplan der Platine 2 gr

Download Pdf Manuals

image

Related Search

Related Contents

DELL Latitude E5430  Examen PER Murcia 0610_b  KRAUS KBU25 Installation Guide  Jobs d`été    Omega Engineering PCI-DIO96 User's Manual    PKZIP 6.0 Command Line User`s Manual    manual en español - El Mono Vapeador  

Copyright © All rights reserved.
Failed to retrieve file