Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
microcontrollertechnik:start [2020/03/25 00:09]
tfischer ↷ Page moved and renamed from microcontrollertechnik to microcontrollertechnik:start
microcontrollertechnik:start [2024/09/19 23:52] (aktuell)
mexleadmin [Links zur Vorlesung]
Zeile 1: Zeile 1:
 ====== Mikrocontroller-Technik ====== ====== Mikrocontroller-Technik ======
 +
 +===== Einführung und Einordnung =====
  
 <WRAP right> <WRAP right>
Zeile 7: Zeile 9:
  
 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 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. 
 +Es wird auf die Kenntnisse folgender Fächer zurückgegriffen:
  
-Die Veranstaltung ist mit dem EST Labor kombiniert. Details zum Ablauf finden Sie beim [[elektronische_schaltungstechnik_labor|EST Labor]].+  * Informatik I und II
  
---> 1. Hello Blinking World # +**Wichtig:**
-<WRAP group>  +
-===== 1. Hello Blinking World ===== +
-<WRAP half column>+
  
-==== Ziele ====+  * Bleiben Sie mit uns in Kontakt! Trotzdem es zeitweise Wochen mit eigenständigen Bearbeitung gibt, ist der Austausch wichtig, damit zu den jeweiligen Abgaben ein sinnvolles Ergebnis abgeliefert wird. 
 +  * Suche Sie den Austausch mit den anderen Studierenden. Meistens haben Sie die Lösung, zum Problem eines anderen und umgekehrt. 
 +  * Wenn Sie erst eine Woche vor der Abgabe mit dem Programmieren beginnen, wird es in der Regel eng. Besonders, wenn es Unklarheiten und Nachfragen gibt. Beginnen Sie frühzeitig. 
 +  * Versuchen Sie Spaß am Programmieren zu finden. Es ist wie Puzzeln, nur dass Sie selbst das Bild bestimmen!
  
-Nach dieser Lektion sollten Sie:+~~PAGEBREAK~~ ~~CLEARFIX~~
  
-  - x 
-</WRAP> <WRAP half column> 
  
-==== Video ====+===== Links zur Vorlesung =====
  
-LED Blinken und Bit-Manipulation  +^ Thema ^ Beschreibung ^ Sprache ^ 
-{{youtube>2VPM2Q0JtxI}} +| Tutorial | Eine schöne Einführung in die Embedded Softwareentwicklung ist im Buch "Sensornetzwerke in Theorie und Praxis Embedded Systems-Projekte erfolgreich realisieren" von Prof. Meroth und Herrn 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 [[https://link.springer.com/content/pdf/10.1007%2F978-3-658-18386-8.pdf|Springer Link]] betrachten. |Deutsch| 
-</WRAP> </WRAP>+|:::| The above-mentioned book is as "Sensor networks in theory and practice" also available in English. It is the accompanying book of Prof. Meroth and Mr. Sora. It explains how to get started in the field of (hardware) embedded software development. From the university network or with VPN you can view this directly at [[https://link.springer.com/content/pdf/10.1007/978-3-658-39576-6.pdf|Springer Link]].|English| 
 +| Tutorial | Empfehlenswertes Tutorial von [[https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial| mikrocontroller.net]]|Deutsch| 
 +| Tutorial |Also the AVR itself has a nice introduction into C programming on the AVR platform as [[https://www.youtube.com/watch?v=UMi6lg563BA&index=3&list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP|Video]] and [[https://developerhelp.microchip.com/xwiki/bin/view/products/mcu-mpu/8-bit-avr/|textual Developer Help]] |English| 
 +|Datenblatt| Das [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48_88_168_megaAVR-Data-Sheet-40002074.pdf|Data Sheet]] des Atmega88 ist ebenfalls ein gutes Nachschlagewerk |English| 
 +|Datenblatt| Das Datenblatt des Atmega88 wurde auch auf Deutsch übersetzt: [[https://www-user.tu-chemnitz.de/~heha/viewchm.php/hs/ATmegaX8.chm/|Online Datenblatt ATmega88]] |English| 
 +|C-Support| Ein [[http://www.8bit-era.cz/arduino-timer-interrupts-calculator.html|Rechner für Interrupt Timer und PreScaler]] |English| 
 +|C-Support|[[https://www.nongnu.org/avr-libc/user-manual/modules.html|Dokumentation der AVR Compilerbibliotheken]] (z.B. stdlib) |English|
  
-<-- 
  
---> 2. Sound und Timer  # +===== weiterführende Links =====
-<--+
  
---> 3. Logische Funktionen # +=== C Programmierung === 
-<--+  * schönes Online [[https://de.wikibooks.org/wiki/C-Programmierung|Open Source Buch]] zum Erlernen der Programmiersprache C 
 +  * [[https://www.math.brown.edu/~jhs/ReferenceCards/CRefCard.v2.2.pdf|C Code Referenz Card]] ("C Cheatsheet")
  
---> 4Up/Down Counter # +=== Embedded Systems Engineering und Hardware/Software Co-Design=== 
-<--+  * [[https://www.in.tu-clausthal.de/uploads/media/Embedded_Systems_Engineering_Handbuch_V0_61a.pdf| Handbuch Embedded Systems Engineering]] der TU Clausthal / FH Nordhausen: Sehr ausführliches und tiefgehendes Buch  
 +  * Auch das Buch [[https://sourceforge.net/projects/qpc/files/doc/PSiCC2.pdf/download|Practical UML Statecharts in C/C++, 2nd Edition: Event-Driven Programming for Embedded Systems]] eignet sich als ausführliches Nachschlagewerk \\ [[http://sourceforge.net/projects/qpc/files/doc/PSiCC2-CN.pdf/download|中国語の翻訳]]
  
---> 5. Menüführung +=== sonstiges ===
-<-- +
- +
---> 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]]   * [[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]] 
- 
-  * [[https://sourceforge.net/projects/simulide/|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]]   * [[https://www.mikrocontroller.net/attachment/74100/Bauanleitung_AVR-USB-PROGI.pdf|Bauanleitung des Mexle AVR-Proggis]]