summaryrefslogtreecommitdiff
path: root/can.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2012-05-11 01:53:08 +0200
committerDavid Lamparter <equinox@diac24.net>2012-05-11 01:53:08 +0200
commit5a9f9a5932915a5752acc79a97b1f16982e3ec5a (patch)
tree187770986f9bab829190e4bf00f2b6fc58433343 /can.c
parent203a267ade0bca9316ba2ba37e438a5a226aa903 (diff)
dali: initial implementation
Diffstat (limited to 'can.c')
-rw-r--r--can.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/can.c b/can.c
index 4e41fe8..c2307a9 100644
--- a/can.c
+++ b/can.c
@@ -16,6 +16,14 @@ const uint8_t __signature[3] __attribute__((section (".signature"), used)) =
#define B_MOSI 3
#define B_SS 2
+#define D_TXD 1
+#define D_DALII 3
+#define D_DALIO 4
+#define D_LED1 5
+#define D_LED2 6
+
+#include "dali.c"
+
#define spi_ss(x) PORTB = ((x) << B_SS) | 0x3;
static volatile bool canint = false;
@@ -177,6 +185,8 @@ int main(void)
uart_init();
+ DDRD |= (1 << D_LED1) | (1 << D_LED2 ) | (1 << D_TXD) | (1 << D_DALIO);
+
spi_ss(1);
DDRB = (1 << B_SCK) | (1 << B_MOSI) | (1 << B_SS);
@@ -190,7 +200,10 @@ int main(void)
sei();
uart_puts("\nspi: init ok\n");
- _delay_ms(50);
+ _delay_ms(25);
+
+ dali_init();
+ _delay_ms(25);
spi_ss(0);
spi_wrrd(0xc0);
@@ -208,12 +221,45 @@ int main(void)
can_init();
can_CANSTAT();
+ cli();
+ dali_word = 0xff08; /* ON */
+ dali_state = 1;
+ sei();
+ _delay_ms(25);
+
+ cli();
+ dali_word = 0xff08; /* OFF */
+ dali_state = 1;
+ sei();
+
+ for (int i = 0; i < 40; i++)
+ _delay_ms(25);
+
+ uint8_t ctr = 0;
while (1) {
if (canint) {
canint = false;
can_int();
}
- _delay_ms(25);
+ _delay_ms(40);
+ ctr++;
+ if (ctr == 40) {
+ dali_word = 0xff91;
+ dali_state = 1;
+ }
+ if (ctr == 80) {
+ dali_word = 0xff99;
+ dali_state = 1;
+ }
+ if (ctr == 120) {
+ dali_word = 0xffa0;
+ dali_state = 1;
+ }
+ if (ctr == 160) {
+ dali_word = 0xff90;
+ dali_state = 1;
+ ctr = 0;
+ }
}
}