Home

Mikrocontroller-Einstieg mit myAVR

image

Contents

1. Das Steuerregister Das in Abbildung 51 bereits abgebildete Steuerregister des Komparators bietet zahl reiche Optionen zur Steuerung des Kompa rators So kann er durch Setzen des Bits 7 wie die UART Sender Empfanger ein und ausgeschaltet werden Durch Bit 6 ist die Umschaltung zwischen einer externen oder der internen Referenzspannung fest 1 22 V m glich Die Auswertung von Bit 5 erm glicht es den aktuellen Ausgangswert des Komparators auszulesen ELVjournal 6 06 Und da wir den Komparator auch in der Interrupt Vektortabelle als Interrupt Quelle finden zeigt Bit 4 des Steuerregisters an ob ein Komparator Interrupt Ereignis vor liegt oder nicht So kann der Komparator bei entsprechender ISR einen Interruptausl sen sofernman ber Bit 2 des Steuerregisters diese Betriebsart freigibt und ber Bit 1 und 0 das Interrupt Ereignis definiert Interruptbei jedem Wechsel des Kompara torausgangs bei fallenderoder bei steigender Flanke In unserem folgenden Pro grammierbeispiel wollen wir den Komparator dazu nutzen zwei analoge Spannungen an AIN 0 und AIN 1 zu berwa chen und wenn die Spannung an AIN 1 die an AIN 0 ber steigt eine LED zu schalten Dazu lassen wir die Interrupt M glichkeit wieder au en vor Istwert und berwachen den Zustand des Bits 5 m Komparatorregister ACSR im Polling Be trieb hnlich unserem Vorgehen bei der se riellen Daten bertragung Als Spannungs quellen nutzen wir prakti
2. Abbildung 48 hnelt der Empfangsroutine hier wird aber das Bit 5 des Registers USR UCSRA abgefragt be vor der Inhalt des Zwischenregisters in das Datenregister und damit an den Sender ge geben wird Die zu sendenden Daten werden Byte f r Byte ber das Hauptprogramm in das Zwischenregister geladen und hier eines nach dem anderen ber R cksprung zum Unterprogramm putChar gesendet Wollen wir uns ansehen wie das prak tisch funktioniert Das Programm Das einfache Programm zur Ausgabe eines Wortes ber die serielle Schnittstelle ist schnell erkl rt da wir alle wesentlichen Bausteine ja bereits kennen Der Quellcode Abbildung 49 f r unser einfaches Sendeprogramm zeigt dass in der Vektortabelle au er dem Power on Reset keine Interrupt Quelle genutzt wird da wir ja das Polling Verfahren zur Abfrage der Sendebereitschaft verwenden Die Initialisierungsroutine wird hier er ganzt durch das Setzen des Registers UCR UCSRB hier wird wie beschrieben der Sendebaustein aktiviert Danach erfolgt das Generieren der Baudrate Im Hauptprogramm finden wir die be schriebenen Routinen zum Aufrufen der auszugebenden Zeichen ber das schlie lich folgende Ausgabe Unterprogramm putChar Kompilieren linken und bren nen wir das Programm nun wie ublich ber das Parallelkabel in unseren AVR Erst 74 wenn das abgeschlossen ist verbinden wir eine serielle Schnittstelle des Rechners COMx ber das beschrie
3. POUER ON RESET Int Interrupt Int1 Interrupt Toe Compare Match Tce Overtlow TEL Capture TCi Compare Match A TCi Compare Match B TCi Overflow TCO Overflow SPI STC Serial Transfer Complete UART Rx Complete UART Data Register Empty UART Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TUI 2 Serial Tntertace Store Program Memory Ready Stack Initialisierung Inie Staekpointer USR UCSRE O0x04 TZEN Bit3 TX aktivieren Baudrate 9600 einstellen Baudrate ins Register JSR UGSRASOEDE UDRE BIES warten bis UPR bereit Ausgahe zur ck zum Hauptprogramm Bild 49 Der Quellcode f r die serielle Daten bertragung des Wortes TEST an den PC 73 PC Technik v serielle Verbindung Bild 50 Unser Text ist im PC angekommen Er wird ber das Terminal Text programm des Byte Controlcenters ausgegeben TEST TEST TEST TEST TEST 00 OD meee 90 gt w oe Cc 000000 4 Ow 5 oo niahalslelabelalalalelalelelalelsiealsla 9o gende R cksprungbefehl ignoriert und es erfolgt das Einschreiben der Daten die sich im UDR Register befinden in das Zwischenregister r16 Daten senden Ganz hnlich l uft das Senden ab Der UART wird durch das Eintreffen eines Bytes im Datenregister dazu aufgefordert dieses auch zu senden aber erst wenn das Senden des vorhergehenden Bytes abge schlossen ist Die zugeh rige Polling Rou tine putChar
4. hier als Beispiel rib Programm so lange unterbrochen werden bis das erwartete Ereignis eintritt Solange kehrt das Polling Programm immer wieder zur Abfrage zur ck Im ung nstigen Fall k nnen aber dadurch weitere Verarbei tungsaufgaben des Controllers etwa eine Ausgabe aufeinem Display gest rt werden bzw ganz ausbleiben Und hat man das Abfrageprogramm als Unterprogramm eingebaut kann es bei zeitkritischen Ab l ufen durchaus geschehen dass das Pro gramm gerade noch woanders arbeitet wenn z B ein kurzer Steuerimpuls eintrifft Der kann dann schlichtweg vom Programm bersehen werden mit wom glich schlimmen Folgen Also muss man hier einen anderen Weg gehen um effektiv zu programmieren man l sst das Programm nicht dauernd ein bestimmtes Ereignis abfragen sondern steuert das Programm durch das Eintreffen des Ereignisses selbst Dabei kann das Programm an jeder belie bigen Stelle das muss man ausnahmsweise nicht vorher festlegen bei Eintreffen des Ereignisses unterbrochen und ein Unterpro gramm f r die Verarbeitung des Ereignisses aufgerufen werden Ist das erfolgt setzt das Hauptprogramm an der Stelle fort an der es unterbrochen wurde Genau das bedeutet Interrupt Steuerung Die besteht aus immer den gleichen Elementen e E E T Tinten Timer Wing TI E A E Inte Timer 1 Vergleich a T E S intern Timer 0 Uberuf J Extern RX UART Handshake receive 2 mw item UDR UAR
5. Der entscheidende Unterschied zu einer reinen ELVjournal 2 06 Zentraleinheit CPU Prozessor wie wir sie etwa vom PC her kennen ist die Aus stattung mit weiteren Bausteinen wie Spei cher analogen und digitalen I O Baugrup pen Schnittstellencontrollern Timern usw Naturlich darf man die Rechenleistung und den Befehlsumfang der kleinen Zent raleinheit eines solchen Controllers nicht mit der einer PC CPU vergleichen f r die Ausf hrung der f r diese Controller spezi fischen Aufgaben sind Rechenleistung und Befehlsumfang hieraus leitet sich auch der Begriff RISC Prozessor ab Reduced Inst ruction Set Computer eingeschrankter Befehlssatz jedoch ausreichend Nur durch diese Architektur sind Mikrocontroller Baugruppen extrem kompakt und strom sparend aufzubauen man ben tigt kaum Peripherie Da der Befehlsaufbau mit nur wenigen einfach strukturierten Befehlen Tabelle 1 am Ende des Artikels zeigt eine Kurz bersicht aller von den AVR Mikro controllern unterst tzten Befehle hierauf kommen wir im Verlauf der Serie zur ck erfolgt konnte man den Rechnerkern auf hohe Rechengeschwindigkeit optimieren so sind die Controller auch bis hin zu Echt zeitaufgaben einsetzbar Dazu kommt eine auf die Controller Architektur speziell zu geschnittene Programm bersetzung und Bearbeitung die die Abarbeitungs geschwindigkeit von Befehlen noch mals erh ht RISC Prozessoren sind in der Welt der Ein Chip Rechner die
6. SE u eee L LCD data INT Routine werden auch wenn dies nicht sehr schnell erfolgt Diese geringe Lese und Schreib geschwindigkeit ist bei der Konzipierung des Programms zu beachten Deutlich schneller arbeiten die moderns ten nicht fl chtigen Speicher die Flash Speicher Sie sind schnell behalten ihre Daten auch beim Abschalten der Span nungsversorgung und sind immer wieder beschreibbar wenn auch nicht so oft wie die EEPROMs ber ihre serielle Schnitt stelle eignen sie sich hervorragend f r die Programmierung des Controllers etwa von einem PC aus Bis auf das ROM finden wir alle bespro chenen Speicherarten in unserem AVR AT mega8 wieder wie Abbildung 7 beweist Das soll es zun chst in puncto Hard ware gewesen sein widmen wir uns nun der Software bzw der Programm Entwick lungsumgebung Die Entwicklungsumgebung SiSy Bevor wir die eigentliche Entwicklungs umgebung betrachten m ssen wir uns den blichen Gang der Programm Produk tion vergegenwartigen die folgenden Schritte werden uns immer wieder beglei ten Zuerst wird der Quellcode in einem geeigneten ASCII Text Editor geschrie ben Hiererfolgt die Zusammenstellung der einzelnen Befehle von der Initialisierung des Controllers ber die Zusammenstellung der Unterprogramme bis zum Abschluss des Programms Dieser Quellcode muss anschlie end in die so genannte Maschinensprache ber setzt werden einen Code der vom Rech
7. 0032 0033 0034 0035 Dos 0037 Start Power ON Reset 0038 main ldi ri6 108 RAMEND 0039 out SPL E16 0040 ldi Et hi8 RAMEND Funktion ausgegeben Schaltung Prozessor Sprache Assembler Dat um 02 04 2004 Version 258 Dipi ATmegaS 3 6864 MHz d Interrupt vector rjmp main reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti PD2 Speaker PD3 PDS an LED Ein Register wird inkrementiert und verz gert an Port D Ing Pad Alexander Huwaldt Beschreibung POWER ON RESET IntO Interrupt Inti Interrupt TC2 Compare Match TC2 Overflow TC1 Capture TC1 Compare Match A TC1 Compare Match B TCi Overflow TCO Overflow SPI STC Serial Transfer Complete UART Rx Complete UART Data Register Empty UART Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TVI I C Serial Interface Store Program Memory Ready Bild 9 Im Editorfenster l sst sich der Quellcode bersichtlich anzeigen und editieren Grundger st geladen wie wir noch sehen werden Je nach Programm sind nur noch die einzelnen Sprungbefehle einzu tragen also Befehl plus Operand sofern n tig mair Initialisierung und Haupt programm Der Interrupt und Reset Ta belle folgt das Hauptprogramm main Abbildung 11 Dieses beginnt immer damit dass der Controller bei einem Reset oder beim Einschalten auf definierte Bedingungen zur ckgesetzt wer
8. 1 1 Bit 0 0 dabei wird der vorhe m ENgnogo 209000 E55 rige Wert gel scht und schlie lich n das en MCUCR Kontroll Register geladen Abschlie end wird mit sei die generelle Interrupt Freigabe erteilt Die ISR finden wir ganz am Schluss unter EXT _ 0 Nach der Sperrung Funktion Externer Taster als Interruptquelle Schalter LEY ein achaltung Taster an PR 2 LEP an FPE O anderer Interrupts wird ber Port B 0 die LED eingeschaltet danach Frozssor AT3054433 3 6864 MHz werden die Interrupts freigegeben SD See Pees eM Dee und der reti Befehl f hrt wieder Dat urn ee US 20u04 wersion riem Dipl Ing Fad Alexander Huwaldt zur ck ins Hauptprogramm Nun das Ganze bersetzen und auf den ATmega auf dem myAVR Board bertragen die beiden betei listen Ports entsprechend verdrahten Reset And Interrupt vectors a ae eee oi ees Abbildung 34 und das Programm r mp EXT O Int Interrupt ausprobieren rer 7 Tat 1 Interrupt Wenn die LED nach dem Dr cken teti 1 1 Capture des Tasters aufleuchtet haben Sie aa ele ae soeben Ihr erstes Programm mit Inter reti gt Tl1l Overtlow 1 i TCO pioi rupt Steuerung erfolgreich getestet reti SPI STC Serial Transfer Complete Vorteil Sie k nnen das Ganze durch reti UART Rx Complete ein eigentliches Hauptprogramm er reti UART Data Register Empty g nzen W hrend dieses l uft lost die zer aan DE Patel aos Bet tigung des Tasters einen In
9. Sprache Datum Version ATmegas Assembler 24 04 06 So ee LB DapL 3 6664 MHz Reset and Interrupt vector rjmp main reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti Ing Pad A Huwaldt amp ELV Bild 23 Der komplette Quelltext unseres Pro gramms LEDON Beschreibung POWER ON RESET 7 IntO Interrupt Inti Interrupt ale TGE STEL TGA STG TGA TCO 7aPI Compare Match Overflow Capture Compare Match A Compare Match B Overflow Overflow STC Serial Transfer Complete UART Rx Complete UART Data Register Empty UART Tx complete ADC EEPROM Ready Analog Comparator ZTEI Conversion Complete I C Serial Interface Strore Program Memory Redy Power ON Reset ldi out ldi ri6 lo8 RAMEND SPL r16 r16 hi8 RAMEND SPH r16 DDRB O ri 0b00000001 out PORTB r16 rjmp mainloop Eintragen des Projekttitels und weiterer projektbezogener Angaben in den Pro grammkopf Abbildung 22 Danach wird das Programm Grundger st um die besprochenen Programmteile zur Initialisierung und zum Hauptprogramm er ganzt Der Quellcode des Programms sieht dann aus wie in Abbildung 23 gezeigt Sehr angenehm f r den Einsteiger ist dass jede Quellcodeeingabe von einem abschalt baren Assistenzfenster begleitet wird das alle wichtigen Parameter erl utert und z B auch Vorschlage fur die Registerwahl macht siehe auch Abbildun
10. auf den out Befehl Dazu ist wieder ein allgemeines Register mittels Idi Befehl mit den gew nschten Ausgabedaten zu laden und dann folgt die Ausgabe des Register Inhalts an Port BO Je nachdem ob wir das Bit 0 aufnullodereins setzen wird spater die angeschlossene LED an Ausgang BO ein oder ausgeschaltet Wir sollen die LED einschalten ldi r16 0600000001 out PORTB r16 57 PC Technik Diagrammvorlagen AYR Assembler Grundgerust EGG 151 Blinklicht BSP 152 Beep ESP 153 Komparator BSP 154 Interrupt ESP 155 UART senden BSP 156 UART empfangen BSP 157 Timer BSP 158 ADC BSP 159 Hetalldetektor BSP 1510 AVA C Grundgerust EGG 161 In Out BSP 161 Blinklicht BSP 162 Beep BSF 163 Interrupt ESP 165 UART senden BSP 166 keine Yorlage verwenden den Ass stenten benutzen Info Abbrechen Bild 18 Es gibt in der Software schon zahlreiche vorgefertigte Teilpro gramme hier wird zun chst keine Vorlage verwenden angew hlt Dies bildetunser erstes Hauptprogramm Die beiden Zeilen werden also als Quellcode im Programmteil Mainloop eingetragen Sollte das Ganze funktionieren schaltet der Controller sobald alles assembliert gelinkt und auf den AVR gebrannt ist die LED ein sobald die Betriebsspannung an myAVR angeschaltet ist Das werden wi r jetzt testen Zuvor rufen wir uns aber noch einmal komplett ins Ged chtnis was wir bis jetzt getan haben Das ka
11. der Hinweis auf weitere Initialisierungsdefinitionen neben Neues Projekt erstellen Projektdateiname mit Vorlagen Verzeichnis Projekt berschreiben der Grundinitialisierung des Con trollers Genau hier geh rt nun die Port Konfiguration ber das Steu erregister DDRB hinein Jedes Bit dieses Steuerregisters steht f r die Datenrichtung der einzelnen I O Lines wobei logisch null den Pin als Eingang logisch eins hingegen den Pin als Ausgang definiert F r die Konfiguration stehen zwei Befehle zur Verf gung die sich in ihrer Wirkung unterscheiden Der out Befehl konfiguriert im mer alle Bits des Ports auf einmal einzelne Bits Pins sind nicht differenzierbar Hier kann es also Bitte wahlen Sie ein Vorgehensmodell AVA Vorgehensmodell ane Programmierung case gt r atb esa b default break printf in tc Idi Register Konstante und geben die Port Konfiguration des allgemeinen Registers mittels des out Befehls an Port B aus out Ziel Quelle ldi r16 0600000001 out DDRB rl6 Konfiguration mit dem sbi Befehl Deutlich eleganter gestaltet sich die Konfiguration mit dem sbi Befehl Hier wird das Steuerregister direkt angesprochen ein Bit direkt 1m I O Register Port gesetzt wobei die Bits B1 bis B7 unbeeinflusst bleiben sbi DDRB 0 Programm Programm Das Yorgehensmodell Programmierung bietet die M glichkeit der Erstellung und Generierung von
12. doch zun chst einmal aus wie S e andere Ports entsprechend als Ausga beports programmieren oder gar mehrere LEDs gleichzeitig zum Leuchten bringen Schon nach kurzer Zeit gehen einem die kleinen Programmieralgorithmen in Fleisch und Blut ber und man ist gespannt auf die n chsten Aufgaben 59 PC Technik SiS f r Windows beinpiele 1 4aam spr Pbk Werkzeug Debbie Aaina Anad Draers Pedia AHF 4 Schne iizugrit Programmieren mit SiSy in teram Disg ren k nnen See Prcepe serene een ep keine Taste Mikrocontroller Einstieg mit myAVR Teil 3 Keine Angst vor dem Einstieg in die Welt der Mikrocontroller Programmierung Die myAVR Sets enthalten alles Notige fur den schnellen und fundierten Be ginn der Programmierer Karriere Experimentier Board mit ATMEL Controller Lehrbuch Softwarepaket Kabel s mtliches Zubeh r Im dritten Teil unserer Serie zum Einstieg in die AVR Programmie rung fahren wir mit der I O Programmierung anhand eines weiteren Bei spiels fort und befassen uns mit dem Thema Interrupt Steuerung Rein wie raus die I O Ports Nachdem wir uns in der letzten Ausgabe sehr ausf hrlich der Funktion der I O Ports des AVR Controllers gewidmet hatten ist uns die Aussage noch gegenw rtig dass es ber das Steuerregister DDRx m glich ist festzulegen welcher Pin als Eingang oder als Ausgang wirken soll ber das Register PORTX erfolgt entsprechend die Ausgabe ber PINx die Eingabe vo
13. hier zur Auswertung ELVjournal 6 06 get har shis USR T rjmp getChar ir ri UDR ret warten putchar shis USR S rjmp putchar out UDR ci ret Warten Jusgabe UCSRA O0Ox0B REC bis UDR Daten einladen zur ck zum Haupt progr art USR Bit 5 bis UDE bereit Bit bereit UDEZ zur ck zum Haupt pr oyr arm Bild 48 Das Unterprogramm der Senderoutine im Polling Modus bereit Abbildung 47 zeigt die zugeh rige Programmierung ber die getChar Rou tine Zeichen via Polling empfangen Der Befehl sbis ist wieder einer der bereits Funktion Schnittstelle Schaltung Prozessor Sprache Assembler Datum 2 04 2004 version e ee DIE ATmega 3 6564 MHz Reset and Interrupt vector rjmp main reri reri reri Eeri Peta reti Peta reti ret reti reti reti reti reti Eeti reti reti i Scart main Power OM Reset ldi ELE out SiH ldi Eim 108 RAMEND out Salo ee E iG abi UCSHE 3 ldi rin 23 out UBRRL 16 ldi ELR KTA reall putchar ldi oii HEI reall putchar ldi im ek reall putcChar ldi cin iy reall putchar ldi ELG Ke reall putchar mainloop HiS RAMEND ri mainloop UCSRA 5 putchar UDR vce bekannten Skip Befehle Er sorgt fiir die Abfrage des Zustands im Register USR UCSRA Ist das Bit 7 dort gesetzt also der Empfang abgeschlossen wird der fol sendet Test mit S600Baud per serieller Ing F d Alexander Huwaldt Beschreibung
14. myAVR Sets enthalten alles Notige fur den schnellen und fundierten Beginn der Programmierer Karriere Experimentier Board mit ATMEL Controller Lehrbuch Softwarepaket Kabel samtliches Zubehor Im vierten Teil unserer Serie zum Einstieg in die AVR Programmierung wenden wir uns den integrierten Timern des AVR zu und nutzen diese zur Tonerzeugung Teilen und Z hlen der Timer Dass Z hler ein zentraler Bestandteil nahezu jeder digitalen Schaltung sind ist nichts Neues Sie sorgen u a daf r dass zu einer bestimmten Zeit ein bestimmtes Ereignis ausgel st wird Sie ben tigen einen Takt dessen Frequenz um einen be stimmten Faktor geteilt wird so entsteht eine zeitlich bezogene Steuerung ein so genannter Timer Auch die Timer des AVR Controllers funktionieren auf dieser Basis Und sie haben bei den meisten Aufgaben die der 12 Controller bekommt eine Menge zu tun um zeitliche Abl ufe zu regeln Unser ATmega 8 besitzt drei Timer mit unterschiedlicher Verarbeitungsbreite und unterschiedlichen Aufgaben Alle Timer sind interruptf hig sind also als interne Interruptquelle ber die Interrupt Vektor Tabelle einbindbar vgl dazuauch Tabelle 1 im Teil 3 Jenach Timerkonfiguration und Timerart k nnen folgende Ereignisse einen Interrupt ausl sen Nulldurchlauf Overflow der Timer z hlt herauf oder herab bis er an den Wert 0 gelangt und l st dann einen Interrupt aus Vergleichswert Compare der Timer
15. reti reti reri reti reti reti reti 2 tart Wain Power OW Reset ldi ELG out SPH ldi EL out SPL chi ACSRE chi ACSR his RAMENMD E16 106 RAMENI r mainloop ESS Ob00000000 FORTE r25 E24 5 Ban Ob00000001 FORTB r25 mainloop Zwei Analogwerte werden verglichen FortD 6 amp 7 an Poti rote LED an Fort Ing Pad Alexander Huwaldt Beschreibung POWER OM RESET Int0 Interrupt Int 1 Interrupt TCz Compare Match Tce Overflow Tol Capture TCi Compare Match TZ1 Compare Match B Tol Overflow TCO Overflow SEL Se Serial Transfer conplere ULET Rx Complete UART Data Register Empty UART Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TWL 1 C Serial Interface Store Program Memory Ready Stack Initialisierung Komparator ON Externe Relerenzspannung Porth 0 Ausgang rote LED Komparatorstatus einlesen JAJusgabewert LOU Wenn PD 6 7 Uin gt Uret aco high JAJusgabewert high Bild 52 Der Quellcode zum Komparatorprogramm die Referenzspannung kippt der Kompara tor und es erscheint der logische Zustand 1 an seinem Ausgang Genau das kann der Controller auswerten und z B eine Warnanzeige ausgeben oder auch in Er weiterung des vorherigen Kapitels eine Meldung an den PC ausgeben bzw auch eine Regelschaltung in Gang setzen Die praktischen Anwendungen sind vielf ltig man denke nur an die berwachung einer Temperatur
16. z hlt bis zu einem in einem Register ab gelegten Zahlenwert und l st bei dessen Erreichen einen Interrupt aus externer Z hlimpuls Capture Aus l sung eines Interrupts bei Erreichen einer bestimmten Anzahl von externen Zahlimpulsen Als Taktquelle f r den Timer dient in den allermeisten Fallen der interne Prozessor takt seltener ein externer Takt Timer Aufbau und Timer Register Wir wollen die grundsatzliche Arbeits weise am 8 Bit Timer Counter 0 betrachten ELVjournal 4 06 Abbildung 36 Er setzt sich aus mehreren Elementen zusammen Da ist zun chst die eigentliche Timerlogik die die Takt auswahl und generierung darunter auch aus externen Taktquellen realisiert und einen 10 Bit Vorteiler beherbergt der je nach Aufgabe den Eingangstakt um die Faktoren 8 64 256 oder 1024 teilt Der Rest sind wiederum Register die nach entsprechendem Laden die Aufgaben des Timers festlegen TCNTO Timer Counter 0 das Z hler register in dem das eigentliche Z hlen stattfindet Bei berlauf Nulldurch gang wird ein Signal an die Kontroll Logik abgegeben TIMSK Timer Interrupt Mask Register dient der Konfiguration der Interrupt Ausgabe Interrupt Maskierung siehe Teil 3 Interruptbefehle und register TCCRO Timer Counter Control Register dient als Steuerregister der Konfigura tion z B des gew nschten Teilerfak tors TIFR Timer Interrupt Flag Register dient zum Auswerten des Int
17. 46 Der UART besitzt drei In terrupt Quellen die alternativ zum Pollingverfahren einsetzbar sind oder 115200 Baud vor Entsprechend ist ein Faktor in das Register UBRR zu laden Wollen wir z B mit der gangigen Baud rate 9600 Baud bertragen errechnet sich dieser Faktor wie folgt UBRR Taktfrequenz _ 16 x Baudrate also f r 9600 Baud UBRR 3086400 Hz _ 93 16 x 9600 Im sp teren Programm kann man den Faktor entweder als Formel oder gleich das Ergebnis eintragen Empfanger Sender initialisieren Nach dem Einschalten des AVR sind die Empfanger und Senderbausteine ausge schaltet einmal um Strom zu sparen und zum anderen um ungewollte bertragungen und Storeffekte zu unterbinden Daher muss je nach Aufgabe der Sender und oder Empfanger des UART aktiviert bzw deaktiviert werden Dies erfolgt ber das Kontroll Register UCR UCSRB siehe Abbildung 45 und dort ber die Bits 3 Sender TX ein ausschalten und 4 Empf nger RX ein ausschalten Daten empfangen Nachdem nun die Initialisierung abge schlossen ist kann der UART Baustein Daten empfangen Die Empfangssteue rungerfolgt ber die beiden Register USR UCSRA und UDR siehe Abbildung 45 Dabei wird ber das Statusregister USR UCSRA ber das Bit 7 RXC Receive complete durch st ndige Abfrage Pol ling berwacht ob das Stopp Bit gesen det wurde Erst dann werden die emp fangenen Daten im Datenregister UDR abgelegt und liegen
18. A CBI A BST R BLD R SEC CLC SEN CLN SEZ CLZ SEI CLI SES CLS SEV CLV flow SET CLT SEH CLH NOP SLEEP WDR Description Relative Jump Indirect Jump to Z Extended Indirect Jump to Z Jump Relative Call Subroutine Indirect Call to Z Extended Indirect Call to Z Call Subroutine Subroutine Return Interrupt Return Compare Skip if Equal Compare Compare with Carry Compare with Immediate Skip if Bit in Register Cleared Skip if Bit in Register Set Skip if Bit in I O Register Cleared Skip if Bit in I O Register Set Branch if Status Flag Set Branch if Status Flag Cleared Branch if Equal Branch if Not Equal Branch if Carry Set Branch if Carry Cleared Branch if Same or Higher Branch if Lower Branch if Minus Branch if Plus Branch if Greater or Equal Signed Branch if Less Than Signed Branch if Half Carry Flag Set Branch if Half Carry Flag Cleared Branch if T Flag Set Branch if T Flag Cleared Branch if Overflow Flag is Set Branch if Overflow Flag is Cleared Branch if Interrupt Enabled Branch if Interrupt Disabled Description Logical Shift Left Logical Shift Right Rotate Left Through Carry Rotate Right Through Carry Arithmetic Shift Right Swap Nibbles Flag Set Flag Clear Set Bit in I O Register Clear Bit in I O Register Bit Store from Register to T Bit load from T to Register Set Carry Clear Carry Set Negative Flag Clear Negative Flag Set Zero Flag Cl
19. B als Ausgang f r den Anschluss des Signalgebers und der LED festgelegt wird Dem folgen die Festlegung des Teiler faktors 64 laut TCCRO Tabelle aus Ab bildung 37 sowie die Konfiguration des Timer Interrupt Mask Registers Interrupt erlauben In der nach der Interrupt Ausl sung aufgerufenen Interrupt Service Routine onTCO finden wir einen neuen Befehl com das Einerkomplement Der bedeutet Funktion Schaltung Port Fit an Speaker Prozessor Sprache Datum Version ATmeqad Assenbler 05 09 2006 3 I Dipl a 6664 MHz Reset and Interrupt vector rjJmp main FETA reti reti teti tert bets teti romp p EEI Feb reti EETA TETA Fett reti reti r gt SESTE main Power ON Reset ldi cri out SFH ldi cri 108 RAMEND out el ri abi DDRB O abi IDEE 1 ldi ri6 Ohooo000101 out TOERLIB ri ldi A a Ob00000100 PHSR E16 hi RAMENI cri PORTE r16 21T OxFE EL Oxo TENT1H EL FONTI ae hier dass mit dem Interrupt ein Signal wechsel an Port B stattfindet und so ein Ton ausgegeben wird Einerkomplement jede Zahl wird durch ihr Gegenteil ersetzt also 0 wird 1 und die 1 wird 0 Beispiel Zahl 00010011 19 Einer Komplement 11101100 236 Additionsergebnis 11111111 255 Als Re Init Wert finden wir zum Ruck stellen des Zahlers unseren berechneten Wert 190 vor Danach werden die allgemeinen Inter rupts wieder freigegeben und es erfolgt d
20. Grundinitialisierung weitere Definitionen entsprechend dem jeweiligen Programm einzutragen sind So legt man hier etwa fest welche Ports als Ein oder Ausg nge definiert werden sollen wo evtl ein Pull up Widerstand zu aktivieren ist auf welche Anfangswerte ein Z hler zu legen ist usw Beispiele dazu werden wir noch kennen lernen Nach der Initialisierungs Sequenz ist nun das eigentliche Programm zu schreiben Das Grundger st besteht hier lediglich aus der Definition dass der Programmablauf 55 PC Technik TXD INTO INT1 Bild 12 Anhand der Pin Belegung erkennt man die Doppelfunktion vieler Ports ohne Unterbrechung st ndig von Neuem beginnen soll So wird zun chst zu jedem Beginn dieser Programmschleife loop die Watchdog Schaltung des Controllers definiert zur ckgesetzt damit diese nicht versehentlich einen Reset ausl st und so ungewollt Daten l scht bzw Vorg nge unterbricht Dann folgen die eigentlichen Programmschritte hier mit dem Kom mentar Hier den Quellcode eintragen als Platzhalter markiert rjmp mainloop schlie lich erzwingt wieder eine R ckkehr zum Beginn des Hauptprogramms So einfach erzeugt man einen ununterbrochenen Programmablauf Damit man bei umfangreicheren Pro grammen die vor allem von mehreren Programmteilen aus immer wieder be n tigte Standardroutinen anspringen die bersicht beh lt folgen dem Hauptpro gramm bersichtlich einzeln geordnet und komme
21. PC Technik Sisy fiir Windows beispiele14asm spr Promi Werkzeug Beabetien umire Arsch Eelen Feela MA AR TT Orennen PFrogammieren mil Sisy LH ih diem Desp anm birre Se Pr igp ara rerehan hoaia terete 1 EFELCENE FELEN M Ausihren Mikrocontroller Einstieg mit myAVR Teil 1 Keine Angst vor dem Einstieg in die Welt der Mikrocontroller Programmierung Die myAVR Sets enthalten alles Notige fur den schnellen und fundierten Beginn der Programmierer Karriere Experimentier Board mit ATMEL Controller Lehrbuch Software Paket Kabel samtliches Zubehor Wir arbeiten uns im Verlaufe der Artikelserie anhand dieses Sets Schritt fur Schritt in den Umgang mit dem AVR Prozessor sowie den Programmierspra chen ein und zeigen anhand zahlreicher praktischer Anwendungen dass es durchaus nicht kompliziert ist in die Welt der Mikrocontroller einzusteigen Der erste Teil stellt das Experimentiersystem vor und gibt einen Einblick n den Auf bau und die Funktion des behandelten Prozessors bis hin zu dessem Befehlssatz Zus tzlich gewinnen wir einen ersten Einblick in die Entwicklungsumgebung SiSy ATMELs beliebte Problemloser Die AVR 8 Bit RISC Controller der Rethen ATtiny und ATmega von ATMEL erfreuen sich bei Elektronikern einer hohen Beliebtheit Durch ihre kompakte und viel seitige Architektur erweisen sie sich als einfach zu handhabende Probleml ser f r vieleAufgaben zumal ein gro er Teil der be n tigten Ha
22. Programmen Bild 17 Als Vorgehensmodell w hlen wir hier Programmierung vorkommen dass eszu Kollisionen sprich berschreiben kommt wenn etwa Bits des Ports durch andere Programmteile bereits gesetzt sind Der sbi Befehl hingegen setzt auf Num mer Sicher er spricht gezielt nur ein Bit des jeweiligen Ports an ohne andere Bits des Ports zu beeinflussen Beide Methoden haben hre jeweilige Be rechtigung wie wir noch sehen werden Also lernen wir beide kurz kennen Konfiguration mit dem out Befehl Wir verwenden ein allgemeines Register hierr16 verf gbar r0 r31 als tempor re Variable im Prinzip ein Zwischenspeicher um es mit der gew nschten I O Konfiguration Konstante Bit 0 von Port B auf Ausgang Bits 1 bis 7 auf Eingang zu laden Idi Befehl siehe Befehls bersicht Projektverzeichnis D Dokumente und Einstellungen ELVjournal 3 06 Eigene Dateien SiSy Projekte LEDON Bild 16 Ein neues Projekt wird angelegt Damit erweist sich der sbi Befehl f r unseren Zweck am besten f r die Initialisie rung des Ports geeignet da wir ja zun chst nur die Line BO beeinflussen wollen 2 Ausgabe Wir erinnern uns von der Program mierung her werden die physischen Ports genau so behandelt w e die eben bei der Initialisierung behandelten Steuerregister Deshalb k nnen wir zur Ansteuerung der LED genau die gleichen Befehle einsetzen wie eben besprochen wir beschr nken uns hier
23. Programmger st l dt man nun sehr bequem das bereits mehrfach diskutierte Grundger st unseres Programms Abbildung 21 ber Struktur laden wird dieses Grundger st in den Edi tor geladen es erscheint im Hintergrund Jetzt kann man nach Best tigung ber OK dazu bergehen 1m Editor zu arbeiten oder nach Wechsel auf Quellcode diesen dort bearbeiten Quellcode erg nzen Nach der Best tigung erscheinen der Programmname LEDON unter dem Icon im Diagrammfenster und der Quellcode des Grundger stes im Editorfenster Zur guten Dokumentation geh rt zun chst das Ausf hren gt gt gt Ausf hren 0001 0002 0003 0004 Funktion Schaltung Prozessor Sprache Assembler Datum 24 04 06 Version 150 ATmegas 3 6564 MHz Dipl Ing P d A Huwaldt amp ELV Reset and Interrupt vector rjm p main Bild 22 a Der Editor mit ee dem Pro reti grammkopf se unseres ersten UESN Programms ran unten die Ob revi jektbibliothek ia und das Dia grammfenster mit unserem Projekt Beschreibung POWER ON RESET IntO Interrupt Int1 Interrupt TC2 Compare Matec TC2 Overflow TC1 Capture TC1 Compare Mate TC1 Compare Matec 7 TC1 Overflow TCO Overflow SPI STC Serial Transfer Complete UART Rx Complete UART Data Register Empty UART Tx complete ADC Conversion Complete ELVjournal 3 06 Funktion schaltung Prozessor
24. T Senderegiser fintem EEPROM SSS later Analog Comparator 1 Tinten Store Program Memory ELVjournal 4 06 Interrupt Quelle Als Interrupt Quelle k nnen u ere Sensoren Ports Schwellwerte des A D Wandlers oder der integrierte Timer genau so auftreten wie spezielle Software Befeh le Der AVR Controller auf unserem my AVR Board verf gt ber zahlreiche dieser Quellen Tabelle 1 zeigt einen Auszug der g ngigsten Interrupt Quellen dieses Cont rollers Die Anzahl und Art der Interrupt Quellen ist bei jedem Controller eine andere und dessen Aufgabenbereich angepasst Interrupt Behandlungsroutine Das ist eben jenes beschriebene Un terprogramm das einer Interrupt Quelle zugeordnet ist und als Reaktion auf deren Unterbrechungsanforderung gestartet wird es wird auch Interrupt Service Routine ISR genannt Wie sie grunds tzlich auf gebaut ist zeigt Abbildung 31 Die hier aufgef hrten Befehle werden wir sp ter noch genauer erl utern Man erkennt auf jeden Fall bereits die Systematik Tritt ein Interrupt auf wird die zugeh rige Inter rupt Service Routine ISR angesprungen Weitere Interrupts werden zunachst zum geregelten Abarbeiten dieser ISR unter bunden wenn n tig Speicherinhalte von Registern gerettet die eigentliche ISR ausgef hrt die Ordnung 1m Speicher wie derhergestellt das Steuerwerk f r andere Interrupts wieder freigegeben die ISR insgesamtbeendet und das Programm kehrt
25. are Pro jekten widmen Dabei wollen wir allerdings nicht das umfangreiche Handbuch zum System ersetzen dessen Inhalt f hrt ber das Anliegen unserer Artikelserie weit hi naus sowohl von der Grundlagenseite her als auch von der Projektausf hrung Auch berlassen wir den ausf hrlichen Assemb lerkurs dem Lehrbuch Vielmehr unterneh men wir einen Exkurs durch das Thema mit aktuellen Bez gen zur Entwicklung des Systems Das Experimentier Board myAVR Das myAVR ist in zwei Versionen ver f gbar die sich n der Art des Anschlusses an den PC unterscheiden W hrend die eine Version den Kontakt ber eine paral lele und serielle Schnittstelle herstellt er f llt die zweite Version diese Aufgabe per USB Port Zentraler Part des Boards Abbildung 4 ist nat rlich der auf einer Steckfassung untergebrachte ATmega8 Controller der dank seiner In System Programmierbar keit K rzel ISP direkt hier program mierbar ist Die Spannungsversorgung erfolgt ber eine 9 V Spannungsquelle Eine Span nungsregler Baugruppe sorgt f r eine sta bile 5 V Betriebsspannung auf dem Board Eine Pegelwandler Baugruppe mit dem MAX 232 realisiert die Umsetzung zwi schen der seriellen Schnittstelle des Mik rocontrollers und der RS232 Schnittstelle ISP Port LPT Spannungsversorgung 9 Vac pc Signalgeber LEDs Digital Analog Ausgabegerate Und schlie lich geh rt zur festen Verdrah tung des Boards noch d
26. auf darunter mehrere A D Wandler Eing n ge und ein Komparator Die Nutzung des Letzteren wollen wir in unserem kurzen Beispiel genauer erarbeiten Die ausf hr liche Nutzung der A D Wandler die einen analogen Spannungswert in eine digitale Gr e umwandeln berlassen wir dem ausf hrlichen myAVR Lehrgang Der Komparator des ATmega Ein Komparator vergleichtzweianaloge Spannungen in einem bestimmten Span nungsbereich und gibt ein Signal aus wenn eine der Spannungen gr er oder kleiner als die andere meist ein fester Referenz wert ist Der Komparator des ATmega auf un serem myAVR Board verbirgt s ch hinter den Pins 12 AIN 0 analog input 0 und Pin 13 AIN 1 analog input 1 AIN 0 ist der Eingang f r die Referenzspannung Er ist so programmierbar dass entweder eine externe oder intern erzeugte Referenzspan nung nutzbar st Abbildung 51 Hat die zu kontrollierende Spannung an AIN ei nen Wert unter der Referenzspannung so erscheint am Ausgang des Komparators der Zustand 0 Ubersteigt der Spannungswert ACD Register AINBG Register 2 1 0 Bit ACSR Bild 51 Der prinzipielle Schaltungsaufbau des Komparators und das zugeh rige Steuerregister ACSR ELVjournal 6 06 Funktion Schaltung Prazessor Sprache Datum Version ATmeqad Assembler 02 06 2004 2 el Dipl 3 6564 MHz Reset and Interrupt vector rjmp main reti PELL reti reti reti reti reti reti reti reti
27. bene Nullmo dem Kabel mit der seriellen Schnittstelle des myAVR Boards Nach dem Offnen des SiSy AVR Con trolcenters ber den Button Ausf hren dem Herstellen der seriellen Verbindung und dem Starten des AVR ber den Start Button sendet dieser st ndig die program mierten Zeichen in das Protokollfenster Abbildung 50 bis das Programm wieder angehalten wird Das hier aufgef hrte Programm ist na t rlich nur als einfach zu lernende Pro grammiersequenz aufzufassen die u a die Grundz ge der Ausgabe auf eine An zeige beschreibt Dass es noch wesent lich eleganter geht ganze Zeichenketten auf einen Schlag zu verschicken und zu empfangen Nachrichten in den einzelnen Speicherarten insbesondere dauerhaft im EEPROM zu speichern und aus diesen aus zulesen beschreibt der myAVR Lehrgang ebenso ausf hrlich wie die Programmie rung des UART als Empf nger Interne Referenz span nungs quelle 7 6 5 4 ACD AINBG ACO ACI ACIE ACIC ac s ACISO Wir wollen uns zum Abschluss der Ein f hrung in die AVR Assemblerprogram mierung noch einmal kurz mit einer wei teren M glichkeit befassen wie man den AVR nutzen kann die Verarbeitung ana loger Signale ber die analogen Eing nge des Controllers Analoge Signalverarbeitung Erinnern wirunsnoch an den Beginn un serer Serie als wir Aufbau und Pin Out des AVR Controllers besprochen haben Hier fallen uns auch diverse analoge Ports
28. ber tragungsverfahren mit einer sehr einfachen Datenstruktur erm glicht Asynchronhei t dass mit den Daten kein Taktsignal bertra gen wird und es keine R ckfrage ber den ordnungsgem en Empfang der Daten gibt Somit verliert man keine Zeit mit der Kon trolle der Daten bertragung Allerdings m ssen dazu Sender und Empf nger mit exakt der gleichen Ubertragungsrate Baud rate arbeiten bzw darauf eingestellt sein Und beide Stellen m ssen sich gegenseitig signalisieren wenn die eigentliche Daten bertragung beginnt Start Bit und endet Stopp Bit Entsprechend sind die Daten bits eines Datenwortes jeweils von jeeinem Start und Stopp Bit eingerahmt So erreicht man eine relativ schnelle und sehr einfach aufzubauende Datenver bindung UART inside Verschaffen wir uns zum Verst ndnis der Programmierung des AVR UARTS zu n chst mit Abbildung 45 einen berblick ber seinen Aufbau Auch hier erfolgt die Programmierung ber Register die der Steuerung der Festlegung der Baudrate und der Verwaltung der eigentlichen Daten dienen Die bertragungsrate wird direkt aus dem quarzstabilen Systemtakt gene riert die Genauigkeit ist f r diese Art der Datenverbindung v llig ausreichend Die INT Anschl sse weisen darauf hin Der UART Baustein ist interruptf hig ein Blick in die Vektortabelle Abbildung 46 best tigt die drei m glichen Interrupt Arten Schlie lich realisieren die Empfangs und Sendebaustei
29. d die Signalpegel an die RS232 Konventionen anzupassen Dazu befindet sich auf dem myAVR Board der bekannte Schnittstellen Baustein MAX 232 Abbil dung 42 der eine Umwandlung der TTL Pegel 0 5 V in die RS232 Signalpegel 12 V vornimmt Der Vorteil dieses Bau steins Man ben tigt nur eine Versorgungs spannung von 5 V die Umwandlung erfolgt durch interne Spannungswandler Damit und mit dem 9 poligen Sub D Steckverbinder auf dem Board sind die hardwarem igen Voraussetzungen erf llt um mit einer RS232 Standard Schnittstel le wie sie die serielle PC Schnittstelle dar stellt Kommunizieren zu k nnen Bleibt noch die eigentliche Verbindung Abbil dung 43 zeigt die vollst ndige Verbindung zwischen zwei RS232 Schnittstellen Zu s tzlich zu den Datenleitungen RXD Emp fangen und TXD Senden finden wir hier noch einige Steuerleitungen die jeweils die Bereitschaft von Senderund Empf nger zur Daten bertragung signalisieren F r eine Bild 44 Die vereinfachte RS232 Ver bindung als Nullmodem Verbindung einfache Daten bertragung nutzt man aller dings oft die in Abbildung 44 dargestellte 3 Draht Nullmodem Verbindung Ein so beschaltetes Nullmodem Kabel befindet sich im Lieferumfang des myAVR Sets womit alle hardwareseitigen Vorausset zungen fur den Datenaustausch zwischen PC und AVR erf llt sind Diese geringe Leitungsanzahl je Rich tung eine plus Masse wird durch das an gewendete serielle asynchrone Daten
30. den muss Das hei t vor allem dass die bereits im ersten Teil beschriebenen wichtigen Steuerregister bei jedem Neustart initialisiert werden m ssen Vor allem der Speicher f r die R cksprung adressen von Unterprogrammen STACK muss immer initialisiert sein sonst ger t der Programmablauf also z B die Spr nge Beschreibung POWER ON RESET IntO Interrupt Inti Interrupt TC2 Compare Match TC2 Overflow TC1 Capture TC1 Compare Match A TC1 Compare Match B TC1 Overflow TCO Overflow SPI STC Serial Transfer Complete Bild 10 UART Rx Complete UART Data Register Empty Die Re UART Tx complete set und ADC Conversion Complete Inter EEPROM Ready te Analog Comparator rupt TWI I C Serial Interface Vektor Store Program Memory Ready T abelle z Bert mainloop Power ON Reset ldi ri 105 RAMEND DUE srl ri ldi ri hi RAMEND Out SPH ri Hier Init code eintragen war Hier den Quellcode eintragen rjmp wainloop Bild 11 Das Grundger st von Initialisierung und Hauptprogramm zwischen Programmteilen zu Interrrupt routinen usw durcheinander Im bereits angesprochenen Grundger st befindet sich also diese Stack Initialisie rung Hier wird das Register SP als Stack pointer auf seine Startadresse am Ende des SRAM gelegt RAMEND Details dazu finden sich wiederum im Kursmaterial des myAVR Die Zeile Hier Init Code eintragen markiert dass dort neben der eben be schriebenen
31. des jeweiligen Timers unterscheiden So verf gt z B Timer 1 ber eine Verarbeitungsbreite von 16 Bit Z hlumfang bis 65 535 f r l ngere und prazisere Zeitmessung als mit Timer 0 und einen so genannten Waveform Generation Mode ber den eine Pulsweiten Modulation m glich ist So kann man z B die Helligkeit einer LED modulieren oder die Drehzahl eines Motors steuern In Abbildung 37 ist der Aufbau aller drei beschriebenen Register zur bersicht dargestellt dazu f r das TCCRO Register die Tabelle zur Programmierung der Takt auswahl Clock Select Auf diese werden wir noch zur ckkommen Abbildung 38 zeigt die grunds tzliche Funktion des Teilers Z hlers Der Prozes sortakt oder externe Takt wird zun chst durch den programmierbaren Vorteiler auf den gew nschten Wert der f r den 8 Bit Z hler im Bereich von 1 bis 255 liegen muss herabgeteilt Die Ausgangsimpulse des Vorteilers werden nun vom Z hler von einem programmierbaren Punkt an Diffe renz zu 255 herauf oder herabgez hlt bis ein Nulldurchgang auftritt Dieses Ereignis wird an die Kontroll Logik gemeldet und der Z hlerlauf beginnt von vorn Doch zun chst m ssen wir die Vorausset zungenbetrachten um den Timer berhaupt in ein Programm einzubinden Vorbereitungen Um die Timer Aktivit ten als Interrupt ausnutzen zu k nnen ist nat rlich wie wir es bereits im Teil 3 kennengelernt haben der passende Interrupt Vektor auf eine zu erst
32. ear Zero Flag Global Interrupt Enable Global Interrupt Disable Set Signed Test Flag Clear Signed Test Flag Set Two s Complement Overflow Clear Two s Complement Over Set T in SREG Clear T in SREG Set Half Carry Flag in SREG Clear Half Carry Flag in SREG No Operation Sleep Watchdog Reset ELVjournal 2 06 SiSy fiir Windows beispiele14asm spr Projekt Werkzeug Bearbeiten Ausf hren Ansicht Einstellungen Fenster A el al _ _ Werkzeuge Men s Al IN jo x Vorgehensmodell Kompilieren Linken Prozessor Sprache Datum Version Reset and Interrupt vector rjmp main reti reti reti reti Programmieren mit SiSy LEI In diesem Diagramm k nnen Sie Programme in verschiedenen Programmiersprachen erstellen Hinweise zum Debugger kleines Prog In_Out_S a Hinweise zum allgemeinen Vorgehen beim Erstellen eines kleinen Programms Programms ka Programm Weitere Hinweise zu SiSy finden Sie hier Wissenswertes ber SiSy zur SiSy Homepage v apes cess 4 Taste F1 f r Hilfe zum aktuellen Fenster LCD_data LCD_goto LCD_home LCD_init LCD_linel LCD_line2 LCD_off LCD_on Projekt Navigator Bild 8 Die Programmierober fl che von SiSy Die beiden Beispiele zeigen die verschiedenen Programmiermethoden per Zeileneditor und per Programmablaufplan sie sind zwar auslesbar aber nicht mehr ver nderbar Der ROM ist ein Einmal Speich
33. ect and Post Increment Load Indirect and Pre Decrement Load Indirect Load Indirect and Post Increment Load Indirect and Pre Decrement Load Indirect with Displacement Load Indirect Load Indirect and Post Increment Load Indirect and Pre Decrement Load Indirect with Displacement Store Direct to data space Store Indirect Store Indirect and Post Increment Store Indirect and Pre Decrement Store Indirect Store Indirect and Post Increment Store Indirect and Pre Decrement Store Indirect with Displacement Store Indirect Store Indirect and Post Increment Store Indirect and Pre Decrement Store Indirect with Displacement Load Program Memory Load Program Memory Load Program Memory and Post Increment Extended Load Program Memory Extended Load Program Memory Extended Load Program Memory and Post Increment Store Program Memory Extended Store Program Memory In From I O Location Out To I O Location I O Push Register on Stack Pop Register from Stack Sprung Anweisungen Mnemonics Operands RJMP K IJMP EIJMP JMP K RCALL K ICALL EICALL CALL K RET RETI CPSE Rd Rr CP Rd Rr CPC Rd Rr CPI Rd K SBRC Rr b SBRS Rr b SBIC A SBIS A BRBS BRBC BREQ BRNE BRCS BRCC BRSH BRLO BRMI BRPL BRGE BRLT BRHS BRHC BRTS BRTC BRVS BRVC BRIE BRID TITTITITTITTITT NT TTTTTTIT NIT TO OD Bit und Bit Test Befehle Mnemonics Operands LSL Rd LSR Rd ROL Rd ROR Rd ASR Rd SWAP Rd BSET S BCLR S SBI
34. eeEB Dr Pullup FortB 1 auf Ausgang Wert bei Taste nicht gedr ckt INPUT Taster offen p High Pegel en Taster gedr ckt l Low Pegel Bild 26 Die Pegelverhaltnisse am Controller Eingang mit aktiviertem Pull up Widerstand PORT Bath SET oi rl6 berschrieben Bild 27 Der Quellcode f r unser I O Programm 21 PC Technik POWER ON RESET INIT STACK PORT BO IN PORT B1 OUT Hauptschleife Ausgabe vorbereiten Taster offen Aus Register 16 0b00000001 Eingabe von PINB INPUT Skip bei keine Taste Ausgabewert mit neuem Wert berschreiben Taster gedr ckt Ein Register 16 0b00000011 Ausgabe an PORTB Bild 28 Das Flussdiagramm f r die L sung unserer I O Aufgabe Der l scht an der definierten Stelle des Registers das nach dem Reset auf 0 ge setzte Bit und setzt das Steuerregister f r Port B 0 auf Eingang also wie erw hnt auf 0 Der folgende sbi Befehl spricht direkt das Bit 0 im VO Register an und aktiviert damit die Pull up Funktion an diesem Pin Nun ist nur noch festzulegen dass Port B 1 als Ausgang arbeiten soll ergo ist das Steuerregister f r Port B 1 auf 1 zu set zen Damit ist die Initialisierung erledigt und wir k nnen uns dem Hauptprogramm zuwenden Nach dem Zur cksetzen des Watchdogs wird zuerst eines der allgemeinen Register hier wieder das bereits bekannte r16 mit einem Ausgabewert f r den Fal
35. egt der Eingang auf Masse und liefert die digitale Information 0 Die Information ob der jeweilige interne Pull up Widerstand des Controllers aktiviert werden soll oder nicht muss also zusammen mit der Pin Auswahl des IN Pins Bestandteil des Steuerprogramms werden um eine VO Line als Eingang zu definieren Dieser Programmschritt gehort also in das Initia lisierungsprogramm Dazu ist in unserem Beispielprogramm besch ftigen wir uns wie im Ausgabeprogramm mit Port B im Port B Register eine logische 1 an der entsprechenden Position zu setzen Das Ein Ausgabeprogramm Setzen wir die beiden eben besprochenen Schritte wir wollen Port B 0 als Eingang definieren und den Pull up Widerstand setzen also in Programmcode um Funktion eingeschaltet Schaltung Taste an Port Bat Prozessor Sprache Assembler Datum OS 05 2004 Version Bi cae Dipl ATmeqas 3 5564 MHz Reset and Interrupt vector rjmp main reti reti reti reti reti reti reti reti reti reti reti reti reti reti teti reti reti Power OM Reset ldi ELG out SPH ldi cri out SPL chi IDEE abi PORTE hi RAMEND ri 108 RAMEND mainloop Ub00000001 ELT PINE a ae Ele Ub00000011 PORTE ri mainloop ELVjournal 4 06 polonge Taster 1 gedruckt 1st Skip wenn Taste nicht gedr ckt Wert bei Taste gedrucke gt LED an aus Da wir nat rlich wissen wollen ob das funktioniert verwenden wi
36. ellende Interrupt Service Routine zu setzen Nach bekanntem Schema wird also eine Interrupt Service Routine ISR mit den Befehlen cli sei und reti erstellt und in der Vektortabelle ist der zugeh rige Inter rupt Vektor Timer 0 Nulldurchlauf auf die ISR zu setzen Weiterhin ist dem Steuerwerk des Cont rollers uber das Timer Interrupt Mask Register TIMSK mitzuteilen welches Ereignis als Interrupt akzeptiert werden soll Maskierung Wenn wir also den Nulldurchgang unseres Zahlers 0 als Interrupt Ereignis definieren wollen ist im Register TIMSK das zugeh rige Bit 1 zu setzen Der myAVR Lehrgang gibt zur gesamten Interrupt Programmierung des Timers noch weitergehende Erlau terungen Das klingt bisher alles noch etwas theoretisch wir werden aber gleich anhand unseres Beispielprogramms in der Praxis sehen wie es funktioniert 73 PC Technik Der Prozessor ruft A Wir wollen wie angek ndigt ber die Timerprogrammierung unserem AVR e nen Ton entlocken Dabei ist zunachst zu betrachten wie eine Tonfrequenz prinzi piell entsteht Sie ist vereinfacht als Folge von High Low Wechseln eines digitalen Signals zu betrachten Je h her die Tonfre quenz sein soll desto dichter m ssen die High Low Wechsel aufeinander folgen Ein Zyklus eines Tons besteht jeweils aus zweien dieser Wechsel Halbwellen dies muss man beim spateren Berechnen der so genannten Wartezeit beachten Wir wollen dazu ein Beispiel d
37. en werk des Controllers direkt verstanden wird und durch diesen abarbeitbar ist Diese bersetzung bernimmt ein Compiler Er pr ft auch den Quellcode auf syntaktische Fehler Um mehrere Objektdateien Pro grammteile zu einer ausf hrbaren Pro grammdatei zusammenzuf gen kommt ein so genannter Linker zum Einsatz Zur Programmierumgebung gehoren auch Testwerkzeuge die eine Programm laufsimulation sowie eine systematische Fehlersuche erm glichen Simulatoren und Debugger Und schlie lich geh ren noch Werk zeuge f r die bertragung des Maschinen codes in das EEPROM oder wie bei un serem ATmega 8 in den Flash Speicher des Controllers hierzu Beimanchen Program mierumgebungen wie auch bei SiSy sind die Schritte Linken Ubersetzen der Objektdatei in eine f r den Controller aus f hrbare Hexdatei und Speichern auf den Flash Speicher Brennen getrennt bei anderen hingegen ist dies nur ein Werk zeug das lediglich R ckfragen vor dem Brennen stellt Kommen wir damit zu SiSy einem so genannten Modellierungswerkzeug das f r die objektorientierte Programmierung von Branchenl sungen entwickelt wurde Unse re hier genutzte Entwicklungsumgebung ist ein Add on f r dieses Modellierungswerk zeug das speziell f r die AVR Programmie rung entwickelt wurde Es erlaubt sowohl die einfache Programmentwicklung ber einen blichen Programmeditor als auch die Generierung eines Programms ber einen
38. en Taster definiert sind und die LED nicht angesteuert wird Bit B 1 steht immer noch auf 0 Uber den rjmp Befehl kehrt das Programm wieder zur ck zum Beginn des Hauptprogramms Dieser beschriebene Ablauf setzt sich so lange fort bis der Taster gedr ckt wird Was passiert jetzt Bei der Abarbeitung des Skip Befehls erkennt das Programm dass nun im Register r17 f r Port B f r Bit 0 eine logische 0 abgelegt ist der Pro grammsprung wird also nicht ausgef hrt und es geht weiter zum n chsten Register Ladebefehl Nun wird Registerrl6mitdem neuen Inhalt geladen Pin B 0 1 beh lt seinen Status als Eingang mit aktiviertem Pull up Widerstand w hrend Pin B 1 1 bedeutet dass beim Auslesen des Registers Fr fil It J B ji q u J B 4 E qo 2 E 1 725 BD u tb E i ih 2 gooooo u0000 Bild 29 Die Verdrahtung zur I O Auf gabe auf dem myAVR Board Start Polling INPUT vom Sensor icht vorhanden Eingabe Wert vorhanden OUTPUT an Aktor Ende Polling Bild 30 Der klassische Programmab lauf beim Polling Verfahren beim folgenden out Befehl die LED an Pin B 1 eingeschaltet wird Auch diese Programmschleife wirdjetztso lange durch laufen bis die Taste losgelassen wird das Programm dies feststellt und der Skip Be fehl wieder in Aktion tritt Abbildung 28 zeigt noch einmal das Flussdiagramm des Programms das die zu l sende Aufgabe bersichtlich dokumentiert Unse
39. er einmal mit Daten geladen ist der Fest speicher nicht mehr l schbar Ganz im Unterschied zum EPROM Dieses ist zwar ebenfalls ein Festwertspei cher wie das ROM es ist jedoch durch Be strahlung eines L schfensters im Geh use per UV Licht loschbar und daraufhin wie der neu beschreibbar Die Zahl der L sch Schreib Vorg nge ist jedoch begrenzt Der moderne Ableger des EPROMS ist das elektrisch l schbare EEPROM Es ist von au en mit einem elektrischen Impuls blockweise loschbar und bis zu hunderttau send Mal wieder neu beschreibbar Somit kann es sehr einfach mehrfach beschrieben ELVjournal 2 06 Brennen ATmegad Assembler 02 04 2004 Online Hilfe oe a iR AVR Datei Programmob jekt R Beep_S Objekt Bibliothek Objekt Bibliothek Au sf hren Beschreibung p t POWER ON RESET IntO Interrupt reti 1 Interrupt reti Zeileneditor Compare Match reti zz C2 Overflow TC1 Capture TC1 Compare Match A TC1 Compare Match B tS TC1 Overflow 16 TCO Overflow ii SPI STC Serial Transfer Complete 12 UART Rx Complete UART Data Register Empty UART Tx complete ADC Conversion Complete 5 UART2_S TIMER_S 16 EEPROM Ready Comperator_S Interrupt_S UART1_S ri6 lo amp RAMEND out SPL 16 ldi ri hi8 RAMEND out SPH r16 Quellcode des H PAP Objektes f Programm a Ablaufplan Hf _tco_aata Se Schleifenbeg Ei D Q t a 3 a Unterprogramm
40. er R cksprung ins Hauptprogramm Als Ergebnis wird man nun nach Blinkfreguenz per Timer Interrupt Ing Fad Alexander Huwaldt amp ELWY Beschreibung FOWER ON RESET Inti Interrupt Inti Interrupt TCA Compare Match Tc Overflow TCi Capture TC1 Compare Match TCi Compare Match B Toci Overflow TOO Cree thom ri si Serial Transiter Complete ULET Ex Complete ULET Data Register Empty ULET Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TUL 12 C Serial Interface Store Program Memory Ready Initialisierung Timeri setup 368640071024 Interrupt Timerl bei overi ion Interrupts Sperren Einerkomp lement Fort E umschalten Signalwechsel Low Brte won 65175 setzen High Byte yon 65175 setzen Low Byte f r Re Init auslesen High Byre f r Re init auelesen Interrupts wieder Lreigeben R cksprung Bild 41 Der Quellcode f r die Erzeugung des 5 Hz Blinkimpulses ELVjournal 4 06 Compilieren Linken und Brennen den Kammerton A aus dem Signalgeber des myAVR Boards vernehmen Die Abwei chung lag tats chlich unter 1 w r haben 437 Hz gemessen Abbildung 40 zeigt die Verdrahtung Die ebenfalls mit verdrahtete LED zeigt die hohe Frequenz f r das Auge mit Dauerleuchten an und dientals optische Anzeige f r Variationen des Timings Experimente mit 16 Bit Neugierig geworden kann man nun mit den Rechenwerten experimentieren und so sicherer in der Handhabung de
41. errupt Status Sind hier z B das Flag TOVO Timer Counter 0 Overflow Flag und im Register TIMSK das Flag TOIEO Timer Counter 0 Overflow Interrupt En able Interrupt aktiviert gesetzt erfolgt die Ausf hrung des Timer Interrupts T CO Overflow IRQ 8 Bit Datenbus Timer Interrupt Flag Timer Interrupt Flag Register TIFR Register TIFR TOVO Timer CounterO count TCNTO Logik AUS OxFF A Bild 36 Der Grundaufbau des Timers Zahlers TCNTO 02 Jeso cso0 Kontroll CLK 7 6 5 4 3 2 1 0 Bit OCIE2 TOIE2 TICIE2 OCIE1A OCIE1B TOIE2 TOIEO TIMSK 7 6 5 4 3 2 1 0 Bit CS02 CS01 CSOO TCCRO CS02 CS01 CS00 Beschreibung 0 0 0 Keine Taktquelle Timer Counter gestoppt 0 0 1 CLK O Vorteiler aus 0 1 0 CLK 8 Vorteilerfaktor 8 0 1 1 CLK 64 Vorteilerfaktor 64 1 0 0 CLK 256 Vorteilerfaktor 256 1 0 1 CLK 1024 Vorteilerfaktor 1024 1 1 0 Externer Takt an TO Ausl sung fallende Flanke 1 1 1 Externer Takt an TO Ausl sung steigende Flanke 7 6 5 4 3 2 1 0 Bit ocr2 Tov2 ICF1 OCF1B OCFiB Tovi TOVO TIFR Bild 37 Die Register TIMSK TCCRO und TIFR Vorteiler Zahler 1 8 Bit 0 255 8 16 Bit 64 0 65535 Nulldurchlauf 256 1024 Bild 38 Die Zusammenarbeit Vorteiler Z hler ELVjournal 4 06 Die Register werden f r alle drei Timer gemeinsam genutzt w hrend die Kont roll Logik und das Z hlerregister sich entsprechend der Aufgabe
42. erwenden Projektarchiv ffnen Assistent ffnen SiSy kennenlernen Bild 15 Das SiSy Startfenster flusses festlegt Hier finden wir also die Schaltstelle die ber die Funktion jedes einzelnen Port Pins entscheidet ber das Register PORTx erfolgt die Ausgabe ber PINx die Eingabe von Daten So zeichnen sich bereits erste Konturen von Programm ansatzen ab die I O Aufgaben betreffen Es ist das entsprechende Portregister laut vorliegender Aufgabe anzusprechen bzw zu konfigurieren und dann die gew nschte I O Line anzusteuern bzw auszuwerten Genau diesen Aufgaben widmetsichnun unser erster Einstieg in die Programmier praxis mit anschlie ender Ausf hrung auf dem myAVR Board Er lebt Der erste Ausgabebefehl Die erste Aufgabe lautet f r uns einen Port Pin des myAVR Controllers als Aus gang zu konfigurieren und eine der drei LEDs auf dem Board vom Controller aus einschalten zu lassen Da der Ausgang des AVRs bis zu 20 mA bei 5 V High Pegel treiben kann ist also der direkte Anschluss einer LED nat rlich mit entsprechendem Vorwiderstand einfach m glich Also m ssen wir nur noch einen Port Pin als Ausgang konfigurieren und hier ber einen Ausgabebefehl geben Wirlegen fest dass die Ausgabe ber Port B I O Line 0 PBO erfolgen soll 1 Initialisierung Erinnern wir uns dazu zun chst an den eingangs beschriebenen Aufbau des Programm Grundger stes Hier fand sich im Initialisierungsteil
43. es my AVR Lehrgangs betrachten das sich zum Ziel stellt den Kammerton A mit einer Frequenz von 440 Hz aus der Taktfrequenz des Controllers via Timersteuerung und In terruptauswertung des Timers zu erzeugen und mittels des kleines Lautsprechers auf dem myAVR Board auszugeben F r die Signalausgabe ist es also n tig einen High Low Signalwechsel per Timer Overflow Interrupt zu erzeugen Dazu gibt es zun chst etwas Rechenar beit Die Zykluszeit des 440 Hz Signals betragt zunachst 1 440 s also 2 28 ms Fur zwei Halbwellen sind dies 1 880 s also 1 14 ms Dies ist die so genannte Wartezeit von einer zur nachsten Halbwelle die vom Zahler zu generieren ist Bei der Taktfre quenz des AVR von 3 6864 MHz entspricht diese Wartezeit etwa 4189 Taktzyklen des Systemtakts ca 0 24 us Um nun aus diesem Systemtakt 440 Hz zu erzeugen ist mittels der M glichkeiten die der Vorteiler des Zahlers und der Z hler selbst bieten der Systemtakt herabzuteilen Dabei muss beachtet werden dass der Vorteiler Faktor so zu wahlen ist dass die gewunschte Wartezeit 1m 8 Bit Zahlbereich des Z hlers von 1 bis 255 liegt Die Warte zyklen werden dann bei jedem Interrupt des Timers als Differenz zu 255 in den Z hler geladen Eine Re Initialisierung bei diesem Differenzwert bewirkt dass die Zyklen bis zum n chsten Nulldurchlauf wieder herabgez hlt werden Bei der relativ geringen Aufl sung un seres 8 Bit Zahlers und der ganzzahligen Te
44. f r bestimmte Ereignisse Interrupt w hrend des Programmlaufs festgelegt Betrachtet man Abbildung 10 erkennt man dass in unserem einfachen Beispiel nur ein Sprungbefehl zum Haupt programm main das mit der Power on Reset Phase des Controllers beginnt aktiv ist Befehl RJMP mit dem Operanden main Alle restlichen Zeilen der Tabelle sind als inaktive Platzhalter mit dem RETI Befehl bei einem entsprechenden Interrupt soll keine Reaktion erfolgen belegt In der Beschreibungs Spalte kann man ersehen wof r die jeweiligen Interrupts genutzt werden Jetzt erkennt man warum die komplette Tabelle aufgef hrt werden muss w rde man nicht alle eintragen w sste der Controller nicht welcher Interrupt Vektor gemeint ist Uber die Vollst ndigkeit der Tabelle muss man sich beim S Sy System wie auch bei vielen anderen Entwicklungsumgebungen keine Gedanken machen sie liegt fest und wird einfach mit dem so genannten Reset and Interrupt vector main rjmp reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti reti Ne Ne Ve Ne Ne Ne Ne Ne OTA ob Wd Ne PRPRRRPRPHPHPHP HP HB ID woo numb WwWNe 0 ELVjournal 3 06 w Vorgehensmodell Kompilieren Linken DOGS 0004 0005 0006 0007 0008 0009 ore OEE DOTS 0043 0014 DOTS 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0025 0029 0030 0031
45. ffe der Programmierung bekannt sein m ssen eine fr here Begegnung etwa mit BASIC macht den Einstieg leichter und man muss nicht erst Begriffe wie z B Variable lernen Wird das System in der Lehre verwendet wird diese Einschrankung obsolet da hier Bild 2 Das myAVR Board ist als Seriell Parallelport Version und mit USB Schnittstelle erhaltlich ELVjournal 2 06 Bild 1 Das AVR Star ter Kit enthalt alles was man zum Start in die Welt des Mikro controllers benotigt ohnehin eine Einfuhrung in Grundsatzbe griffe und techniken erfolgt Der Selbst Studierende wird ebenfalls ber geeignetes Lehr bzw Fachliteratur Material verf gen um diesen minimalen Voraussetzungen ge recht zu werden Dem der bereits in Assembler C oder BASCOM programmieren kann wird hier ein besonders einfach zu handhabendes Werkzeug in die Hand gegeben um schnell zum erwarteten Ergebnis einem lauff higen und direkt an der Hardware erprob ten Programm zu gelangen Das AVR Starter Kit Abbildung 1 ent h lt faktisch alles was man zum Einstieg ben tigt bis hin zum kompletten Kabelsatz Der recht g nstige Preis spricht f r s ch immerhin erh lt man hierf r ein komplett deutschsprachiges Entwicklungs Kit und s mtliche erforderliche Hardware dazu bis hin zu einem ATmega Controller Hauptbestandteile des Kits sind die Ent wicklungsumgebung SiSy AVR auf CD ROM mit deutschem Benutzerhandbuch myAVR Lehrbuch M
46. g 8 im Teil 1 EE Ausgabefenster Formatierte Ausgabe Ausgabe renne Daten neu awrducde awrdude awrducde awrdude awrducde Device signature 0x1e9307 erasing chip reading input file LEDON hex input file LEDON hex auto detected as Intel Hex writing flash 56 bytes 100 OOS awrducde awrdude awrducde awrdude awrducde awrdude 56 bytes of flash written verifying flash memory against LEDON hex load data flash data from input file LEDON hex input file LEDON hex auto detected as Intel Hex input file LEDON hex contains 56 bytes reading on chip flash data awrdude verifying avrdude 56 bytes of flash verified awrdude done Thank you Ende avrdude AYR device initialized and ready to accept instructions Reading ee 100 000s Reading AA e a a e PREPARE ERR 1 OI OOS Kompilieren Linken Brennen So komplettiert wird der Quelltext nun mit dem Assembler kompiliert und gelinkt Ergebnis ist einim zuvor gew hlten Projekt verzeichnis abgelegtes File LEDON hex das nun noch auf den ATmega Controller des myAVR Boards zu bertragen ist Jede Aktion wird wenn sie fehlerfrei verlaufen ist mit einer Ende Meldung quittiert Jetzt kommt endlich das myAVR Board ins Spiel Es wird uber das mitgelieferte Par allelportkabel Programmierkabel mit dem LPT1 Port des Rechners verbunden wir Bild 24 Im _ Ausgabefens _ter werden a
47. grafischen Programmablaufplan PAP Ab bildung 8 vermittelt einen ersten Eindruck dieser beiden Vorgehensweisen anhand der Bedienoberfl che von SiSy Diese werden wir anhand erster Pro grammierschritte in der n chsten Ausgabe eingehender kennen lernen ELV 81 PC Technik wal Seni EI Proprammieran mit Susy In dee Listen kanren See Prep serene een pen Nt Beschreibung POWER Of RESET Mikrocontroller Einstieg mit myAVR Teil 2 Keine Angst vor dem Einstieg in die Welt der Mikrocontroller Programmierung Die myAVR Sets enthalten alles Notige fur den schnellen und fundierten Be ginn der Programmierer Karriere Experimentier Board mit ATMEL Controller Lehrbuch Software Paket Kabel s mtliches Zubeh r Im zweiten Teil unserer Serie zum Einstieg in die AVR Programmierung betrach ten wir den AVR Assembler gehen auf die Grundlagen der Ein und Ausgabe Regis ter ein und zeigen das erste praktische Programmierbeispiel mit dem myAVR Board Der AVR Assembler Der Assembler ist ein Bestandteil der im ersten Teil bereits kurz betrachteten Entwicklungsumgebung SiSy Er dient dazu so genannte Maschinenprogramme in das f r den Controller allein direkt lesbare Bin rformat umzusetzen und die korrekten Adressen f r Sprungbefehle und Speicherzugriffe auszurechnen Denn der Controller kann nur Befehle im Bin rformat interpretieren Da sieht dann der bekannte R cksprungbefehl derin der Befehlstabelle m
48. hen n der n chsten Folge zu einer Kurzeinf hrung der AVR Programmierung in den Programmierspra chen C und BASCOM ber ap 4 4 4 43 1 qf a 3 4 4 4 4 a Referenzwert ooo00WL 000000 ooooo0o i f i 8 bf a Bild 53 Die Verdrahtung des myAVR Boards 75
49. ie Takterzeugung via 3 686411 MHz Quarz Jeweils ber die beigelegten Drahtbr cken und Buchsenleisten werden die Ports des Mikrocontrollers entsprechend der zu l senden Aufgabe mit den Leuchtdioden dem Piezo Signalgeber Tasten und Poten tiometern auf der Platine verbunden die als E A Bauteile dienen All diese Bau teile reichen um den 200 seitigen Mikro controller Lernkurs ohne weitere Hardware zu bew ltigen Alle Ports des Controllers sind uber eine Buchsenleiste herausgef hrt an die weitere Baugruppen z B die LCD Baugruppe oder eine eigene Applikation einfach ansteckbar sind Der Mikrocontroller Da man f r die jeweils anstehende Auf gabenl sung nicht ohne Grundkenntnisse ber den Aufbau und die Arbeitsweise des Mikrocontrollers auskommt wollen wir uns zun chst diesem zuwenden Der hier betrachtete ATmega8 Controller istin der grunds tzlichen Architektur all seinen AVR Verwandten hnlich Die Control lerbaureihe unterscheidet sich 1m Wesent lichen nur durch die Anzahl der I O Ports und die Speicherausstattung von seinen groben Verwandten Auch der ATtiny Mini Controller passt in dieses Schema Die Anschlussbelegung der beiden Cont roller die auf dem Board vorhanden bzw im ATtiny Programmierbausatz enthalten sind ist in Abbildung 5 zu sehen Zum Grundverst ndnis des Controller Aufbaus werfen wir einen Blick auf Ab bildung 6 Hier sind die Hauptbaugrup pen eines Mikrocontrollers zu sehen
50. ie bei jedem Controller der ATmega Reihe auch eine andere L nge Die Vektoren sind in der Tabelle in einer festen Reihenfolge platziert die nicht ver ndert werden darf Gleichfalls darfman keine Vektoren aus der Tabelle l schen die vor einem benutzten Vektor liegen POWER ON RESET INIT STACK PORT D2 INPUT PORT BO OUTPUT PORT D2 PullUp Maske INTO Aktiv INTO auf fallende Flanke konfigurieren Interrupts erlauben Hauptschleife Ende Hauptschleife Interrupts sperren Ausgabe an PORTB PORT BO 1 Interrupts erlauben Bild 33 Flussdiagramm zur Interrupt Steuerung 24 Interrupt Kontroll Logik Sie ist fester Bestandteil des Prozessor Steuerwerks und verantwortlich fur das Er lauben oder Verbieten sowie Konfigurieren von Unterbrechungen dem tatsachlichen Unterbrechen des laufenden Programms und fur das Ausl sen der korrekten Inter rupt Behandlungsroutine Wichtige Adressen Dass bei der Verwaltung der Interrupt Quellen und Vektoren Ordnung herrschen muss ist sicher jedem klar Hier gibt es kein Variieren ab der Adresse 0x0001 erwartet der AVR Controller im Programmspeicher immer die Liste der Interrupt Vektoren f r die jeweiligen Interrupt Quellen Die Adresse 0x0000 ist immer fest f r die Reset Interrupt Routine ausgel st durch ein Reset Signal an Pin 1 Zuschalten der Betriebsspannung oder Ausl sen des Watchdogs reserviert Ein Beispiel fur eine aktivierte Interrupt Behandlung
51. ikrocontroller programmierung das auf die Software und das AVR Board zugeschnittene AVR Lehrbuch mit ca 200 Seiten und schlie lich das myAVR Board Abbildung 2 das neben einem ATmega8 Controller eine Reihe f r alle denkbaren Versuche n tzlicher Periphe rie enth lt Dazu erg nzen Kabel Batterie Arbeits bl tter Schnelleinstiegusw den Lieferum fang es kann sofort losgehen nur ein PC jenach Kit mit LPT oder USB Schnittstel le wird noch ben tigt Das Plus Set der Reihe enthalt zusatzlich einen direkt an das AVR Board ansteck baren Bausatz f r die Programmierung der beliebten ATtiny Controller inklusi ve einem ATtiny12 und als Highlight ein komplettes ebenfalls an das AVR Board ansteckbares LCD Board mit einem zwei zeiligen beleuchtbaren LC Display Abbil dung 3 Dazu gibt es ein umfangreiches Lehrheft zur LCD Programmierung das auf ca 50 Seiten wirklich alles zur LCD Programmierung auch in verschiedenen Bild 3 Interessante Zusatzbaugruppe das LCD Board wird direkt auf den Expansionsport des myAVR gesteckt Das Board ist nebst LCD Pro grammierlehrgang in der Plus Version des AVR Star ter Kits enthalten 71 PC Technik RS232 Port COM RS232 Umsetzer Taster Digital in Potentiometer Analog in Eingabegerate Bild 4 Der funktionelle Aufbau des myAVR Boards Programmiersprachen erkl rt Fur weitergehende Experimente und L sungen sind eine Reihe von Hard
52. ilung wird nicht jede gew nschte Fre quenz exakt erreicht werden so auch unsere 440 Hz Denn wenn wir die Taktzyklen exakt durch die Vorteiler Faktoren teilen ergeben sich immer Nachkommastellen die mit dem ganzzahligen Zahler nicht zu realisieren sind Wir vernachlassigen jedoch hier die geringe Abweichung die unter einem Prozent liegt Wir teilen also die o g 4189 Taktzyklen durch 64 256 und 1024 und erhalten als nachstliegende ganze Zahlerwerte entspre chend 65 16 und 4 Rechnen wir zurtick 74 64 x 65 4160 256 x 16 4096 1024x 4 4096 4160 liegt dem Ziel 4189 am n chsten also w hlen wir die Kombination Vorteiler 64 und Re Initialisierungswert 190 255 65 Auf diese Weise kann man nahezu jede beliebige Frequenz bis herauf zur Takt frequenz dann ist der Vorteiler ber das Register TCCRO abzuschalten erzeugen Nachdem wir nun alle ben tigten Voraus setzungen besprochen haben was zeigt wie man eine zu l sende Aufgabe vorab durchdenken muss k nnen wir nun an das Schreiben des Programms gehen Das Programm Im Quellcode Abbildung 39 sehen wir zun chst den Zeiger in der Vektortabelle Funktion schaltung Pett B O an Speaker Fraozsessor Sprache Datum Version ATMmegqad Assembler OS 89 2006 2 8 Deal 3 6864 MHz Reset and Interrupt vector E jmp main Eek rer Eee Eeti Eeti Eeti reti Eeki E jmp Eeti Eet reti Eeti reti reti Eeti Bete
53. it der Mnemonik RET beschrieben ist so aus 1001 0101 0000 1000 In dieser Form w re es zwar prinzipiell m gl ch ein Programm zur direkten Eingabe in den Controller zu schreiben aber selbst erfah rene Programmierer w rden sich hier sehr schwer tun ein berblickbares Programm 54 zu schreiben Deshalb hat man o g Mnemo niks entwickelt die je nach Befehl noch mit entsprechenden Operanden erg nzt werden Alle von den AVR Mikrocontrollern unter st tzten Befehle sind in der Tabelle 1 siehe Teil 1 zusammengefasst Sie werden vom Assembler bersetzt compiliert und ge linkt und liegen schlie lich als Programm im Hex Format fiir das Ubertragen in den AVR Controller vor Programmeditor Zur Programmieroberflache von SiSy gehort auch ein Editor Abbildung 9 in dem man das Programm den so genannten Quellcode wie mit einem normalen Text editor schreibt Es kann nat rlich auch in einem beliebigen Texteditor verfasst wer den Bedingung ist lediglich dass der Text im ASCII Format abgespeichert werden kann Die ordentliche Formatierung die man im Quellcode sieht dient eigentlich nur der besseren bersicht ber die einzel nen Elemente der Programmzeilen Diese werden bersichtlich in Spalten angeord net k nnen mit beliebigen Kommentaren versehen werden und werden einfach mit Text Tabulatoren oder ganz profan mit der Leertaste erzeugt Wollen wir die Struktur des Quellcodes kurz anhand Abbildu
54. itt stelle PO 0 PC 5 EEPROM FLASH Interner Bus Analog Digital Interrupt Wandler Controller zwischengespeicherter Daten Seine Lese und Schreibzeiten sind sehr kurz so dass der SRAM der schnellste Speicher des hier besprochenen Verbunds ist Die dritte Klasse von Speichern sind die nicht fl chtigen Speicher Diese kommen als ROM oder E EPROM vor Sie behal ten grunds tzlich einmal hier gespeicher te Informationen auch bei Abschalten der Betriebsspannung und eignen sich so z B f r die Speicherung des Betriebsprogramms eines Controllers das beim Wiedereinschal ten sofort zur Verf gung steht Im ROM werden Daten fest gespeichert GND DATA REGISTER PORT C 8 BIT DATA BUS PORT C DRIVERS DATA DIR REG PORT C AVCC AGND AREF ANALOG MUX PROGRAM COUNTER PROGRAM FLASH INSTRUCTION REGISTER GENERAL PURPOSE REGISTERS X INSTRUCTION Y DECODER Z CONTROL LINES STATUS REGISTER PROGRAMMING SPI m LOGIC WATCHDOG TIMER MCU CONTROL REGISTER TIMER COUNTERS INTERRUPT as UNITS EEPROM XTAL1 XTAL2 INTERNAL OSCILLATOR OSCILLATOR _ TIMING AND CONTROL RESET el DATA REGISTER PORT B DATA DIR REG PORT B PORT B DRIVERS ANALOG DATA REGISTER DATA DIR COMPARATOR PORT D REG PORT D PORT D DRIVERS PD 0 PD 7 PC Technik Tabel
55. l geladen dass die Taste nicht gedr ckt ist denn auch dieser Fall muss definiert werden um dem Rechnereindeutige Anweisungen f r jeden Betriebsfall zu geben Das Laden von 0b00000001 bedeutet hier Pin BO 1 aktiviert den Pull up Widerstand Pin B 1 0 hei t LED aus geschaltet Der nachste in Befehl sorgt daf r dass 22 der Wert der am Eingang B 0 ber das Eingaberegister Pin B siehe auch Abbil dung 13 im Teil 2 durch den Taster definiert wird 0 oder 1 wiederum in einem allgemeinen Register hier rl7 zur Aus wertung zwischengespeichert wird Dies ist der an sich unauff llige Knackpunkt des Eingabeprogramms der Input Befehl Jetzt folgen die Festlegungen was der Controller mit dem eben in r17 abgelegten Wert anfangen soll Hier kommt mit sbrs ein so genannter eleganter Sprungbefehl engl skip zur Anwendung sbrs hei t Skip if Bit in Register Set zu Deutsch der Controller soll den dem Skip Befehl folgenden Programmschritt auslassen falls im folgend angegebenen Register hierr17 das ebenfalls angegebene Bit hier Bit 0 gesetztist Vereinfacht gesagt Stehthierder zun chst aus Port B ausgelesene Wert von Bit 0 aufeinerlogischen 1 hei t dies der Taster ist nicht gedr ckt und die LED darf nicht angesteuert werden Damit springt das Programm sofort in die Out Zeile Hier ver ndert sich nichts da in Register r16 ja immer noch die Ausgabedaten fiir einen offen
56. le 1 Kurzubersicht aller von den AVR Mikrocontrollern unterstutzten Befehle Arithmetik und Logikbefehle Mnemonics ADD ADC ADIW SUB SUBI SBC SBCI SBIW AND ANDI OR ORI EOR COM NEG SBR CBR INC DEC TST CLR SER MUL MULS MULSU FMUL FMULS FMULSU Operands Rd Rr Rd Rr Rd K Rd Rr Rd K Rd Rr Rd K Rd K Rd Rr Rd K Rd Rr Rd K Rd Rr Rd Rr Description Add without Carry Add with Carry Add Immediate to Word Subtract without Carry Subtract Immediate Subtract with Carry Subtract Immediate with Carry Subtract Immediate from Word Logical AND Logical AND with Immediate Logical OR Logical OR with Immediate Exclusive OR One s Complement Two s Complement Set Bit s in Register Clear Bit s in Register Increment Decrement Test for Zero or Minus Clear Register Set Register Multiply Unsigned Multiply Signed Multiply Signed with Unsigned Fractional Multiply Unsigned Fractional Multiply Signed Fractional Multiply Signed with Unsigned Befehle zum Datentransfer Mnemonics MOV MOVW LDI Operands Rd Rr Rd Rr Rd K Rd k Rd X Rd X Rd X Rd Y Rd Y Rd Y Rd Y q Rd Z Rd Z Rd Z Rd Z q k Rr X Rr X Rr X Rr Y Rr Y Rr Y Rr Y q Rr Z Rr Z Rr Z Rr Z q Rr Rd Z Rd Z Rd Z Rd Z Rd A A Rr Rd Description Copy Register Copy Register Pair Load Immediate Load Direct from data space Load Indirect Load Indir
57. lle Vorgange beim Brennen des _AVR Flash d kontrolliert ELVjournal 3 06 o Soon u 0O0 00000 Pore P Pee eee D EEE eee ee ED Bild 25 Schnell verdrahtet so wird PBO mit der roten LED verbunden beziehen uns hier auf diese LPT Version bei der USB Version ist die Vorgehensweise in der mitgelieferten Dokumentation beschrie ben Der LPT Port des Rechners kann hier auch die erforderliche Betriebsspannung liefern dies erkennt man am Aufleuchten der griinen Betriebs LED Ist die Verbindung hergestellt geht es ans Brennen des eben hergestellten Hex Files in den Flash Speicher des AVR Nach Anwahl der Schaltfl che Brennen startet der Vorgang unter Protokollierung in einem Ausgabefenster Abbildung 24 Erscheint die hier zusehende Meldung sind bertragung und Verifizierung erfolgreich verlaufen Geht s Der erste Testlauf Nun kommt der spannende Moment L uft unser erstes Programm auf dem AVR Dazu trennt man zun chst das Pro grammierkabel vom myAVR Board und verbindet mittels einer der mitgelieferten Patchleitungen den Buchsenleistenkontakt von Port BO mit der Buchsenleiste einer der LEDs inunserem Beispiel Abbildung 25 der roten LED Schlie t man nun eine 9 V Spannungsquelle an das myAVR Board an leuchtet die LED unser Pro gramm funktioniert Jetzt ist der Experimentierdrang ge weckt Bevor wir n der n chsten Folge u a zur Eingabeprogrammierungkommen probieren Sie
58. llende S gnalflanke der f r eine Auswertung interessante Moment also wo der Taster tats chlich gedr ckt wird und den Eingang auf low schaltet vornehmen Dieses Mal machen wir uns die zu pla nenden Programmschritte zuerstanhand des Flussdiagramms klar Abbildung 33 initialisieren Port D 2 als Eingang festlegen und Pull up aktivieren Port B 0 als Ausgang festlegen Maskierung f r INTO aktivieren INTO fur fallende Flanke konfigurieren Inter rupt erlauben bei Ereignis ISR starten andere Inter rupts sperren Port BO auf 1 LED an schalten Interrupts freigeben zur ck zum Hauptprogramm Im Quellcode Editor wird wieder das Grundger st geladen und vorbereitet dieses ELVjournal 4 06 Mal aktivieren wir aber den Vektor f r den Bild 34 INTO Interrupt hier mit EXT 0 Die Verdrahtung zur Die Initialisierung wird hier etwas l n Interrupt Steuerung auf ger Nach der Konfiguration des Eingangs dem myAVR Board und des Ausgangs mit cbi und sbi Befehlen wird zun chst im Register r16 eingetragen dass INTO maskiert werden soll Bit 6 auf 1 erlaubt den externen Interrupt ber INTO Die Ansprache dieses Registers erfolgt wie bei einem I O Re gister per out Befehl Danach erfolgt das Auslesen dieses Registerwertes in das r Base Interrupt Register GICR Di 0 00 Die fallende Flanke als Ausl ser wird r tas 00 jetzt ebenfalls ins Register r16 eingetragen EY Bit
59. n Signalen ber die entsprechenden I O Lines Was man zun chst wissen muss ist der Fakt dass 20 der Controller nach dem Einschalten oder einem Reset immer den Inhalt der Regis ter DDRB C D komplett auf null setzt 0600000000 die anh ngenden I O Linessind damit zun chst stets als Eingang gesetzt Erst das Laden des entsprechenden Steuerregisters mit 1 wie in unserem ersten Programmbeispiel f hrt zu einer Konfiguration als Ausgabe Linie Wir wollen aber nun den Fall der Konfi guration als Eingabe Liniebetrachten Das f ngt damit an dass ein digitaler Signal Eingang noch dazu so ein empfindlicher wie der CMOS Eingang des AVR Control lers stets definiert auf Us Pull up oder Masse Pull down zu setzen ist Warum Ein digitaler Eingang wirkt frei in der Luft hangend wie eine Empfangsantenne f r alle m glichen elektromagnetischen Felder und liefert dem nachfolgenden Steuerregister undefinierbare Signale statt ordentlicher High und Low Signale wie es in der Digitaltechnik blich ist Schlie t man hingegen den Eingang definiert mit einem Pull up Widerstand ab wie es in Abbildung 26 zu sehen ist ist der Eingang nie offen und kann so die erwahnten Felder nicht mehr ohne weiteres einfangen Ist ELVjournal 4 06 der hier als Signalquelle dienende Taster offen liegt der Eingang definiert auf Us liefert also die digitale Information 1 Ist der Taster hingegen geschlossen li
60. n eine auf den Controller bertragbare Hex Datei zur Verf gung Rein und raus I O Grundlagen Jeder Mikrocontrollerkommuniziert mit seiner Umwelt ber so genannte Ports Dies sind der jeweiligen Aufgabe angepasste Ein und Ausgangsstufen die bei kleineren Controllern aus Mangel an mechanisch realisierbaren Pins schon einmal so aus gef hrt sind dass man sie wahlweise als Ein oder Ausgang programmieren kann Die AVR Controller sind dar ber hinaus so konfiguriert dass man auch die Steu erregister die f r die unterschiedlichsten Standardaufgaben des Controllers zust n dig sind aus der Sicht des Programmierers bzw Rechenwerks als I O Ports realisiert hat Deshalb werden diese Register auch wie Ports angesprochen bzw die hier als VO Lines bezeichneten physischen Ports wie Register Alle Ports haben eine feste Registeradresse ber die sie angesprochen werden k nnen Bei der Programmierung verwendet man hierzu so genannte Alias PORTx DDRx Register Register DDRx PINx Bild 13 Das Wirkungsschema des Steuerregisters DDRx bei out oben und in Befehlen unten POWER ON RESET INIT STACK PORT BO OUT DDRBO 1 Hauptschleife Ausgabe vorbereiten Register 16 0b00000001 Ausgabe Register 16 auf PORT B Bild 14 Im Flussdiagramm ist die zu l sende Aufgabe bersichtlich skiz ziert Namen die sich jeweils in der bereits erw hnten Datei AVR H finden Widmen wir uns abe
61. nd zu modifizieren wir nutzen nun den Timer 1 und dessen Overflow Meldung als Interruptquelle Das Ergebnis ist im Listing in Abbil dung 41 zu sehen Die Verdrahtung ist identisch mit der in Abbildung 40 Das soll es zunachst zu den Timern gewesen sein Im Schulungsmaterial zu myAVR finden Sie noch mehrere weitere Nutzungsbeispiele darunter auch eine ausfuhrliche Erklarung zur Nutzung der PWM Funktion des Timers In der nachsten Folge geht es um die Kommunikation mit dem PC ber die se rielle Schnittstelle wir lernen die UART kennen 75 SiS f r Windows beinpiele l 4aam_spr Programmlaran mit SiSy Hy F ditam Diagram binnen H Prig itt Bi ver ichida en Pri ee eer Wie Beschreibung POWER ON RESET L TntO Tnterrupt Intl Interrupt T Compare Mate za GWEDE low T capture smpare Raton A mare fateh N E u Mikrocontroller Einstieg mit myAVR Teil 5 Keine Angst vor dem Einstieg in die Welt der Mikrocontroller Programmierung Die myAVR Sets enthalten alles Notige f r den schnellen und fundierten Beginn der Programmierer Karriere Experimentierboard mit ATMEL Controller Lehrbuch Softwarepaket Kabel s mtlichem Zubeh r Im f nften Teil unserer Serie zur Programmierung des AVR besch ftigen wir uns mit der Kommunikation zwischen AVR und seiner Umgebung ber die serielle UART Schnittstelle UART seriell und asynchron Der Austausch von Daten mit anderen Systemen ist eine wichtige Voraussetz
62. ne die normgerechte RS232 Kommunikation nach au en UART initialisieren Wollen wir uns nun mit der Program mierung des UARTs befassen um schlie lich Daten an einen angeschlossenen PC zu senden Baudrate einstellen Wie gesagt die Baudrate wird direkt aus dem Systemtakt abgeleitet Die RS232 Konventionen sehen eine Reihe definierter Baudraten z B 1200 2400 9600 57 600 Baudratenregister Controlregister Statusregister Datenregister UBBR UBRRL UBRRH UCR UCSRB USR UCSRA UDR Systemtakt Bild 45 Der Aufbau des UART und 7 6 seine Register belegung Die Register bezeichnungen k nnen je nach Controllertyp variieren die 7 6 Funktionen 7 6 sind jedoch kompatibel N28 T2 Baudratengenererator UART Logik Interrupt Y hy TXD 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 RXD 0 Bit _RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 UCR UCSRB 0 Bit RXC TXC UDRE FE PE u2x MPCM USR UCSRA 0 Bit LSB UDR ELVjournal 6 06 YME Beschreibung POWER ON RESET Int Interrupt Int1 Interrupt Tce Compare Match Tce Overflow TCi Capture TCi Compare Match A TCi Compare Match B TOL Overflow T0 Overflow SRL alre Seb tal Teanster Complete ULET Rx Complete UART Data Register Empty ULET Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator LCI Serial Interface 1 a 3 4 a 6 5 5 Wo oO TWI Store Program Memory Ready Bild
63. ng 9 und ff n her betrachten Ausf hrliche Abhandlungen hierzu z B zur Interrupt Behandlung oder zum Stack finden sich im Kursmaterial des myAVR sowieinden Assistenzfunktionen von S1Sy denn ein ausf hrlicher Assemb lerkurs ist im Rahmen dieses Artikels nicht unterzubringen Hier soll es ja lediglich um den Einstieg gehen Innerhalb der prak tischen Beispiele werden wir bei Bedarf allerdings auf jeden Programmschritt und jeden Befehl ausf hrlich eingehen ELVjournal 3 06 Kommentare und Programmkopf Jedes Programm beginnt mit dem Programmkopf der zahlreiche Kommen tarzeilen enthalt Eine Kommentarzeile beginnt stets mit dem Semikolon Zeichen Hier tragt man im Programmkopf grundsatzliche Angaben zum Programm wie Name Funktionen Autor Version Datumsangaben vorgesehener Prozessor usw zur Dokumentation ein Die Zeile include AVR H bezeich net die Einbindung der f r alle AVRs feststehenden Datei die die I O Register Ports des AVR verschl sselt in das Pro gramm Sie wird automatisch generiert und erscheint im fertigen Projektordner als so genannte H Datei Weitere Kommentare sind beliebig innerhalb des Programms einschreibbar sie sind nur jeweils mit dem Semikolon zu kennzeichnen Reset und Interrupt Tabelle Als N chstes folgt die so genannte Reset und Interrupt Tabelle ein fester Bestandteil jedes Programms Hier werden entsprechend des verwendeten Controllers Ansprungpunkte
64. nn man am besten in einem Flussdiagramm erkennen wie es Programmierer zur besseren bersicht ber ihre Programmplanungen entwerfen Das zu unserem Programm passende Diagramm ist in Abbildung 14 zu sehen Licht an Das erste Programm Jetztgehen wirwiebeschrieben vor SiSy starten und Assistent starten anw hlen Abbildung 15 dann im Assistenten neues Projekt anw hlen Hier Abbil dung 16 erscheint das Eingabefenster kleines Programm Extras AVR Quellcode erweiterte Einstellungen Report Tipp Definition Programmger st Name Sprache LEDON AVA Assembler Dateiname LEDON s gt ffnen LEDON hex o ffnen Speicherort D DOKUME 1 MICHAEL MS EIGENE 14SISY P 1 Programm Beschreibung ERSTELLEN amp AUSF HREN Erstellen Debug starten Ausf hren Abbrechen Bild 19 Das Dialogfenster fur Grund einstellungen und Programmierung 58 f r den Projektnamen und den Standort der Projektdatei der erfahrene Benutzer gelangt hierhin direkt aus dem Startmen ber Neues Projekt Nach Eingabe des Projektnamens erscheint der Abfragedialog zum Vorgehensmodell Abbildung 17 hier ist Programmierung auszuw hlen Aus dem dann folgenden Vorschlag Dia grammvorlagen Abbildung 18 wird zun chst keine Vorlagen angew hlt Jetzt erscheint das bereits bekannte S Sy Editorfenster und es ist aus der Ob jektbibli
65. ntiert Unterprogramme auf die jeweils mit Sprungbefehlen aus dem Hauptprogramm zugegriffen wird Apropos kommen wir noch einmal zum Thema Ubersichtlichkeit Die eingangs erwahnte Spaltenanordnung der einzelnen Textteile des Programms dient wesentlich der Ubersicht tiber das Gesamtprogramm und sollte 1m eigenen Interesse strikt eingehalten werden Noch einige Erlaute rungen dazu In der ersten Spalte finden sich die so genannten Marken bzw Bezeichner fur Standard Adressen die von den Sprung befehlen im Programm genutzt werden Schreibe ich also rjmp mainloop ins Programm erfolgt ein Sprung zur Adresse die sich hinter dem Bezeichner mainloop verbirgt Marker Bezeichner sindimmer als erste Spalte einzuschreiben sie m ssen mit einem Buchstaben beginnen und miteinem Doppelpunkt enden 56 In der zweiten und dritten Spalte sind die Maschinenbefehle sowie deren Operanden mit Ziel und Quelle in dieser Reihenfolge der Operation einzutragen Schlie lich kann zu jeder Programmzeile wiederum ein Kommentar Beschreibung eingetragen werden So und in deutliche Programmteile auf geteilt strukturiert bleibt jedes Programm bersichtlich und einzelne Bestandteile s nd klar definiert abgegrenzt Hat man das Programm fertig geschrie ben tritt der Assembler berhaupt erst in Aktion Er bersetzt den geschriebenen Quellcode pr ft diesen dabei auf Plausibi lit t und exakte Programmierung und stellt nach dem Linke
66. othek das Icon kleines Programm per Drag amp Drop in das Diagrammfenster zu ziehen Daraufhin ffnet sich ein Dialogfenster in das unter Definition zun chst noch einmal der Programmname einzutragen und anschlie end unter Sprache die Option AVR Assembler auszuw hlen ist Abbildung 19 kleines Programm Programmger st Repot Tipp Quellcode Extras AVR Definition erweiterte Einstellungen verwendenter Controler ATmegad verwendenter Programmer sisy verwendenter IO Port C Abbrechen Bild 20 Auch der AVR Typ und die Art des Programmiersystems lassen sich hier einstellen wa Vorgehensmodell Kompilieren Linken kleines Programm Extras AVR Quellcode Repot Tipp Programmger st erweiterte Einstellungen Definition Struktur Grundgerust Assembler Vorlage f r SiSy AYR Board Unterprogramm EERead Unterprogramm EE Write Unterprogramme initT CO und onT CO Unterprogramm initlUART Eingabe Ge Title Grundger st f r SiSy 4VR Board Funktion Schaltung f Prozessor ATmega8 3 6864 MHz Struktur laden Abbrechen Bild 21 Das Grundgerust des Pro gramms wird geladen Unter Extras AVR Abbildung 20 wird sodann der eingestellte Controller Typ ATmega 8 der Programmer sisy und der verwendete I O Port hier LPT1 kontrolliert bzw eingestellt ber die Option
67. r Optionen werden die der Timer bietet Dabe wird man fr her oder sp ter die M glichkeiten des 16 Bit Timers auspro bieren wollen Der hat bekanntlich einen Z hlbereich bis 65 535 Das wollen wir gleich testen und stellen dem Controller im Prinzip die gleiche Aufgabe wie vorher allerdings soll nun die LED mit 5 Hz deut lich sichtbar blinken Ergo ergibt sich die Wartezeit bei 3 6864 MHz Takt mit 368 640 Zyklen da ja wieder beide Halb wellen zu ber cksichtigen sind der Takt also durch 10 zu teilen ist Teilen wir diese Zyklenzahl durch 1024 so ergibt s ch der Z hlerwert von 360 f r Timer 1 kein Pro blem und zur ckgerechnet ergibt sich genau der Wert der Wartezeit In bew hrter Manier ziehen wir diese 360 von 65 535 ab und er halten einen Re Init Wert von 65 175 Jetzt ergibt sich ein Problem Der 16 Bit Wert passt nicht zur 8 Bit Busstruktur des Controllers w r k nnten also die sich er gebende 16 stellige Bin rzahl nicht als Re Init Wert in der ISR eintragen Das Datenblatt des ATmega8 gibt aufSei te 79 Aufschluss ber die Losung man teilt die Zahl in zwei Bytes auf das so genannte Low Byte und das High Byte schreibt die beiden Bytes n ein Register Paar und liest sie dann nacheinander wieder aus Also tr gt man den Hex Zahlenwert von 65 175 FE97 entsprechend in zwei Register ein gefolgt von den entspre chenden Out Befehlen Nicht vergessen den Eintrag n der Vektortabelle entspre che
68. r einen der Taster auf dem myAVR Board als Einga beorgan und verbinden das schon in Teil 2 erarbeitete Ausgabeprogramm mit dieser Eingabeoperation was nichts anderes hei t als den an Port B 0 anzuschlieBenden Tas ter dr cken eine der LEDs mit Port B 1 verbinden und diese mit dem Taster ein und ausschalten Damit werden gleich zwei Pro grammroutinen miteinander verbunden einer Aktion folgt eine Reaktion Dazu gehen wir dieses Mal den umge kehrten Weg und sehen uns zunachst das fertige Programm an um den strukturierten Aufbau eines Programms weiter zu vertie fen Abbildung 27 Hier erscheint zunachst die bereits bekannte und unver ndert ber nommene Reset und Interrupt Tabelle darauf der Initialisierungsteil Hier sind gegen ber der reinen Ausgabe Initialisie rung ein paar Zeilen hinzugekommen die Eingabe Initialisierung Zunachst ist hier ein neuer Befehl zu sehen cbi wird eine LED rote LED an Fort B 1 Ing Fad Alexander Huwaldt Beschreibung POWER ON RESET Int Interr pt Ine1 Interr pe Tce Compare Match Tle Overflow TCi Capture TC1 Compare Match A TC1l Compare Match E TCi Overflow TLD Overt tom SPI 5TG Serial Transfer Complete UART Ex Complete ULET Data Register Empty ULET Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TUE ley serial Interrare Store Frogram Memory Ready Stack InTtisalisgierung Init Stackpointer FortB 0 auf Eingang ri PoS
69. r zun chst den physischen Ports unseres AVR Control lers Der auf dem myAVR Board verbaute Controller verf gt ber 3 digitale 8 Bit I O Ports d h ber insgesamt 24 so genannte VO Lines Port BO B7 Registeradresse 0x18 Port C0 C7 Registeradresse 0x15 Port DO D7 Registeradresse 0x12 Betrachtet man nun einmal die voll st ndige Anschlussbelegung des auf dem myAVR Board verbauten Controllers Abbildung 12 erkennt man auf Anhieb dass aufgrund der geringen Baugr e des Controllers fast alle Pins doppelt belegt sind Damit ergeben sich bei der Program mierung jeweils einige Einschr nkungen etwa die dass bei unserem myAVR die Ports PDO und PD1 nicht frei zur Verf gung stehen da sie festmit dem RS232 Baustein f r die Datenkommunikation verdrahtet sind Weitere Besonderheiten und auch die vollst ndige Registertabelle mitallen Adres sen sind im myAVR Lehrgang detailliert aufgef hrt Das f hrtschlie lich dazu dass je Portnoch 6 O Lines frei verf gbar bleiben wobeimanPC0 C5 als A D Wandler Ports ADC ber cksichtigen muss Entsprechend der genannten AVR Port Philosophie erfolgt die Programmierung der Ports ber jeweils 3 so genannte I O Register siehe Abbildung 13 Zun chst ist hier das Steuerregister DDRx Data Direction Register Port x B C D zu besprechen das die Richtung des Daten ELVjournal 3 06 Willkommen in SiSy x Neues Projekt erstelien Vorhandenes Projekt ffnen Projektvoriage v
70. rdware wie A D D A Wandler UART usw bereits Bestandteil des dennoch kompakten Controllers sind Programmie rer schatzen die einfach zu handhabende 76 und bersichtliche Art der Programmie rung eines der Hauptargumente vieler Pro grammierer den AVR gegen ber dem an sonsten funktionellnahen Verwandten PIC vorzuziehen Entsprechend findet man die AVR Controller inzunehmend mehr Schal tungsl sungen sie sorgen f r ein ber sichtliches und konomisches Hardware Design und sind auch von Programmier Einsteigern einfach zu programmieren Bereits vor 5 Jahren haben wir uns aus f hrlich mit den Grundlagen der AVR Ar chitektur und Programmierung besch f tigt Seither hat sich viel getan ATMEL hat die Angebotsbreite der beliebten Cont roller enorm erweitert die Entwicklungs Tools sind immer besser handhabbar und man findet f r jedes zu l sende Problem den passenden Controller Der Hersteller bietet f r den professio nellen Entwickler mehrere Entwicklungs Kits an gro er Beliebtheit erfreut sich z B das AVR Starter Kit STK 500 Wie gesagt derartige Werkzeuge wen den sich jedoch an den Profi Entwickler also an den der etwa schon Programmier sprachen wie Assembler oder C beherrscht und au er einer passenden Entwicklungs ELVjournal 2 06 umgebung kaum weitere Mittel zur Pro grammierung ben tigt Anders hingegen stellt sich eine solche professionelle Entwicklungsumgebung dem Einsteiger dem Aus
71. re Beschreibung quasi von hinten sollte zeigen dass es relativ einfach ist einmal erarbeitete Algorithmen erneut an zuwenden und in neue Programml sungen einzubinden Hat man erst einmal die we sentlichen Befehle und ihre Auswirkungen im Hinterkopf f llt es nicht mehr schwer zun chst das Flussdiagramm anhand der zu l senden Aufgabe zu entwerfen Dass das seinen Sinn hat merkt man sp testens dann wenn man so weit ist mehrere Pro grammteile so genannte Unterprogramme miteinander zu kombinieren ohne sich im Quellcode zu verlaufen Denn allein schon unser kleines Beispiel zeigt dass man keine Aktivit t die im Verlaufe der Programmabarbeitung passieren kann au Ber Acht lassen darf um keine ungewollten Reaktionen zu erhalten Weiterf hrendes zur Systematik des Programmentwurfs findet sich sehr ausf hrlich nebst mehre ren auch umfangreicheren Programmier beispielen im Lehrgangsmaterial und auf der Programm CD Hier gibt es auch eine ausfuhrliche und vor allem gut verstand liche Unterweisung zur Programmierung mit Unterprogrammen und Sprunganwei sungen auf die wir im Rahmen unserer Serie ebenfalls nur dann n her eingehen wenn sich die Gelegenheit dazu in unseren Beispielprogrammen ergibt Unser Programm wird nun in die Praxis umgesetzt ein inzwischen bekannter Vor gang Quellcode in den Editor schreiben kompilieren linken auf den AVR brennen Verbindet man nun nach Abbildung 29 einen Taster de
72. riff maskierbar gekennzeichnet bei unserem ATmega8 sind dies z B die allgemeinen externen Interrupts INTO und INT1 Dazu stehen entsprechende Steuerregister als Maske zur Verf gung in denen man ber die ent sprechenden Bits die Interrupts ein 1 und ausschalten 0 kann Man teilt also dem Steuerwerk mit welches Ereignis als Interrupt akzeptiert werden soll F r unsere eben erw hnten INTO und INTI hei t das zust ndige Register GICR Je nachdem wie dessen Bits 6 bzw 7 gesetzt werden sind die Interrupts erlaubt oder gesperrt SchlieBlich kann auch die Art der Interrupt Auslosung festgelegt werden Bei jedem digitalen Signal gibt es die unterschiedlichen Zustande High Pegel Low Pegel fallende und steigende Signal flanke die die externen Interrupts ausl sen konnen Diese Konfiguration erfolgt tber die Bits 0 bis 3 des Registers MCUCR siehe Registertabelle Bei Setzen des Bits 0 erfolgt eine fortlaufende Interrupt Ausl sung solange Low Pegel anliegt bei Bit 1 l st jede Pegel nderung einen Interrupt aus bei Bit 2 die fallende bei Bit 3 die steigende Flanke Nach so viel Theorie wollen wir das Gan ze zun chst wieder an einem ganz einfachen Beispiel praktizieren wir schlie en einen Taster an den Interrupt PortINTO Port D 2 an und nutzen diesen als Ereignis Quelle Wird der Taster gedr ckt soll wieder die rote LED an Port BO aufleuchten Die Auswertung wollen wir ber die fa
73. s myAVR Boards mit dem ELVjournal 4 06 Bild 31 Der Grundaufbau der Interrupt Service Routine Port Pin B 0 und eine LED mit dem Port Pin B 1 so muss nach Anschluss der Span nungsversorgung beim Drucken des Tasters die LED aufleuchten Das war zu einfach Dann erweitern Sie doch zum Training das Programm um einen zweiten Taster der die nachste LED ansteuert Da wird das Programm schon etwas komplexer Interrupt Steuerung Fur Programmier Einsteiger hat das Wort Interrupt Steuerung einigen Schrecken die Profis sprechen da von Interrupt Vek toren Interrupt Service Routinen Interrupt Quelle Maske usw DermyAVR Lehrgang schafft es dennoch dieses etwas sperrig erscheinende Thema so zu vermitteln dass man nach kurzer Zeit nicht nur mitreden sondern auch entsprechend programmieren kann Das wollen wir hier ausprobieren Was ist Interrupt Steuerung ei gentlich Bei unserem letzten Programmierbei spiel haben wir ein typisches Beispiel einer sequenziellen Abfrageroutine Polling kennen gelernt Der Zustand des Tasters wird st ndig abgefragt bis dieser den erwar teten Zustand gedr ckt einnimmt Abbil dung 30 unddenAktor die LED anspricht Gleicherma en k nnte so auch ein l ngeres EAT INTO cli push ri pop rif sei reti weitere Interrupts unterbinden 1 Pegister tretten Interruptbehandlung Registerinhalt wieder zur ckladen Interrupts wieder zulassen Interrupt beenden
74. scherweise die beiden Potentiometer des myAVR Boards die den Komparatoreing ngen Spannungen zwischen 0 und 5 V liefern k nnen Das Programm Im Quellcode Abbildung 52 sehen wir dass gar nicht so viel Aufwand f r die L sung dieser einfachen Aufgabe getrieben werden muss Nach Interrupt Vektortabelle und Stack Initialisierung finden wir hier zun chst die beschriebene Aktivierung des Komparators ber sein Register ACSR und dessen Bit 7 Danach folgt die Aktivierung des Bits 6 was bedeutet dass die externe Referenz spannung genutzt werden soll Und schlie lich finden wir einen alten Bekannten wie der Port BO wird als Ausgabeport f r die rote LED definiert Im Hauptprogramm folgen nun der Auslesebefehl des Komparator Statusre gisters das Laden des Ausgaberegisters r25 mit 0 also LED aus Jetzt wird es spannender wurde das Komparator Sta tusregister Bit 5 mit 1 ausgelesen be deutet dies dass die Eingangsspannung an Pin AIN 1 h her ist als die an Pin AIN 0 Jetzt wird Register r25 mit l geladen und dies an Port B ausgegeben die LED wird eingeschaltet Abbildung 53 zeigt die Verdrahtung des myAVR Boards f r die se Aufgabe Das war s und das war es auch mit un serem kleinen Assembler Lehrgang zum AVR Controller Wie gesagt das Lehr gangsmaterial zum myAVR Board enth lt noch viele vor allem weiterf hrende Bei spiele und interessante L sungen bestimm ter Aufgaben Wir ge
75. schnellsten Prozessoren Abbildung 7 zeigt bereits ein kom plexeres Bild den Aufbau unseres ver wendeten AVR ATmega Hier finden sich alle besprochenen Baugruppen in detaillierter Aufteilung wieder VCC Register RAM ROM Flash Wichtig fiir das Verstandnis bei der spateren Programmierung isthiernoch der etwas detailliertere Blick in die Speicherausstattung Mikrocontroller verf gen ber mehrere Speicherarten die jeweils unterschiedliche Aufga ben haben Direkt im Kontakt mit dem Prozes sorkern dem Rechenwerk ALU ver bunden sind die Register Diese die nen der Verwaltung des Befehlscodes sie sind die Operanden und Ergebnis speicher f r die direkten Maschinen Bild 7 Blockschaltbild des ATmega8 _ ELVjournal 2 06 l 7 Bild 6 Grundaufbau eines Mikro Zentralein controllers heit serielle parallele I O befehle des Rechenwerks Die einzelnen Register haben jeweils bestimmte Auf gaben wie wir noch im Verlaufe der Pro grammentw rfe sehen werden Wichtig zu wissen ist die Tatsache dass die Speicherin formationen der Register beim Abschalten der Betriebsspannung gel scht sind Das sind auch diedesSRAM Datenspei chers Der dient zur Speicherung der bei der Abarbeitung von Programmen anfallenden Programmdaten sowie aller Informationen die nicht fest im eigentlichen Programm des Controllers verankert sind etwa auch von au en erfasster bzw eingegebener oder Schn
76. sroutine fur die Interruptleitung INTO Pin 4 Port D2 unseres AVR Controllers zeigt Abbildung 32 Hier ist auch noch einmal die eben beschriebene Adressreservierung zu erkennen Interrupt Befehle und Register Fur das gesamte Handling der Interrupt Quellen stehen Steuerregister und einige spezielle Befehle zur Verf gung Die beiden wichtigen Befehle sei und cli dienen der Aktivierung und Deaktivierung der Interrupts sei signalisiert dem Steuerwerk dass In terrupts erlaubt sind Er setzt das Interrupt Flag I Bit 7 im Status Register SREG siehe Register bersicht zumyAVR cli signalisiert dem Steuerwerk dass Interrupts verboten sind Er l scht das Interrupt Flag I Bit 7 im Status Re gister SREG siehe Register bersicht zu myAVR Jetzt wird auch ein Blick in die eben genannte Register bersicht interessant Hier finden wir f r jede Interrupt Quelle mindestens ein spezifisches Steuerregis ter Interrupt Register und z B Register MCUCR das die Konfiguration der In terrupt Quelle prinzipiell hnlich wie bei den I O Registern erlaubt Interrupts die nicht abschaltbar sind nennt man nicht maskierbar Solch ein Interrupt ist z B die Interrupt Quelle RESET logisch w rde man diese versehentlich abschalten gel nge kein definierter Reset des Controllers mehr Hingegen sind die externen Interrupts die man per Programm ein und ausschal ten kann mit dem Beg
77. terrupt Se m el ae eee aus nach dessen Abarbeitung die LED leuchtet das Hauptprogramm weiterlauft In unserem Beispiel Start Power ON Reset wird ja nur die Interrupt Routine main ldi ri RAMEND abgearbeitet und da keine weitere a we ee RE ESSEN US Reaktion als die auf die fallende an SPH ee Flanke des Eingangssignals definiert ai DDRD 2 spart DE Tastee I ist bleibt die LED an sooft man shi PORTD 2 Pullvp auch den Taster dr ckt Erst durch sbi DORE O Port B O LED OUT einen RESET Buchse RESET Set foes oo Na Ann kurzschlie en gelangt der Controller out ICE EL 5 ie sa ee wieder n den Startzustand und die MUCH rig fallende Fanke als Ausl ser LED verlischt erlaube Interrupts Dieser Interrupt Service Routine werden wir in der Folge noch fter begegnen u a schon im n chsten Teil wenn es um die Nutzung der integrierten Timer geht wir entlo cken dabei dem AVR T ne reti EEPROM Ready Analog Comparator sbi PORTE sei Bild 35 Unser Beispielpro gramm f r die Nutzung von INTO als Interrupt Quelle ELVjournal 4 06 25 PC Technik SiS f r Windows beingiele l 4aam_spr Paek Werkreug Derbe Auif hren Anscht Erstellung Padte Programmieren mit Sisy In dee is sen K nnen Se Prep serene een Pre tater ee keine Taste Mikrocontroller Einstieg mit myAVR Teil 4 Keine Angst vor dem Einstieg in die Welt der Mikrocontroller Programmierung Die
78. ung f r die Arbeit mit Mikrocontrollern Der Kommunikations Partner muss nicht im mer ein PC sein auch Tastaturen Displays und externe Speicher m ssen vom Prozes sor abgefragt bzw mit Daten versorgt wer den Dabei hat sich in Mikrocontrollern die serielle Schnittstelle bis heute bew hrt Sie ist einfach aufgebaut entsprechend einfach handhabbar und in den Controllern imple mentiert Beim AVR Controller finden wir neben den seriellen Interfaces C und SPI die serielle Schnittstelle in Form eines integ rierten UART Bausteins Universal Asyn chron Receiver Transmitter Dieser spezi elle Schnittstellenbaustein unterstutzt die serielle Daten bertragung nach der weit ELVjournal 6 06 verbreiteten RS232 Norm und stellt damit eine einfache M glichkeit dar Daten zu versenden und zu empfangen Dies erfolgt ber die Zweidrahtschnitt stelle des AVR Diese allerdings arbeitet mit den in Mikrocontrollersystemen blichen Bild 42 Der MAX 232 sorgt fur die normge rechte Erzeugung der Pegel fur die RS232 Schnittstelle aus der 5 V Be triebsspannung Daruber ist der RS232 Port zu sehen TTL Pegeln Das ist in Ordnung solange uber kurze Strecken etwa mit einem ange schlossenen Speicherbaustein direkt kom muniziert werden soll Will man aber eine RS232 Verbindung zur seriellen Schnittstelle eines PCs auf 71 PC Technik Bild 43 Die vollstandige RS232 Ver bindung mit Steuerleitungen bauen sin
79. ware Komponenten verf gbar so etwa direkt ansteckbare Laborkarten oder ein Metall detektor Projekt Mit Hilfe der zahlreichen Beispielpro gramme ist es dem der es ganz schnell wissen will m glich in wenigen Schritten sein erstes Programm zu laden zu kompi lieren auf den Controller zu bertragen und zu testen Anschlie end entsteht au tomatisch der Wunsch zu verstehen wie es funktioniert wie man es anpassen ver bessern und erweitern kann Besonders f r Lehrpersonal ist diese Komplettl sung ideal kann man doch kosteng nstig und unter f r jeden Auszu bildenden v llig gleicher Hard und Soft ware Ausstattung den Einstieg in die Mik rocontroller Programmierung lehren F r Lehrer sind brigens speziell zusammenge 7 PB2 SCK TO 6 PB1 MISO INTO 5 PBo mos 28 PC5 ADC5 27 PC4 ADC4 26 PC3 ADC3 25 PC2 ADC2 24 PC1 ADC1 23 PCO ADCO Bild 5 An schluss belegung der AVR Mikro controller oben ATtiny unten ATmegad Ki z i sed ee 4 b oo 4 P Mm 14 uC ATmega8 die Ons E X ma ee J oo pt 4 B fl B Port B TT 00000 EE E r te Te Te L A Expansionsport stellte Paketl sungen z B mit erweiterter Hardware Ausstattung verf gbar Werfen wir zun chst einen Blick auf die Experimentier Hardware wozu auch das Wichtigste zur eingesetzten Controllerfa milie geh rt bevor wir uns der Entwick lungsumgebung und ersten Softw
80. z Stare main Power CN Beset ldi ELE out SEHE ldi ELE 155 RAMENT out SPL ETE abi TIDRB O abi ldi out ldi hi RAMENI ri Ohoooo0o011 r16 Ohoooo0001 ETE TECHE ETB Bild 40 Boards E E E C E EC im IR eral cave MEF LE G es EEE ee j ale cooooo Bu00coo 000000 Die Verdrahtung des myAVR generiert eine Tonfiregquenz per Timer Interrupt Ing Pad Alexander Huwaldt amp ELV Beschreibung POWER ON RESET Int Interrupt Inti Interrupt pes Tez wi rei Ted Tei TEO SPI Compare Match Overflow Capture Compare Match A Compare Match BE Ovrerftlow Overt low STC Serial Transfer Complete ULET Rx Complete ULET Data Register Empty UART Tx complete ADC Conversion Complete EEPROM Ready Analog Comparator TWI I C Serial Interface Store Program Memory Ready Out Speaker EDER 1 F Verteiler Setzen Timer setup Interrupt maskieren Out LED Stack Initialisierung 3686400764 Interrupt TimerO bei overflow Interrupts Sperren Einer Konplement FORTE ri6 ety 190 TCNTO ri Fort E umschalten Siqnalwechsel berechneter Re Init Wert Timer Re Init Interrupt wieder freigeben r R cksprung Bild 39 Der Quellcode f r die Tonerzeugung via Timer Interrupt Steuerung ELVjournal 4 06 der den Interrupt durch Overflow von Z hler 0 ausl st Das Hauptprogramm beginnt wie be kannt mit der Initialisterung wobei hier Port
81. zubildenden Studierenden oder ganz einfach nur dem bisherigen Hardware Elektroniker der auch gern in die Welt des Mikrocontrollers einsteigen m chte dar es wird schlicht alles ben tigte Wissen und viel Erfahrung vorausgesetzt Und manche Werkzeuge sprengen auch den finanziellen Rahmen den diese Klientel sich setzen kann bzw will Ergo kapitulieren viele potentielle An wender vor der H rde hnlich wie es vor Jahren bei den PICs zu beobachten war SiSy und myAVR L sung f r Einsteiger Dieses Problems hat sich die s chsische Firma Laser amp Co Solutions GmbH ange nommen Das Credo einfach zu verstehen de Software entwickeln was sich im Mar kenzeichen SiSy manifestiert Simple System Diesem Credo verpflichtet bietet Laser amp Co nun das myAVR System an ein Mikrocontroller Experimentier und Lernsystem f r Hobby Lehre Studium und Beruf Es besteht aus einer Reihe von ein zelnen Hardware Komponenten der kom plett deutschen Entwicklungsumgebung S1Sy AVR und umfangreichem Lehr material das Schritt f r Schritt nur sehr wenige Grundkenntnisse voraussetzend in die Programmierung der AVR Controller einf hrt Jeder Schritt kann praktisch am passenden myAVR Board nachvollzogen werden so dass man sehr schnell zu einem Erfolgserlebnis kommt das zur L sung der gestellten bungsaufgaben anspornt Einschr nkend ist hier allenfalls zu ver merken dass einige wenige Begri
82. zum Hauptprogramm zur ck Interrupt Vektor Denkennen wir schon er steht in der Re set und Interrupt Tabelle jedes Quellpro gramms Hinter diesem Begriff verbirgt sich eine hier festgeschriebene Adresse auf der ein Befehl zum Aufruf oder die Adresse der zugeh rigen Interrupt Behandlungsroutine gespeichert ist Bei Eintreffen eines be stimmten Ereignisses springt das Programm also immer mit dem jeweils einzutragenden Befehl rjmp selbst festzulegendem Unterprogramm Namen zu dem diesem Ereignis zugeordneten Unterprogramm Nicht zur Nutzung vorgesehene Interrupt Behandlungsroutinen sind mit dem Befehl reti zu versehen Der sorgt daf r dass ein hier dennoch aufgetretener Interrupt ordnungsgem beendet wird Da die L nge der Interrupt Vektor Tabel le von der Anzahl der jeweils verf gbaren 23 PC Technik Reset and Interrupt vector rjmp main rjmp EXT INTO reti reti Feti reti teti reti treti reti reti Le ee hu Ps Pe Ps Ps Pe Pe 7 e e O0 J Mna on bw DH Beschreibung POWER OM RESET IntO Interrupt Int1 Interrupt TCs Compare Match Tlz Sverflow Tel Capture TCi Compare Match A Ter Compare Match B TC1l Grerftlow oO TCO Overflow 1 srl STe Serial Transter Complete Bild 32 In diesem Ausschnitt aus der Reset und Interrupt Vektor Tabelle ist be reits der Sprungbefehl zur Interrupt Service Routine mit dem Namen EXT_INTO eingetragen Interrupt Quellen abh ngt hat s

Download Pdf Manuals

image

Related Search

Related Contents

Adam Equipment MDW-300L Building Set User Manual  Fiche produit  Sandberg FireWire 6pM-6pM 5 m  RCGF Engines OPERATING INSTRUCTIONS  取扱説明書 - マックスレイ  N95-Companion Model 8095    Blue Step User Guide  DreamLine DL-6153-01CL Instructions / Assembly  single split klimagerät bedienungsanleitung  

Copyright © All rights reserved.
Failed to retrieve file