{"id":62,"date":"2019-06-06T12:34:52","date_gmt":"2019-06-06T10:34:52","guid":{"rendered":"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/ss2019mo\/?page_id=62"},"modified":"2019-07-09T22:56:30","modified_gmt":"2019-07-09T20:56:30","slug":"leds-sim-duty-cycle","status":"publish","type":"page","link":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/beispiel-seite\/leds-sim-duty-cycle\/","title":{"rendered":"LEDs Sim \/ Duty Cycle"},"content":{"rendered":"<p><strong>LEDs Sim \/ Duty Cycle<\/strong><\/p>\n<p>Die Sequenzer-Simulation und Duty Cycle Gruppe besteht aus Felix Reineke und Miriam Zeineddine.<\/p>\n<p>Ein Sequenzer ist realisiert als ein Ger\u00e4t oder als Software zur Aufnahme, Wiedergabe und Bearbeitung von speziell codierten Daten zur Erstellung von Musik. Ziel dieser Gruppe war es einen Duty Cycle f\u00fcr einen solchen Sequenzer zu erstellen und daf\u00fcr zu sorgen, dass 8 LEDs im Takt der eingegebenen Noten aufleuchten um diese Sequenzeraktivit\u00e4t darzustellen. Es werden im Rahmen des Programms immer 8 Noten eingegeben und mit der Hilfe von 8 LEDs simuliert. Des Weiteren wurde der genannte Duty Cycle implementiert, welcher die Klangdauer eines einzelnen Tons als weiteren Ausgang mittels High und Low Signals darstellt.<br \/>\nHierzu wurde ab dem vierten Labortermin angefangen in den Kleingruppen zu arbeiten. Zuerst wurde der Timer Interrupt aktiviert. Der dazugeh\u00f6rige Code ist im Codeverzeichnis zu sehen.<br \/>\nAu\u00dferdem wurde ein Programm zur Ansteuerung des Demultiplexers (HC4051E) geschrieben. Eine zugeh\u00f6rige Schaltung wurde auf einem Steckbrett aufgebaut und ist in Abbildung 1 zu sehen. Das Programm wurde getestet und es traten keine Probleme mehr auf. Die LEDs haben in der richtigen Reihenfolge geleuchtet.<\/p>\n<div id=\"attachment_319\" style=\"width: 594px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-319\" loading=\"lazy\" class=\"size-large wp-image-319\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/ss2019mo\/wp-content\/uploads\/sites\/25\/2019\/07\/multi-1024x767.png\" alt=\"\" width=\"584\" height=\"437\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-content\/uploads\/sites\/25\/2019\/07\/multi-1024x767.png 1024w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-content\/uploads\/sites\/25\/2019\/07\/multi-300x225.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-content\/uploads\/sites\/25\/2019\/07\/multi-768x575.png 768w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-content\/uploads\/sites\/25\/2019\/07\/multi-401x300.png 401w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-content\/uploads\/sites\/25\/2019\/07\/multi.png 1722w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><p id=\"caption-attachment-319\" class=\"wp-caption-text\">Abbildung 1: Schaltung mit Demultiplexer<\/p><\/div>\n<p>Es wurde der Eingabebuffer entwickelt und ein Programm zur Verarbeitung der T\u00f6ne aus dem Eingabebuffer geschrieben, welches im Wesentlichen aus einem Timerinterrupt und Schnittstellen zur Verarbeitung aller Toneingaben und Tonausgaben besteht. W\u00e4hrend des Testens ist leider das Problem aufgetreten, dass das Programm immer wieder die vergangenen Cycles ausgef\u00fchrt hat. Nach intensivem Debugging konnte jedoch eine L\u00f6sung f\u00fcr genau dieses Problem gefunden und implementiert werden.<br \/>\nWie bereits beschrieben, wurden ihm Rahmen dessen auch die Schnittstellen f\u00fcr die ADC\/DAC- und LCD\/Taster-Gruppe bereitgestellt. Die Kleingruppen sind dadurch in der Lage sich vergangene T\u00f6ne, welche gerade abgespielt werden, zu nehmen und sie zu bearbeiten. Nach der Bearbeitung k\u00f6nnen diese T\u00f6ne dann wieder in den Buffer eingef\u00fcgt werden. Des Weiteren k\u00f6nnen sie damit auch auf gerade aktive T\u00f6ne zugreifen, diese entgegennehmen und Ausgabefunktionen f\u00fcr diese bereitstellen. Im Codeverzeichnis ist das Programm zu sehen.<br \/>\nDas Programm wurde in Kombination mit der IDE Atmel Studio 7 erstellt.<\/p>\n<p>Folgende Methoden wurden implementiert:<\/p>\n<ul>\n<li>void UpdateDeMultiplexer(void)<\/li>\n<li>void InitPorts(void)<\/li>\n<li>void machkeinScheiss(void)<\/li>\n<li>void InitTimer0(void)<\/li>\n<li>void InitSound(void)<\/li>\n<li>uint8t PutSound<\/li>\n<li>void GetNextSound(void)<\/li>\n<li>uint8t GetActualNote(void)<\/li>\n<li>ISR(TIMER0 OVF vect)<\/li>\n<\/ul>\n<p><strong>Zusammenfassung<\/strong><\/p>\n<p>Zusammenfassend kann man sagen, dass alle gesetzten Ziele erreicht wurden.<br \/>\nDiese Ziele waren:<\/p>\n<ul>\n<li>ein Programm f\u00fcr den Demultiplexer um mit den LEDs am Ausgang anzuzeigen, welche der 8 Noten gerade klingt<\/li>\n<li>eine Initialisierung eines Timers, so dass dieser vollst\u00e4ndig konfiguriert und aktiviert wird<\/li>\n<li>eine Matrix (ein Buffer) f\u00fcr die T\u00f6ne, um mit diesen nachfolgend arbeiten zu k\u00f6nnen<\/li>\n<li>eine Schnittstelle f\u00fcr die LCD-Gruppe, um neue T\u00f6ne in den Buffer einbringen zu k\u00f6nnen<\/li>\n<li>ein Sprung zu den n\u00e4chsten 8 T\u00f6nen, wenn notwendig (die letzten 8 T\u00f6ne werden wiederholt, wenn es keine weiteren T\u00f6ne gibt)<\/li>\n<li>eine Funktion zu dem Auslesen der aktuell klingenden Note<\/li>\n<li>ein Timerinterrupt, welcher zeitabh\u00e4ngig alle Ausg\u00e4nge, in Abh\u00e4ngigkeit von den aktuellen T\u00f6nen aktualisiert, sowie neue T\u00f6ne f\u00fcr die Ausgabe bereitstellt<\/li>\n<li>ein Duty Cycle, welcher innerhalb des Timerinterrupts implementiert ist<\/li>\n<\/ul>\n<p>Wie bereits erw\u00e4hnt, trat zwischenzeitlich leider ein Problem bei der Verarbeitung der T\u00f6ne aus dem Eingabebuffer auf. Dieses Problem wurde allerdings erfolgreich gel\u00f6st.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LEDs Sim \/ Duty Cycle Die Sequenzer-Simulation und Duty Cycle Gruppe besteht aus Felix Reineke und Miriam Zeineddine. Ein Sequenzer ist realisiert als ein Ger\u00e4t oder als Software zur Aufnahme, Wiedergabe und Bearbeitung von speziell codierten Daten zur Erstellung von &hellip; <a href=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/beispiel-seite\/leds-sim-duty-cycle\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":91,"featured_media":0,"parent":2,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"showcase.php","meta":[],"_links":{"self":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/pages\/62"}],"collection":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/users\/91"}],"replies":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":6,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/pages\/62\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/pages\/62\/revisions\/322"}],"up":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/pages\/2"}],"wp:attachment":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/Synthaffaere\/wp-json\/wp\/v2\/media?parent=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}