bubbles

RWTH uC Tetris

Neben der Informatik Vorlesung besuchte ich dieses Semester die Mikrocontroller AG. In dieser freiwilligen Veranstaltung lernten wir den aus der Vorlesung bekannten Mikrocontroller, ATMega zu benutzen.

Zusammen mit meinen Gruppenmitgliedern Annika, Maiwand & Christian bauten wir ein 8×16 LED-Dot Matrix Display auf dem wir Tetris spielen konnten:

Von der Uni haben wir dabei ein Mikrocontroller Board als Leihgabe bekommen. Das ergänzten wir durch das selbst gelayoutete Display und einen umgebautes SNES Gamepad.

Wir haben dabei darauf geachtet durch geschicktes Hardware Layout die Programmierung zu vereinfachen. So haben wir die normalen 10 Blöcken pro Zeile auf 8 reduziert, um unser komplettes Spielfeld in einem  Integer-Array (uint8_t board[16]) speichern zu können. Vieles lies sich so recht realisieren:

  • Stein verschieben: Logical Shift Left/Right (board[line] <<= 1)
  • volle Zeilen erkennen: board[line] == 255

Während der letzten Vorlesung bekamen wir die Gelegenheit das Projekt unseren Kommilitionen und Prof. Roßmann vorzustellen.

Der Sourcecode und die Eagle-Dateien der Displayplatine sind im git verfügbar.


transcode

Ich sitze im Zug nach Hause. Komme von der letzten Vorlesung des 2. Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-”Ferien”, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender ;-)

Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses Semesters.
Als Ergänzung zur Vorlesung richtete unser Professor einen kleinen Wettbewerb aus.
Mein Beitrag zum Students Englightment Award ist ein Compiler Frontend für den GNU Compiler der Atmel AVRs.

Teil der Vorlesung war die Einführung des Mikrocontrollers ATMega8 von Atmel und dessen Programmierung mit Assembler. Dabei lernten wir zuerst die Schaltungstechnischen Grundlagen und die Minimierung von Schaltnetzen. Anschließend sind wir auf den Aufbau der Zentralen Recheneinheit eingegangen (Steuerwerk, ALU etc..).

transcode kompiliert/assembliert ANSI C und Assembler in Maschinencode und umgekehrt. Dabei wird mit Hilfe von Debugging Informationen ein Bezug zwischen Zeilen im C-Code und den Mnemonics hergestellt. Durch Auswählen von Zeilen werden Bezüge direkt durch Hervorhebungen dargestellt. Für die Darstellung des Maschinencodes lässt sich zwischen binär, dezimal & hexadezimaler Form wählen.

Ziel des Tools ist es die Arbeitsweise des Compilers und dessen Optimierungen tiefer zu verstehen. transcode ist im Rahmen der Vorlesung Grundlagen der Informatik 2 von Prof. Roßmann als Beitrag für den Fellow Student Enlightment Award entstanden.

Zum Tool gehts hier.

Der Sourcecode ist wie immer im git verfügbar.