diff options
author | David Lamparter <equinox@diac24.net> | 2012-05-11 01:53:08 +0200 |
---|---|---|
committer | David Lamparter <equinox@diac24.net> | 2012-05-11 01:53:08 +0200 |
commit | 5a9f9a5932915a5752acc79a97b1f16982e3ec5a (patch) | |
tree | 187770986f9bab829190e4bf00f2b6fc58433343 /can.c | |
parent | 203a267ade0bca9316ba2ba37e438a5a226aa903 (diff) |
dali: initial implementation
Diffstat (limited to 'can.c')
-rw-r--r-- | can.c | 50 |
1 files changed, 48 insertions, 2 deletions
@@ -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; + } } } |