DW EditSeite anzeigenÄltere VersionenLinks hierherAlles aus-/einklappenNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. CKG Editor ====== Mikrocontroller-Technik ====== <WRAP right> {{::codeoflife.jpg?200|}} \\ <fs 70%>Source: eigenes Foto ([[https://creativecommons.org/publicdomain/zero/1.0/deed.en|CC0 1.0]])</fs> </WRAP> Die Mikrocontroller-Technik befasst sich damit, wie man einem programmierbaren Bauteil ("Mikrocontroller") Leben einhaucht. Dabei wird die Software im Folgenden in der Programmiersprache C programmiert. Im Gegensatz zu der im 1. und 2. Semester im Kurs Informatik dargestellten Sprachkomponenten und Algorithmen wird hier Wert auf die Eigenheiten durch die Hardware-nähe gelegt. Die Veranstaltung ist mit dem EST Labor kombiniert. Details zum Ablauf finden Sie beim [[elektronische_schaltungstechnik_labor|EST Labor]]. --> 1. Hello Blinking World # <WRAP group> ===== 1. Hello Blinking World ===== <WRAP half column> ==== Ziele ==== Nach dieser Lektion sollten Sie: - x </WRAP> <WRAP half column> ==== Video ==== LED Blinken und Bit-Manipulation {{youtube>2VPM2Q0JtxI}} </WRAP> </WRAP> <-- --> 2. Sound und Timer # <-- --> 3. Logische Funktionen # <-- --> 4. Up/Down Counter # <-- --> 5. Menüführung # <-- --> 6. Würfel und Zufall # <-- --> 7. Uhr und Zeitraster # <-- --> 8. Temperatur und Analog-Digital-Wandler # <-- --> 9. UART und Terminal # <WRAP> ===== 9. UART und Terminal ===== Bei der Programmierung wünscht man sich häufig die Möglichkeit Daten des Mikrocontrollers irgendwo darzustellen. Mit Hilfe des Freeware Programms [[https://www.putty.org/|PuTTY]] kann leicht ein Terminal für die Kommunikation mit dem PC geöffnet werden. Zusätzlich wird dann noch ein USB-to-serial Adapter benötigt. - [[https://www.mikrocontroller.net/articles/AVR-Tutorial:_UART|Tutorial zu UART auf mikrocontroller.net]] - [[https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter#Data_framing|Datenpaket für RX/TX]] - [[https://de.wikipedia.org/wiki/RS-232#Leitungsl%C3%A4nge_und_%C3%9Cbertragungsrate|Leitungslänge vs. Übertragungsrate]] </WRAP> <-- --> 10. I2C Schnittstelle # <WRAP group> ===== 10. I2C Schnittstelle ===== <WRAP half column> ==== Ziele ==== Nach dieser Lektion sollten Sie: - wissen wie die Kommunikation zwischen I2C Master und Slave funktioniert </WRAP> <WRAP half column> </WRAP> ==== Dokumentation von Atmel ==== * [[https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en591794|Application Note: TWI Module as I2C Master]] * [[https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en591792|Application Note: TWI Module as I2C Slave]] * alternative Implementierung von [[https://github.com/knightshrub/I2C-master-lib|Elia Ritterbusch]] \\ ==== Beschreibung ==== ++++ Statemachine der I2C Kommunikation | === Statemachine der I2C Kommunikation === <uml> keine_Kommunikation : - Datenausgabe1 : Datenbit = 1 Datenausgabe0 : Datenbit = 0 [*] --> keine_Kommunikation keine_Kommunikation -> keine_Kommunikation : !SCL || !SDA keine_Kommunikation --> Warten_auf_Clock_Lo : SCL && SDA Warten_auf_Clock_Lo -> Warten_auf_Clock_Lo : !SCL || SDA Warten_auf_Clock_Lo --> Bits_lesen_aktiv : SCL && !SDA Bits_lesen_aktiv -> Bits_lesen_aktiv : SCL Bits_lesen_aktiv --> Warten_auf_Clock_Hi : !SCL Warten_auf_Clock_Hi -> Warten_auf_Clock_Hi : !SCL Warten_auf_Clock_Hi --> Datenausgabe0 : SCL && !SDA Datenausgabe0 -> Datenausgabe0 : SCL && !SDA Datenausgabe0 --> Bits_lesen_aktiv : !SCL Datenausgabe0 --> keine_Kommunikation : SDA Warten_auf_Clock_Hi -> Datenausgabe1 : SCL && SDA Datenausgabe1 ---> Datenausgabe1 : SCL && SDA Datenausgabe1 --> Warten_auf_Clock_Hi : !SCL Datenausgabe1 --> Bits_lesen_aktiv : !SDA </uml> ++++ === Zeitverlaufsdiagramm === <wavedrom> {signal: [ {name: 'SDA', wave: '10444444453104|43101', node: '.a.................d', data: ['A6', 'A5', 'A4', 'A3', 'A2', 'A1', 'A0', 'R/W', 'ACK', 'D7 . . . . D1', 'D0', 'ACK'], phase: -0.6 }, {name: 'SCL', wave: '1.0p........l.p|..l1', node: '..b................c' }, ]} </wavedrom> </WRAP> <-- --> 11. SPI-Schnittstelle # <WRAP group> ===== 11. SPI-Schnittstelle ===== <WRAP half column> ==== Ziele ==== Nach dieser Lektion sollten Sie: - wissen, welche wie man theoretisch mehrere Slaves mit einem Master verbindet. - die Namen der 4 Leitungen und deren Funktionen kennen, welche jeweils an einem Slave enden. - die Abkürzungen SDI, SDO, MOSI, MISO, CS, SS, SCK kennen - die Vorteile von einer synchronen im Vergleich zu einer asynchronen Schnittstelle erklären können. </WRAP> <WRAP half column> ==== Video ==== Theorie zum SPI {{youtube>7uDo_Du5d9g}} Beispiel für SPI mittels Arduino {{youtube>dmpgx7F-VlI}} </WRAP> </WRAP> <-- ===== Tipps ===== * Nutzen Sie die Anzeige von Zeilennummern: Tools -> Options -> Text Editor -> All languages -> General -> Line numbers ===== Links ===== * [[AVR Programmierung für Dummies]] * schönes Online [[https://de.wikibooks.org/wiki/C-Programmierung|Open Source Buch]] zum Erlernen der Programmiersprache C * Eine schöne Einführung in die Embedded Softwareentwicklung ist im Buch [[https://link.springer.com/content/pdf/10.1007%2F978-3-658-18386-8.pdf|Sensornetzwerke in Theorie und Praxis - Embedded Systems-Projekte erfolgreich realisieren]] von Kollegen Meroth und Sora zu finden. Dort wird der Einstieg in das Feld die (in Hardware) eingebettete Softwareentwicklung erklärt. Aus dem Hochschulnetz bzw. mit VPN können Sie dieses direkt bei Springer Link betrachten. Eine andere schöne Einführung findet sich auf [[https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial|Mikrocontroller.net]]. * [[https://www-user.tu-chemnitz.de/~heha/viewchm.php/hs/ATmegaX8.chm/|deutsche Übersetzung der ATmega88 Anleitung]] * [[https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#Zusammensetzung|Tabelle der ASCII Zeichen]] * [[http://www.8bit-era.cz/arduino-timer-interrupts-calculator.html|Rechner für Interrupt Timer und PreScaler]] * [[Atmel Studio Tipps]] * [[SimulIDE]]: kostenlose Simulation u.a. von ATMEL Chips. Diese sind auch programmierbar. \\ Leider mit 2 Haken: 1. es kann nur ein Microcontroller simuliert werden, 2. die aktuelle Version (SimulIDE 0.3.12-SR3) scheint bei falscher Verlegung der Verbindungen leicht abzustürzen. * [[https://www.mikrocontroller.net/attachment/74100/Bauanleitung_AVR-USB-PROGI.pdf|Bauanleitung des Mexle AVR-Proggis]]