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/16 23:21]
tfischer
microcontrollertechnik:start [2024/01/22 13:37] (aktuell)
mexleadmin
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~~ 
 +<panel type="warning" title="Achtung"> 
 +Details zum Ablauf finden Sie beim [[elektronik_labor:start|EST Labor]]. 
 +</panel>
  
-  - x 
-</WRAP> <WRAP half column> 
  
-==== Video ==== 
  
-LED Blinken und Bit-Manipulation  +===== Abgabe ===== 
-{{youtube>2VPM2Q0JtxI}} +  * Zur Abgabe der Softwarekomponenten
-</WRAP> </WRAP> +    * Bitte geben Sie folgenden Komponenten ab
- +      * Projektordner aus Microchip Studio  
-<-- +      * Eine Simulide Datei 
- +    * Bitte entfernen Sie nicht notwendige Files, d.hlassen Sie alte, nicht eingebundene Files und alte Versionen weg, sofern Sie solche angelegt haben 
---> 2. Sound und Timer  # +    * Die Abgabe erfolgt per redmine 
-<-- +  * Zur Abgabe der Präsentation  
- +    Diese erfolgt über einen Link, welcher in [[https://ilias.hs-heilbronn.de/goto.php?target=frm_229245_6864&client_id=iliashhn|ILIAS]] zu finden ist 
---> 3. Logische Funktionen # +    * Gerne können Sie auch Ihr Video per digitale (soziale) Medien teilenEs schadet nie etwas Werbung für interessante Themen und für Ihre Hochschule zu machenFalls das Medium öffentlich zugänglich istist es ausreichend eine Textdatei mit Link abzugeben.
-<-- +
- +
---> 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> +
-<-- +
- +
---> 10I2C Schnittstelle # +
- +
-<WRAP group>  +
-===== 10I2C 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 SDISDO, 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 ===== ===== Links =====
  
-  * [[AVR Programmierung für Dummies]] +=== Resourcen für embedded Programmierung === 
-  * schönes Online [[https://de.wikibooks.org/wiki/C-Programmierung|Open Source Buch]] zum Erlernen der Programmiersprache C+  Sehr zu empfehlen ist das [[https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial| AVR-C-Tutorial]] auf mikrocontroller.net 
 +  * There is also a nice introduction into C programming on the AVR plattform with [[https://www.youtube.com/watch?v=UMi6lg563BA&index=3&list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP|multiple videos from ATMEL]]
   * 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]].   * 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://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]]   * [[http://www.8bit-era.cz/arduino-timer-interrupts-calculator.html|Rechner für Interrupt Timer und PreScaler]]
-  * [[Atmel Studio Tipps]] 
  
-  * [[SimulIDE]]: kostenlose Simulation u.avon ATMEL ChipsDiese sind auch programmierbar\\ Leider mit 2 Haken: 1es kann nur ein Microcontroller simuliert werden, 2. die aktuelle Version (SimulIDE 0.3.12-SR3scheint bei falscher Verlegung der Verbindungen leicht abzustürzen.+=== 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")
  
 +=== 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|中国語の翻訳]]
 +
 +=== sonstiges ===
 +  * [[https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#Zusammensetzung|Tabelle der ASCII Zeichen]]
   * [[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]]