User Tools

Site Tools


microcontrollertechnik

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
microcontrollertechnik [2020/01/31 17:08]
tfischer
microcontrollertechnik [2020/01/31 17:08] (current)
tfischer old revision restored (2020/01/29 10:08)
Line 1: Line 1:
 ====== Mikrocontroller-Technik ====== ====== Mikrocontroller-Technik ======
  
-====== 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>​
  
-<WRAP right> {{:​codeoflife.jpg?​200}}\\ +Die Mikrocontroller-Technik befasst sich damit, wie man einem programmierbaren Bauteil ​("​Mikrocontroller"​) Leben einhauchtDabei wird die Software im Folgenden in der Programmiersprache C programmiert. Im Gegensatz zu der im 1. und 2Semester im Kurs Informatik dargestellten Sprachkomponenten und Algorithmen wird hier Wert auf die Eigenheiten durch die Hardware-nähe gelegt
-<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]].
- +
-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 group> ​
 ===== 1. Hello Blinking World ===== ===== 1. Hello Blinking World =====
- 
-===== 1. Hello Blinking World ===== 
- 
 <WRAP half column> <WRAP half column>
- 
-==== Ziele ==== 
  
 ==== Ziele ==== ==== Ziele ====
Line 25: Line 20:
  
   - x   - x
- 
 </​WRAP>​ <WRAP half column> </​WRAP>​ <WRAP half column>
  
 ==== Video ==== ==== Video ====
  
-==== Video ==== +LED Blinken und Bit-Manipulation ​
- +
-LED Blinken und Bit-Manipulation +
 {{youtube>​2VPM2Q0JtxI}} {{youtube>​2VPM2Q0JtxI}}
- 
 </​WRAP>​ </​WRAP>​ </​WRAP>​ </​WRAP>​
  
 <-- <--
  
---> 2. Sound und Timer # <--+--> 2. Sound und Timer  # 
 +<--
  
---> 3. Logische Funktionen # <--+--> 3. Logische Funktionen # 
 +<--
  
---> 4. Up/Down Counter # <--+--> 4. Up/Down Counter # 
 +<--
  
---> 5. Menüführung # <--+--> 5. Menüführung ​ # 
 +<--
  
---> 6. Würfel und Zufall # <--+--> 6. Würfel und Zufall # 
 +<--
  
---> 7. Uhr und Zeitraster # <--+--> 7. Uhr und Zeitraster # 
 +<--
  
---> 8. Temperatur und Analog-Digital-Wandler # <--+--> 8. Temperatur und Analog-Digital-Wandler # 
 +<--
  
---> 9. UART und Terminal # <​WRAP>​ 
- 
-===== 9. UART und Terminal ===== 
  
 +--> 9. UART und Terminal #
 +<​WRAP>​
 ===== 9. UART und Terminal ===== ===== 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.+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://​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://​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]]   - [[https://​de.wikipedia.org/​wiki/​RS-232#​Leitungsl%C3%A4nge_und_%C3%9Cbertragungsrate|Leitungslänge vs. Übertragungsrate]]
- +</​WRAP>​ 
-</​WRAP>​ <--+<--
  
 --> 10. I2C Schnittstelle # --> 10. I2C Schnittstelle #
  
-<WRAP group> +<WRAP group> ​
 ===== 10. I2C Schnittstelle ===== ===== 10. I2C Schnittstelle =====
- 
-===== 10. I2C Schnittstelle ===== 
- 
 <WRAP half column> <WRAP half column>
- 
-==== Ziele ==== 
  
 ==== Ziele ==== ==== Ziele ====
Line 85: Line 76:
  
   - x   - x
- 
 </​WRAP>​ <WRAP half column> </​WRAP>​ <WRAP half column>
  
-</​WRAP>​ 
  
 +</​WRAP> ​
 ==== Beschreibung ==== ==== Beschreibung ====
  
-==== Beschreibung ====++++ Statemachine der I2C Kommunikation |+++++ Statemachine der I2C Kommunikation | === Statemachine der I2C Kommunikation ===
  
-=== Statemachine der I2C Kommunikation ===+<uml>  
 +keine_Kommunikation : - 
 +Datenausgabe1 : Datenbit ​
 +Datenausgabe0 : Datenbit ​0
  
-=== Statemachine der I2C Kommunikation === +[*] --> keine_Kommunikation ​ 
- +keine_Kommunikation ->  keine_Kommunikation : !SCL || !SDA 
-<uml> keine_Kommunikation : - Datenausgabe1 : Datenbit = 1 Datenausgabe0 : Datenbit = 0 +keine_Kommunikation --> Warten_auf_Clock_Lo : SCL && SDA  
- +Warten_auf_Clock_Lo ->  Warten_auf_Clock_Lo : !SCL || SDA 
-[*] --> 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+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>​ </​uml>​
- 
 ++++ ++++
  
 === Zeitverlaufsdiagramm === === 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>​
  
-=== Zeitverlaufsdiagramm === +</​WRAP> ​
- +
-<​wavedrom>​ {signal: [ {name: '​SDA',​ wave: '​10444444453104|43101',<​code>​ +
- +
-             node: '​.a.................d',​ +
- +
-</​code>​ +
- +
-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',<​code>​ +
- +
-             node: '​..b................c'​ +
- +
-</​code>​ +
- +
-}, ]} </​wavedrom>​ +
- +
-</​WRAP>​+
  
 <-- <--
Line 130: Line 127:
 --> 11. SPI-Schnittstelle # --> 11. SPI-Schnittstelle #
  
-<WRAP group> +<WRAP group>  
- +===== 11. SPI-Schnittstelle ​ =====
-===== 11. SPI-Schnittstelle ===== +
- +
-===== 11. SPI-Schnittstelle ===== +
 <WRAP half column> <WRAP half column>
- 
-==== Ziele ==== 
  
 ==== Ziele ==== ==== Ziele ====
Line 150: Line 141:
  
 </​WRAP>​ <WRAP half column> </​WRAP>​ <WRAP half column>
- 
-==== Video ==== 
  
 ==== Video ==== ==== Video ====
  
 Theorie zum SPI Theorie zum SPI
- 
 {{youtube>​7uDo_Du5d9g}} {{youtube>​7uDo_Du5d9g}}
  
 Beispiel für SPI mittels Arduino Beispiel für SPI mittels Arduino
- 
 {{youtube>​dmpgx7F-VlI}} {{youtube>​dmpgx7F-VlI}}
- 
 </​WRAP>​ </​WRAP>​ </​WRAP>​ </​WRAP>​
 +
  
 <-- <--
Line 169: Line 156:
 ===== Links ===== ===== Links =====
  
-===== Links ===== +  ​* [[AVR Programmierung für Dummies]]
- +
-  ​* [[:​avr_programmierung_fuer_dummies|AVR Programmierung für Dummies]]+
   * schönes Online [[https://​de.wikibooks.org/​wiki/​C-Programmierung|Open Source Buch]] zum Erlernen der Programmiersprache C   * 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]].   * 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]].
Line 177: Line 162:
   * [[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]]   * [[http://​www.8bit-era.cz/​arduino-timer-interrupts-calculator.html|Rechner für Interrupt Timer und PreScaler]]
-  * [[:​atmel_studio_tipps|Atmel Studio Tipps]]+  * [[Atmel Studio Tipps]]
  
   * [[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]]
- 
- 
microcontrollertechnik.txt · Last modified: 2020/01/31 17:08 by tfischer