Pollin Bausatz BIN-Hourglass

OP #4066373
Lesenswert?
• ▲
▼
Gerade sehe ich, daß Pollin unter der Bestellnummer 810399 einen neuen 
Bausatz mit ATtiny2313 anbietet zu dem es hier noch keinen Thread zu 
geben scheint:

http://www.pollin.de/shop/dt/MDA2OTgxOTk-

Die Platine hat die Form einer Sanduhr, auf der mit einer gemultiplexten 
8x3-LED-Matrix die Stunden, Minuten und Sekunden binär angezeigt werden. 
Dazu kommen zwei Tasten zum Einstellen von Stunde und Minute. Die 
(verbesserungswürdige) Standard-Firmware gibt es als Download.

Leider ist kein ISP-Stecker vorhanden, die nötigen Signale lassen sich 
aber nebeneinander an C3, R15, R1, R2 und R3 abgreifen (oder natürlich 
direkt am gesockelten Controller). Am Tiny sind noch zwei Pins frei, bei 
denen es sich praktischerweise um den UART handelt.

Ich bin gespannt auf Eure Modding-Ideen.

Mir sind bisher in den Sinn gekommen:

* Stoppuhr
* Countdown
* Lauflichter in verschiedenen Varianten
* Zufallsgenerator/Würfel
* Reaktionsspiele
* (Debugging-)Input/Output für andere Projekte über die beiden freien
  Pins per UART oder emuliertem Schieberegister, I²C, etc.
* Lichtorgel
* VU-Meter
OP #4066955
Lesenswert?
• ▲
▼
Aua, der Beispielcode ist ja grauenhaft und paßt mit gcc 4.8.3 auch 
nicht mehr ins Flash eines Tiny2313 (weder -O2 noch -Os).

Da werden die Tasten unnötigerweise per Interrupt abgefragt und in der 
ISR mit _delay_ms(200) entprellt. Das eigentlich zeitkritische 
Multiplexing der LEDs findet aber in der freilaufenden Hauptschleife 
statt, ohne sicherzustellen, daß die An-Zeiten der drei Spalten jeweils 
etwa gleich lang sind.

Außerdem ist die Ausgabe der Binärzahlen maximal umständlich und 
platzverschwenderisch gelöst: Für jeden auszugebenden Wert (0..59 und 
255) gibt es eine Funktion, die die nötigen Bits im Portregister einzeln 
setzt. Diese Funktionen werden aus drei riesigen Case-Konstrukten (für 
Stunden, Minuten und Sekunden) aufgerufen. Dabei sind die LEDs so an 
PORTB angeschlossen, daß man einfach nur den bitweise invertierten 
Binärwert ausgeben muß. Alleine diese Änderung hat das Compilat auf etwa 
ein drittel der ursprünglichen Größe schrumpfen lassen.

Komplett aufgeräumt dürfte sich das noch auf unter 500 Bytes reduzieren. 
Damit bleibt genug Platz, Stoppuhr und Countdown-Timer gleich noch mit 
einzubauen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.