project:spacewavr
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
project:spacewavr [2019-12-16 02:19] – angelegt xq | project:spacewavr [2019-12-16 02:32] (aktuell) – xq | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
Eine Implementierung von [[https:// | Eine Implementierung von [[https:// | ||
- | |||
- | Source-Code: | ||
Gameplay-Video: | Gameplay-Video: | ||
Zeile 41: | Zeile 39: | ||
{{: | {{: | ||
+ | Das Projekt ist mit einem ATmega32 implementiert und benutzt zwei [[https:// | ||
+ | |||
+ | Die Ausgänge dieser DACs dienen als X- bzw. als Y-Ableitung für den Oszilloskop-Strahl. Dieser wird dann im Programm direkt über die Ports B und D des Atmega32 angesteuert. | ||
+ | |||
+ | Intern rechnet das Programm alle Bildschirm-Koordinaten als vorzeichenbehafteter 16-Bit-Integer und schneidet die niederwertigen 8 Bit bei der Ausgabe ab: | ||
+ | |||
+ | void move_cursor(int16_t x, int16_t y) | ||
+ | { | ||
+ | PORTB = 128 + x / 256; | ||
+ | PORTD = 128 + y / 256; | ||
+ | } | ||
+ | |||
+ | Damit ist sowohl ausreichend Rechenpräzision garantiert als auch genug Geschwindigkeit, | ||
+ | |||
+ | Die Eingabe erfolgt direkt über den Port C und benutzt hier die internen PullUp-Widerstände. Dies vereinfacht die Schaltung, da keine externen Widerstände benötigt werden. | ||
+ | |||
+ | Den vollen Quellcode findet man auf GitHub: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Schaltplan oder Platinenlayout müsste mal jemand machen //hubel hubel//. | ||
==== Weitere Fotos ===== | ==== Weitere Fotos ===== | ||
project/spacewavr.1576459146.txt.gz · Zuletzt geändert: 2019-12-16 02:19 von xq