Franco schrieb:
> SLED(0x0C,0x00);
> SLED(0x0F,0x00);
> SLED(0x0a,0x0f);
> SLED(0x0B,0x07);
> SLED(0x09,0x00);
> SLED(0x01,0xff);
Da kennt jemand das Datenblatt auswendig und weiß morgen noch, was jedes
Bit bedeuted. Alle Achtung!
(Das war Ironie, falls es jemand nicht gemerkt hat.)
Meine Initialisierung sieht ungefähr so aus:
1 | void led_init(void)
|
2 | {
|
3 | DDRB |= _BV(LED_DATAIN) | _BV(LED_CS) | _BV(LED_CLK); // Ausgaenge aktivieren
|
4 | led_cs_high();
|
5 |
|
6 | // SPI initialisieren
|
7 | SPSR |= ( 1 << SPI2X);
|
8 | SPCR |= ( 1 << SPE)|( 1 << MSTR )|( 1 << CPHA)|( 1 << CPOL);
|
9 |
|
10 | DDRB |= ( 1 << PB4); // als Ausgang
|
11 | PORTB &= ~( 1 << PB4); // low
|
12 |
|
13 |
|
14 | led_write(LED_SHUTDOWN, LED_SHUTDOWN_ON);
|
15 | led_write(LED_TEST, 0);
|
16 | led_write(LED_SCANLIMIT, 7); // alle Digits anschalten
|
17 | led_write(LED_INTENSITY, 10); // Helligkeit
|
18 | led_write(LED_MODE, LED_MODE_BCD7); // alles BCD
|
19 | led_clrscr();
|
20 | led_write(LED_SHUTDOWN, LED_SHUTDOWN_OFF);
|
21 | }
|
Man macht sich einmal die Mühe, die Bits aus dem Datenblatt zu
definieren und hat nach Jahren noch lesbaren Code...
Grüße,
Gunter