From 5a9f9a5932915a5752acc79a97b1f16982e3ec5a Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Fri, 11 May 2012 01:53:08 +0200 Subject: dali: initial implementation --- can.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) (limited to 'can.c') 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; + } } } -- cgit v1.2.1