diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-24 20:10:45 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-24 20:10:45 +0100 |
commit | 6cdf34b0e87bc915de39a6d5817980a825a720da (patch) | |
tree | 1b8710106c0201ecad5e199099b4f084795b96ea /kernel/bug | |
download | mux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.gz mux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.bz2 mux-6cdf34b0e87bc915de39a6d5817980a825a720da.zip |
initial commit
Diffstat (limited to 'kernel/bug')
-rw-r--r-- | kernel/bug/debug.c | 6 | ||||
-rw-r--r-- | kernel/bug/include/bug/debug.h | 8 | ||||
-rw-r--r-- | kernel/bug/include/bug/panic.h | 6 | ||||
-rw-r--r-- | kernel/bug/panic.c | 23 |
4 files changed, 43 insertions, 0 deletions
diff --git a/kernel/bug/debug.c b/kernel/bug/debug.c new file mode 100644 index 0000000..10a67d8 --- /dev/null +++ b/kernel/bug/debug.c @@ -0,0 +1,6 @@ +#include "bug/debug.h" +#include "tshield/tshield.h" + +void debug_led(int led, int value) { + tshield_led(led, value); +}
\ No newline at end of file diff --git a/kernel/bug/include/bug/debug.h b/kernel/bug/include/bug/debug.h new file mode 100644 index 0000000..937ff2c --- /dev/null +++ b/kernel/bug/include/bug/debug.h @@ -0,0 +1,8 @@ +#ifndef DEBUG_H +#define DEBUG_H + +#define DEBUG_LEDS 4 + +void debug_led(int led, int value); + +#endif
\ No newline at end of file diff --git a/kernel/bug/include/bug/panic.h b/kernel/bug/include/bug/panic.h new file mode 100644 index 0000000..2a39076 --- /dev/null +++ b/kernel/bug/include/bug/panic.h @@ -0,0 +1,6 @@ +#ifndef PANIC_H +#define PANIC_H + +void panic(); + +#endif
\ No newline at end of file diff --git a/kernel/bug/panic.c b/kernel/bug/panic.c new file mode 100644 index 0000000..c82d0f0 --- /dev/null +++ b/kernel/bug/panic.c @@ -0,0 +1,23 @@ +#include "bug/panic.h" +#include "bug/debug.h" +#include <avr/interrupt.h> + +static inline void wait() { + for (volatile long i = 0; i < 20000; ++i) {}; +} + +void panic() { + cli(); + while(1) { + for(int i = 0; i < DEBUG_LEDS; ++i) { + debug_led((i - 1) % DEBUG_LEDS, 0); + debug_led(i, 1); + wait(); + } + for(int i = DEBUG_LEDS - 1; i >= 0; --i) { + debug_led((i + 1) % DEBUG_LEDS, 0); + debug_led(i, 1); + wait(); + } + } +}
\ No newline at end of file |