{"id":212,"date":"2018-07-15T18:14:02","date_gmt":"2018-07-15T16:14:02","guid":{"rendered":"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/?page_id=212"},"modified":"2018-07-15T18:14:07","modified_gmt":"2018-07-15T16:14:07","slug":"daten","status":"publish","type":"page","link":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/interface\/daten\/","title":{"rendered":"Daten"},"content":{"rendered":"<h2>Aufgabenstellung<\/h2>\n<p>Die Gruppe Daten ist verantwortlich f\u00fcr die Kommunikation mit den anderen Gro\u00dfgruppen. Wir sammeln alle Signale der Sensoren und bereiten sie soweit auf, dass die Speicher-Gruppe und auch die LCD-Gruppe diese ohne weiteres sofort benutzen k\u00f6nnen. Die \u00dcbertragung wird h\u00f6chstwahrscheinlich \u00fcber eine SPI-Verbingung erfolgen. Au\u00dferdem sind wir verantwortlich f\u00fcr die Kommunikation zwischen den beiden Microcontrollern unserer Gruppe (jeweils einer f\u00fcr die Daten-Gruppe und f\u00fcr die LCD-Gruppe). Die Kommunikation zwischen beiden Mircrocontrollern wird in diesem Fall durch UART erfolgen. Was genau UART bzw. SPI sind wird im Theorieteil unten erkl\u00e4rt. Desweiteren werden noch PLatinen gefertigt die allen Aufgaben (Stromversorgung, Programmierschnittstelle, UART\/SPI,&#8230;) gerecht werden.<\/p>\n<h2>UART<\/h2>\n<p>UART (Universal Asynchronous Receiver and Transmitter) ist eine elektronische Schaltung, die zur Realisierung digitaler serieller Schnittstellen dient. Meistens ist es ein Microchip, der verantwortlich f\u00fcr eine Kommunikation zwischen den Rechner und Microcontroller ist. Die Kommunikation erfolgt \u00fcber den Protokoll RS-232. Die Daten k\u00f6nnen in W\u00f6rtern von 5 bis 9-Bits \u00fcbertragen werden. Heutzutage befinden sich in Microcontrollern meistens bis zum 2 USARTs, die zus\u00e4tzlich zu asynchroner Daten\u00fcbertragung auch synchrone anbieten. In USART bzw. UART ist LSB (Least Significant Bit) als erste gesendet.<\/p>\n<p>Protokoll RS-232 ist eine meist verwendete asynchrone Schnittstelle. Es besteht aus 9 Leitungen, aber f\u00fcr den Datenaustausch reichen meistens 3: RXD (Empfangsdaten), TXD (Sendedaten) und GND (Masse). Im Fall von RS-232 (im Gegensatz zu anderen Schnittstellen) sind die Vorrichtungen kreuzweise verbunden, dh. in der Weise, dass der Ausgang von einen zum Eingang des anderen geht. (Rx1 mit Tx2 und Tx1 mit Rx2). RS-232 bietet eine sehr breite Palette m\u00f6glicher \u00dcbertragungsgeschwindigkeiten. Die Baudrate ist die Anzahl der \u00fcbertragenen Symbole pro Zeitspanne.<\/p>\n<p><strong>Unterschiede zwischen UART und USART:<\/strong><\/p>\n<ul>\n<li>Synchron Modus ben\u00f6tigt sowohl Daten als auch Uhr, Asynchron ben\u00f6tigt nur Daten<\/li>\n<li>Der synchrone Modus erm\u00f6glicht eine h\u00f6here DTR (Daten\u00fcbertragungsrate) als der asynchrone Modus, wenn alle anderen Faktoren konstant gehalten werden<\/li>\n<li>Im synchronen Modus werden die Daten mit einer festen Rate \u00fcbertragen. Im asynchronen Modus m\u00fcssen die Daten nicht mit einer festen Rate \u00fcbertragen werden<\/li>\n<li>Synchrone Daten werden normalerweise in Form von Bl\u00f6cken \u00fcbertragen, w\u00e4hrend asynchrone Daten normalerweise Byte f\u00fcr Byte \u00fcbertragen werden.<\/li>\n<\/ul>\n<h2>SPI<\/h2>\n<p>Das Serial Peripheral Interface ist ein Bussystem und besteht aus 3 Leitungen. Es erm\u00f6glicht eine serielle synchrone Daten\u00fcbertragung zwischen verschiedenen ICs.<\/p>\n<p><strong>Leitungen<\/strong><\/p>\n<ul>\n<li>MOSI (Master Out -&gt; Slave in)<\/li>\n<li>MISO (Master In -&gt; Slave Out)<\/li>\n<li>SCK (Serial Clock)<\/li>\n<\/ul>\n<p>Die meisten Atmel Mikrocontroler werden \u00fcber SPI programmiert.<\/p>\n<p>Der Master steuert die Slaves und damit die Daten\u00fcbertragung \u00fcber die Clock und deren steigende bzw. fallende Flanken.(bekannt aus dem Modul Mikroprozessortechnik &#8211; MPT)<\/p>\n<p><strong>Begriffskl\u00e4rung<\/strong><\/p>\n<p>Master\/Slave:<\/p>\n<ul>\n<li>in Datenbus aber viele Teilnehmer (Problem)<\/li>\n<li>1x Master + beliebig viele Slaves<\/li>\n<li>Master hat uneingeschr\u00e4nktes Zugriffsrecht auf Ressourcen<\/li>\n<li>Slave auf Zugriffsrecht warten (erteilt durch Master)<\/li>\n<li>sehr strukturiert und einfach aber langsam und ineffizient<\/li>\n<\/ul>\n<p>Bus\/Bussystem<\/p>\n<ul>\n<li>Verbindung zwischen Master und Slave<\/li>\n<li>\u00fcbertragen Informationen (meist Bitweise)<\/li>\n<\/ul>\n<h2>Microcontroller Aufbau<\/h2>\n<p>Um UART, SPI und diverse Schnittstellen zu realisieren muss auch das Layout der Platinen f\u00fcr die Microcontroller erstellt werden. Dazu m\u00fcssen zuerst Schaltpl\u00e4ne entworfen und getestet werden um sie anschlie\u00dfend mit Eagle zu Konstruieren.<\/p>\n<h2>UART<\/h2>\n<p>F\u00fcr die Kommunikation der Microcontroller innerhalb der Interface-Gruppe haben wir uns f\u00fcr UART entschieden. Mithilfe des Datenblattes ( S. 140 &#8211; ff) wurde sich in das Thema eingelesen und anschlie\u00dfend der Code entwickelt und mithilfe mehrere Dioden und einem provisorischen Aufbau auf zwei Steckbrettern getestet. Anschlie\u00dfend wurden alle Funktionen in eine Bibliothek geschrieben und auf ihre Effizienz getestet, um sie dann der LCD-Gruppe zu \u00fcbergeben. Mit Hilfe der Bibliothek konnte die LCD-Gruppe ihre Daten an den Microcontroller der Speicher-Gruppe schicken und diese auch wieder von dort abrufen.<\/p>\n<h2>UART Bibliothek<\/h2>\n<div id=\"attachment_213\" style=\"width: 730px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/UART-LIB-Kopya.png\"><img aria-describedby=\"caption-attachment-213\" loading=\"lazy\" class=\"size-full wp-image-213\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/UART-LIB-Kopya.png\" alt=\"UART-Lib Code\" width=\"720\" height=\"589\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/UART-LIB-Kopya.png 720w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/UART-LIB-Kopya-300x245.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><p id=\"caption-attachment-213\" class=\"wp-caption-text\">UART-Lib Code<\/p><\/div>\n<h2>UART Steckbrett<\/h2>\n<div id=\"attachment_214\" style=\"width: 650px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202028-min-Kopya.jpg\"><img aria-describedby=\"caption-attachment-214\" loading=\"lazy\" class=\"size-large wp-image-214\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202028-min-Kopya-1024x768.jpg\" alt=\"UART Steckbrett\" width=\"640\" height=\"480\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202028-min-Kopya-1024x768.jpg 1024w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202028-min-Kopya-300x225.jpg 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><p id=\"caption-attachment-214\" class=\"wp-caption-text\">UART Steckbrett<\/p><\/div>\n<h2>SPI<\/h2>\n<p>Der Datentransfer zwischen den einzelnen Microcontrollern der jeweiligen Gruppen (Licht,Luft und N\u00e4hrstoffe ) erfolgt \u00fcber SPI. Zur ersten Implementierung wurde ein einfacher Aufbau zwischen Master und einem Slave auf Steckbrettern aufgebaut und anschlie\u00dfend nach Datenblatt (S. 132 ff) verkabelt. Der Code zum einfachen Senden (Master) und Empfangen (Slave) wurde mit Hilfe des Datenblattes erstellt und mit Hilfe mehrer Dioden ausgiebig getestet. Anschlie\u00dfend wurde sich mit den anderen Gruppen darauf geeinigt <strong>Integer<\/strong> zu Senden\/Empfangen, da <strong>Character<\/strong> mit nur einem Byte zu klein waren.<\/p>\n<p>Daraufhin wurde der Code f\u00fcr das Senden\/Empfangen auf Integer umgeschrieben und wieder getestet. Um auch Daten vom Slave zu Empfangen, musste der Code erneut umgeschrieben werden, hierbei mussten folgende Dinge beachtet werden: Der Slave darf nicht selbst\u00e4ndig auf den Daten-Bus zugreifen und generiert auch keinen Takt au\u00dferdem basiert SPI auf einem Schieberegister, dass bedeutet es kann nur ein Bit geschickt werden wenn daf\u00fcr eins Empfangen wird. Um dieses Problem zu l\u00f6sen muss der Master ein sogenanntes &#8222;Dummy-Byte&#8220; an den Slave senden, damit wird die Clock f\u00fcr den Slave generiert und dieser kann nun im Austausch f\u00fcr das Dummy-Byte seine eigentlichen Daten, Bit f\u00fcr Bit, auf das Register des Masters &#8222;schieben&#8220;. Das Dummy-Byte ist in unserem Fall f\u00fcr den Slave v\u00f6llig Wertlos und wird im Code nicht weiter ber\u00fccksichtigt. Die verschiedenen Slaves werden im Code \u00fcber den SlaveSelect (SS) wie im Datenblatt beschrieben angew\u00e4hlt und nach erfolgreichem Datentransfer wieder abgew\u00e4hlt.<\/p>\n<p>Aufgrund des Streiks kam es leider nicht dazu eine wirkliche Kommunikation mit den anderen Gruppen aufzubauen, da wir diverse Probleme mit dem SlaveSelect und dem Dummy-Byte hatten und den Code erst eine Woche vor dem Pr\u00e4sentationstermin wirklich nutzen konnten. Au\u00dferdem sind einige Sensoren der anderen Gruppen gar nicht fertig geworden bzw. wurde der ganze Microcrontroller bereich in der Luft-Gruppe aufgegeben.<\/p>\n<p>Daher haben wir uns entschieden eine einfache Test-Platine mit diversen Schaltern, einem Microcontroller und einem Display zu erstellen. Diese wird als Master fungieren und eine Kommunikation mit der Platine der LCD-Gruppe aufbauen und eine einfache SPI-Verbindung simulieren indem durch Tastendruck am Master unterschiedliche Ausgaben auf dem LCD-Display der Slave-Platine angezeigt werden.<\/p>\n<div id=\"attachment_215\" style=\"width: 650px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202120-min-Kopya.jpg\"><img aria-describedby=\"caption-attachment-215\" loading=\"lazy\" class=\"size-large wp-image-215\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202120-min-Kopya-1024x768.jpg\" alt=\"SPI Steckbrett\" width=\"640\" height=\"480\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202120-min-Kopya-1024x768.jpg 1024w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_202120-min-Kopya-300x225.jpg 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><p id=\"caption-attachment-215\" class=\"wp-caption-text\">SPI Steckbrett<\/p><\/div>\n<div id=\"attachment_216\" style=\"width: 650px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_201139-min-Kopya.jpg\"><img aria-describedby=\"caption-attachment-216\" loading=\"lazy\" class=\"size-large wp-image-216\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_201139-min-Kopya-768x1024.jpg\" alt=\"SPI Platinen\" width=\"640\" height=\"853\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_201139-min-Kopya-768x1024.jpg 768w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-content\/uploads\/sites\/23\/2018\/07\/20180713_201139-min-Kopya-225x300.jpg 225w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><p id=\"caption-attachment-216\" class=\"wp-caption-text\">SPI Platinen<\/p><\/div>\n<h2>Quellen<\/h2>\n<ul>\n<li>https:\/\/www.mikrocontroller.net\/articles\/UART<\/li>\n<li>https:\/\/whatis.techtarget.com\/definition\/USART-Universal-Synchronous-Asynchronous-Receiver-Transmitter<\/li>\n<li>https:\/\/de.wikipedia.org\/wiki\/Universal\\_Asynchronous\\_Receiver\\_Transmitter<\/li>\n<li>https:\/\/www.mikrocontroller.net\/articles\/RS-232<\/li>\n<li>https:\/\/www.mikrocontroller.net\/articles\/Serial\\_Peripheral\\_Interface<\/li>\n<li>https:\/\/de.wikipedia.org\/wiki\/Master\/Slave<\/li>\n<li>https:\/\/de.wikipedia.org\/wiki\/Bus\\_(Datenverarbeitung)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Aufgabenstellung Die Gruppe Daten ist verantwortlich f\u00fcr die Kommunikation mit den anderen Gro\u00dfgruppen. Wir sammeln alle Signale der Sensoren und bereiten sie soweit auf, dass die Speicher-Gruppe und auch die LCD-Gruppe diese ohne weiteres sofort benutzen k\u00f6nnen. Die \u00dcbertragung wird &hellip; <a href=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/interface\/daten\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":71,"featured_media":0,"parent":54,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/pages\/212"}],"collection":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/comments?post=212"}],"version-history":[{"count":1,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/pages\/212\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/pages\/212\/revisions\/218"}],"up":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/pages\/54"}],"wp:attachment":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/greenlab\/wp-json\/wp\/v2\/media?parent=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}