Im Pi, am Pi, ohne Pi
— Hardware simulieren und programmieren mit dem Pi als Werkzeug
Vortrag
10:20 Uhr – 10:45 Uhr, Hörsaal 11/12 (Vorträge)
Es ist ja immer so ein bischen unpraktisch, Hardware im Kurs- oder Klassensatz dazuhaben -- oder nach freier Phantasie bauen zu lassen, und dann aber schonmal programmieren zu wollen, bevor sie fertig ist. In diesem Vortrag wird ein Simulationssystem vorgestellt, welches es erlaubt, Schaltungen zu entwerfen und Software zu entwickeln, ohne Hardware zu bauen.
Nachdem es zwar ganz gute Ansätze gibt oder gab (z.B. ktechlab mit der Möglichkeit, im Schaltplan Code, leider nur für Microphip-Controller, auszuführen, und natürlich überhaupt die üblichen Verdächtigen an Simulatoren), aber nichts so ganz nach meinem Geschmack war, wollte ich sowas hier haben:
- für AVRs,
- für simulierte Frontplatten mit Displays, Tastern etc.,
- für animierte Schaltpläne,
- das alles direkt vom Zeichenprogramm in den Simulator übernehmbar
- und lauffähig auf dem Pi
- und so, dass der Code 1-zu-1 sowohl in der Simulation und im Gerät läuft.
Ich werde im Vortrag den Workflow vorstellen, wie ich das (mit ein wenig eigener Software zur Unterstützung) mache.
Das sieht ungefähr so aus: Ich zeichne z.B. einen Schaltplan mit xfig, exportiere ihn als Quelltext, binde das in ein C-Programm als Teil der Simulationsumgebung ein (ein paar Klicks und das Setzen einiger Tags der Art -tags $PD5, wenn z.B. eine LED an PD5 hängen soll.) Dann schreibe ich das normale Steuerprogramm für die Zielplattform, das ich entweder (mit dem Make-Target "prog") auf den AVR bringen kann oder (mit dem Make-Target "run", ohne Änderung im Code) auf den Bildschirm.
(Die "Magie" machen noch einige zurechtgebastelte Parser und einige Hilfsprogramme im Hintergrund, darunter auch das gute, alte et2c. Und es gibt eine nette Header-Datei zum Einbinden, die die "glue" bereitstellt zwischen z.B. AVR-Registerzugriffen und der Reaktion der simulierten Anzeige- und Bedienelemente.) Warum ich dieses Simulieren (außer für mich selbst) nützlich finde: Schüler oder Studenten können so Schaltungen entwerfen (oder von mir aus auch die Frontplatten dazu) und die Software zunächst ganz auf dem Pi entwickeln, bis sie schließlich gelötet wird.
Die übliche Peripherie, z.B. Displays, Buzzer, Knöpfe, LEDs, Siebensegmentanzeigen etc., ist dabei und kann ausprobiert werden, bevor sie in echt unter den Kolben kommt.
Das Programm ist auch noch ein bischen lehrerhaft und meckert z.B. während des Laufes im Simulator rum, wenn zur Laufzeit mal das Aktivieren von Pullup-Widerständen an Eingangspins vergessen wurde (aber externe fehlen). Es versteht außerdem neben der normalen GNU-/Avr-Syntax (wie z.B. PORTD&=~(1< Ich werde im Vortrag auch noch kurz darauf eingehen, wie es sich so in didaktischer Hinsicht macht, damit zu arbeiten (ausprobiert an Fachhochschule und Gymnasium). Von
Christoph