Das 7 Segment Display im HQ wird über die GPIOs eines Raspis gesteuert. Daruch werden viele GPIOs „verbraucht“. Es soll ein Mikrocontroller per SPI mit dem Raspi verbunden werden, der die Ansteurung des Displays übernimmt.
Es wird ein Atmega16APU in Standardbeschaltung mit dem internen Takt von 1 MHz verwendet. Das JTAG-Interface ist deaktiviert um PORTC komplett nutzen zu können. Dies kann mit avrdude und folgenden Parametern gemacht werden:
-U lfuse:w:0xc1:m -U hfuse:w:0xd9:m
Die Elemente sind „gemultiplext“. Eine schöne Erklärung gibt es hier.
Als Anzeige dient eine LED-Holzuhr von getDigital. Die Uhr hat 4 7-Segmentanzeigen mit gemeinsamer Anode, werden die einzelnen Segmente auf 0V gelegt, beginnen sie zu leuchten. Logisch „an“ wird deshalb durch eine '0' dargestellt, logisch „aus“ durch eine '1'.
Die 1000er und 100er (früher Stunden) sind vom Hersteller verkehrt herum eingebaut.
Somit ergeben sich folgende Bitmuster für eine Hexadezimale Anzeige:
10er und 1er Stelle
Zeichen | G | F | E | D | C | B | A |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
2 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
3 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
5 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
7 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
A | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
B | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
C | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
D | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
E | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
F | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
1000er und 100er Stelle
Zeichen | G | F | E | D | C | B | A |
---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
2 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
4 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
5 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
7 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
A | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
B | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
C | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
D | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
E | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
F | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
Segment | Pin (Atmega) |
---|---|
a | PC0 |
b | PC1 |
c | PC2 |
d | PC3 |
e | PC4 |
f | PC5 |
g | PC6 |
Zur Steuerung der Transistoren für das Multiplexing werden die Pins PB0 bis PB3 verwendet.