A simple INT0 test.
authorMalte S. Stretz <mss@apache.org>
Mon, 9 Feb 2009 13:52:02 +0000 (13:52 +0000)
committerMalte S. Stretz <mss@apache.org>
Mon, 9 Feb 2009 13:52:02 +0000 (13:52 +0000)
src/buffer.c
src/buffer.h
src/dmx.c
src/main.c

index 9f1468e..862e0f5 100644 (file)
@@ -105,18 +105,22 @@ void buffer_next(void)
   buffer_test_next();
 }
 
-
 sched_res_t buffer_test_next(void)
 {
   char * foo = gg_buffer_gs + 15 * 3;
 
-  if (g_delay++ < 100000) return 0;
-  reset_counter();
+  //if (g_delay++ < 100000) return 0;
+  //reset_counter();
   foo[0] = (g_rgb % 3) == 0 ? 0xFF : 0x00;
   foo[1] = (g_rgb % 3) == 1 ? 0xFF : 0x00;
   foo[2] = (g_rgb % 3) == 2 ? 0xFF : 0x00;
-  g_rgb--;
+  //g_rgb--;
 
   tlc_set_data_done();
   return SCHED_OK;
 }
+
+void buffer_do(void)
+{
+  g_rgb--;
+}
index fc4df0e..52832b0 100644 (file)
@@ -6,3 +6,4 @@ extern char gg_buffer_dc[3];
 void buffer_init(void);
 void buffer_next(void);
 
+void buffer_do(void);
index 6ad88c2..8f74f61 100644 (file)
--- a/src/dmx.c
+++ b/src/dmx.c
@@ -156,11 +156,14 @@ void int_dummy(void) { }
 void dmx_init(void)
 {
   // Configure as input.
-  //pin_in(PIN_DMX);
+  pin_in(PIN_DMX);
 
   // Trigger INT0 on any edge (p67)
-  //bits_on(MCUCR, ISC01);
-  //bits_on(MCUCR, ISC00);
+  bits_off(MCUCR, ISC01);
+  bits_on (MCUCR, ISC00);
+
+  // Enable INT0
+  bits_on(GICR, INT0);
 }
 
 void dmx_int_timer0_ovf(void)
@@ -169,6 +172,6 @@ void dmx_int_timer0_ovf(void)
 
 void dmx_int_ext(void)
 {
-  gg_buffer_dc[0] = gg_buffer_dc[0] ? 0x00 : 0x08;
+  buffer_do();
 }
 #endif
index 63559fa..1f7e6a7 100644 (file)
@@ -45,7 +45,7 @@ int main(void)
 
   // Initialize peripherals.
   //sd_init();
-  //dmx_init();
+  dmx_init();
   tlc_init();
 
   sei();