--- a/src/hello.c Fri Apr 04 00:26:16 2014 +0300
+++ b/src/hello.c Fri Apr 04 01:04:41 2014 +0300
@@ -122,7 +122,10 @@
#define LED7_OE PORTB1
// common anode?
-#define LED7_ANODE 1
+#define LED7_ANODE 0
+
+#define LED7_OFFSET 0
+#define LED7_COUNT 2
static const uint8_t LED7SEG_FONT[] = {
0b00111111, // 0
@@ -156,21 +159,37 @@
/*
* Update external IO.
*/
-void led7_update (void)
+void led7_update_raw (uint8_t *led7, char count)
{
- static char i = 0;
+ int i;
+
+ for (i = 0; i < count; i++) {
+ char raw = LED7SEG_FONT[led7[i]];
+
+ spi_tx[LED7_OFFSET + i] = LED7_ANODE ? ~raw : raw;
+ }
+}
+
+void led7_update_hex (unsigned char c)
+{
+ uint8_t led7[2];
+
+ led7[0] = c >> 4;
+ led7[1] = c & 0xF;
+
+ return led7_update_raw(led7, sizeof(led7));
+}
+
+void led7_update ()
+{
+ static unsigned char i = 0;
if (i) {
// enable display
cbi(&LED7_PORT, LED7_OE);
}
-
- char led7 = LED7SEG_FONT[i % sizeof(LED7SEG_FONT)];
- if (LED7_ANODE)
- led7 = ~led7;
-
- spi_tx[0] = led7;
+ led7_update_hex(led_state);
i++;
}
--- a/src/spi.c Fri Apr 04 00:26:16 2014 +0300
+++ b/src/spi.c Fri Apr 04 01:04:41 2014 +0300
@@ -7,7 +7,7 @@
#define SPI_SS PORTB2
/* State */
-#define SPI_COUNT 1
+#define SPI_COUNT 2
static char spi_rx[SPI_COUNT], spi_tx[SPI_COUNT];