{"id":173,"date":"2015-12-28T13:52:07","date_gmt":"2015-12-28T12:52:07","guid":{"rendered":"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/?page_id=173"},"modified":"2016-01-25T15:08:26","modified_gmt":"2016-01-25T14:08:26","slug":"mikrocontroller","status":"publish","type":"page","link":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/gruppen\/spiellogik\/mikrocontroller\/","title":{"rendered":"Mikrocontroller"},"content":{"rendered":"<p><strong>Anforderungen an den Mikrocontroller<\/strong><\/p>\n<ul>\n<li>4 Eing\u00e4nge f\u00fcr 4 Tasten [Buzzer -&gt; Logik]<\/li>\n<li>12 Ausg\u00e4nge (4 x 3Bit) f\u00fcr die Farbsteuerung in Spannungsstufen [Logik -&gt; Buzzer]<\/li>\n<li>4 Ausg\u00e4nge zur Buzzer-Licht-Steuerung [Logik -&gt; Buzzer]<\/li>\n<li>3 Ausg\u00e4nge (3 Bit) f\u00fcr die Soundcodierung [Logik -&gt;Buzzer]<\/li>\n<li>SPI-Schnittstelle zur Daten\u00fcbertragung (Clock-Leitung, MISO, MOSI, Slave-Select) [Logik -&gt; Anzeige]<\/li>\n<\/ul>\n<hr \/>\n<p><strong>Gew\u00e4hlt wurde der ATmega16, da dieser die oben geforderten Anforderungen erf\u00fcllt, zudem einen ausreichenden Takt und gen\u00fcgend Speicher bietet.<\/strong><\/p>\n<hr \/>\n<p><strong>Beschaltung des Mikrocontrollers<\/strong><\/p>\n<p>Abbildung 1 zeigt die in EAGLE entworfene Beschaltung des ATmega16 und in Tabelle 1 ist die Pinbelegung dargestellt. An Pin 10 liegt die Versorgungsspannung (VCC) f\u00fcr den Controller an. An Pin 30 die Versorgungsspannung des integrierten Analog-Digital Konverters (ADC). Diese sind \u00fcber den Pin 11 bzw. 31 auf Masse zur\u00fcckgef\u00fchrt. Zur Spannungsstabilisierung wird die Versorgungsspannung parallel \u00fcber einen Elektrolytkondensator (hohe Kapazit\u00e4t) mit der Masse &#8220;verbunden&#8220;.<br \/>\nDer ADC kann \u00fcber den Pin 32 mit einer externen Referenzspannung betrieben werden. Diese ist zun\u00e4chst \u00fcber einen Koppelkondensator auf Masse gesetzt.<br \/>\n\u00dcber Pin 9 kann ein Reset am Controller durchgef\u00fchrt werden. Der Eingang ist negiert, sodass der Controller in den Anfangszustand gebracht wird, wenn dieser auf Masse liegt. Dementsprechend ist auch der Reset-Pin \u00fcber einen Widerstand an die Versorgungsspannung gelegt und kann \u00fcber einen mechanischen Schalter auf Masse gesetzt werden.<br \/>\n\u00dcber die Pins 5 bis 8 ist die Kommunikation \u00fcber das Serial Peripheral Interface (SPI) mit anderen digitalen Schaltungen der Anzeige-Gruppe m\u00f6glich. \u00dcber diese wird der Mikrocontroller auch programmiert.<\/p>\n<div id=\"attachment_224\" style=\"width: 1381px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung.jpg\"><img aria-describedby=\"caption-attachment-224\" loading=\"lazy\" class=\"wp-image-224 size-full\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung.jpg\" alt=\"ATMEGA_Beschaltung\" width=\"1371\" height=\"938\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung.jpg 1371w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-300x205.jpg 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-1024x701.jpg 1024w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-100x68.jpg 100w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-150x103.jpg 150w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-200x137.jpg 200w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-450x308.jpg 450w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-600x411.jpg 600w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/ATMEGA_Beschaltung-900x616.jpg 900w\" sizes=\"(max-width: 1371px) 100vw, 1371px\" \/><\/a><p id=\"caption-attachment-224\" class=\"wp-caption-text\">Abbildung 1: ATMEGA_Beschaltung<\/p><\/div>\n<table>\n<tbody>\n<tr>\n<th>Pin-Nummer<\/th>\n<th>Belegung<\/th>\n<th>Kommentar<\/th>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>Button 0 Eingang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Button 1 Eingang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Button 2 Eingang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>Button 3 Eingang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>SPI &#8211; SS (Slave Select)<\/td>\n<td>arbeitet low-activ<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>SPI &#8211; MOSI<\/td>\n<td>Datenleitung von Spiellogik zur Anzeige<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>SPI &#8211; MISO<\/td>\n<td>Datenleitung von Anzeige zur Spiellogik<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>SPI &#8211; CLK<\/td>\n<td>Taktleitung von Spiellogik zur Anzeige<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>Reset &#8211; Knopf<\/td>\n<td>arbeitet low-activ<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>Versorungsspannung<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>Masse<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>13<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>14<\/td>\n<td>UART &#8211; RxD<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>UART &#8211; TxD<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>16<\/td>\n<td>Buzzer Interrupt<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>17<\/td>\n<td>Random &amp; gegebenfalls Anschluss Zufall<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>18<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>19<\/td>\n<td>Ton Ausgang Bit 0<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td>Ton Ausgang Bit 1<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>21<\/td>\n<td>Ton Ausgang Bit 2<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>22<\/td>\n<td>Analog 0 Ausgang Bit 0<\/td>\n<td>Analoge Farbsteuerung Button 0 Rot<\/td>\n<\/tr>\n<tr>\n<td>23<\/td>\n<td>Analog 0 Ausgang Bit 1<\/td>\n<td>Analoge Farbsteuerung Button 0 Gr\u00fcn<\/td>\n<\/tr>\n<tr>\n<td>24<\/td>\n<td>Analog 0 Ausgang Bit 2<\/td>\n<td>Analoge Farbsteuerung Button 0 Blau<\/td>\n<\/tr>\n<tr>\n<td>25<\/td>\n<td>Button 0 Ausgang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>26<\/td>\n<td>Analog 1 Ausgang Bit 0<\/td>\n<td>Analoge Farbsteuerung Button 1 Rot<\/td>\n<\/tr>\n<tr>\n<td>27<\/td>\n<td>Analog 1 Ausgang Bit 1<\/td>\n<td>Analoge Farbsteuerung Button 1 Gr\u00fcn<\/td>\n<\/tr>\n<tr>\n<td>28<\/td>\n<td>Analog 1 Ausgang Bit 2<\/td>\n<td>Analoge Farbsteuerung Button 1 Blau<\/td>\n<\/tr>\n<tr>\n<td>29<\/td>\n<td>Button 1 Ausgang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>30<\/td>\n<td>AVCC &#8211; Anschluss<\/td>\n<td>Anschluss Versorgung<\/td>\n<\/tr>\n<tr>\n<td>31<\/td>\n<td>Masse<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>32<\/td>\n<td>AREF &#8211; Anschluss<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>33<\/td>\n<td>Button 3 Ausgang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>34<\/td>\n<td>Analog 3 Ausgang Bit 2<\/td>\n<td>Analoge Farbsteuerung Button 3 Blau<\/td>\n<\/tr>\n<tr>\n<td>35<\/td>\n<td>Analog 3 Ausgang Bit 1<\/td>\n<td>Analoge Farbsteuerung Button 3 Gr\u00fcn<\/td>\n<\/tr>\n<tr>\n<td>36<\/td>\n<td>Analog 3 Ausgang Bit 0<\/td>\n<td>Analoge Farbsteuerung Button 3 Rot<\/td>\n<\/tr>\n<tr>\n<td>37<\/td>\n<td>Button 2 Ausgang<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>38<\/td>\n<td>Analog 2 Ausgang Bit 2<\/td>\n<td>Analoge Farbsteuerung Button 2 Blau<\/td>\n<\/tr>\n<tr>\n<td>39<\/td>\n<td>Analog 2 Ausgang Bit 1<\/td>\n<td>Analoge Farbsteuerung Button 2 Gr\u00fcn<\/td>\n<\/tr>\n<tr>\n<td>40<\/td>\n<td>Analog 2 Ausgang Bit 0<\/td>\n<td>Analoge Farbsteuerung Button 2 Rot<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tabelle 1: Beschaltung Mikrocontroller<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p><strong>Programmierung<\/strong><\/p>\n<p>Der ATmega16 ist in C zu programmieren. Dazu bedienen wir uns einer sehr minimalistischen Toolchain. Das hei\u00dft, dass wir auf die Verwendung einer komplexen Entwicklungsumgebung mit integriertem Compiler und Debugger verzichteten. Stattdessen verwendeten wir zur Erstellung des Quellcodes einen einfachen TextEditor wie &#8220;Sublime Text&#8220;.<br \/>\nDer Complier muss nat\u00fcrlich vorab installiert werden, sodass der geschriebene Code \u00fcber den Terminal compiliert werden kann. Zur schnellen Befehlseingabe in den Terminal verwendeten wir ein, von unserem Betreuer zur Verf\u00fcgung gestelltes, Makefile.<br \/>\nNicht nur zum Erarbeiten der \u03bcC-Software eignet sich vor allem ein auf Linux basierendes Betriebssystem &#8211; alternativ auch OS X. Ein Windowssystem w\u00fcrde dem minimalistischen Prinzip unserer Toolchain von Grund auf widerstreben und den Spa\u00df an der Technik enorm einschr\u00e4nken.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anforderungen an den Mikrocontroller 4 Eing\u00e4nge f\u00fcr 4 Tasten [Buzzer -&gt; Logik] 12 Ausg\u00e4nge (4 x 3Bit) f\u00fcr die Farbsteuerung in Spannungsstufen [Logik -&gt; Buzzer] 4 Ausg\u00e4nge zur Buzzer-Licht-Steuerung [Logik -&gt; Buzzer] 3 Ausg\u00e4nge (3 Bit) f\u00fcr die Soundcodierung [Logik -&gt;Buzzer] SPI-Schnittstelle zur Daten\u00fcbertragung (Clock-Leitung, MISO, MOSI, Slave-Select) [Logik -&gt; Anzeige] Gew\u00e4hlt wurde der ATmega16, [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":0,"parent":161,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/173"}],"collection":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":9,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/173\/revisions"}],"predecessor-version":[{"id":366,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/173\/revisions\/366"}],"up":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/161"}],"wp:attachment":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/media?parent=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}