aboutsummaryrefslogtreecommitdiff
path: root/kernel/dmx.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2011-11-02 02:54:40 +0000
committerDimitri Sokolyuk <demon@dim13.org>2011-11-02 02:54:40 +0000
commit87dd379c89dbe9b63dd3ab0f20f002a20d789c47 (patch)
treeafc0c66c7641377fd5228fd5a6aee5b35dc99a24 /kernel/dmx.c
parente754d6f8f1288fa3ae5032ef675f35268a484c79 (diff)
major update: lot of bugfixes, lot of changes
- let compiler handle stack pointer arithmetic: switch to 16bit - improve update(): deadline depends on incremental release - resolve timing issues, new time convertion macros - major simplification of scheduler, most of garbage removed - new overflow interrupt for cycle counter, resolves also timing problems - simplify pwm generation, lookup tables are deferred, switch to 4bit - add blocking on shared values - remove garbage in lcd module and some bugfixes - add alternative reboot command to uart command interpreter - KISS
Diffstat (limited to 'kernel/dmx.c')
-rw-r--r--kernel/dmx.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/kernel/dmx.c b/kernel/dmx.c
index 504ffaf..4b30f1e 100644
--- a/kernel/dmx.c
+++ b/kernel/dmx.c
@@ -20,17 +20,15 @@
#include "kernel.h"
#include "tasks.h"
-/* globals */
-uint8_t red, green, blue;
-struct rgbarg rgbargs = { &red, &green, &blue };
+struct rgbarg rgbargs;
+
struct pwmarg pwmargs[] = {
- { &red, PB2 },
- { &green, PB3 },
- { &blue, PB4 }
+ { &rgbargs.r, PB2, &rgbargs.m },
+ { &rgbargs.g, PB3, &rgbargs.m },
+ { &rgbargs.b, PB4, &rgbargs.m }
};
+
struct lcdarg lcdarg;
-struct clockarg clockarg;
-struct ctrlarg ctrlarg = { &lcdarg, &clockarg };
int
main()
@@ -38,26 +36,26 @@ main()
init(STACK);
init_uart();
- semaphore(0, 1);
-
- exec(heartbeat, STACK, 0); // 48
+#if 1
+ exec(heartbeat, STACK, 0); /* stack 48 */
+#endif
#if 1
exec(rgb, STACK + 16, &rgbargs);
exec(pwm, STACK, &pwmargs[0]);
exec(pwm, STACK, &pwmargs[1]);
exec(pwm, STACK, &pwmargs[2]);
+#endif
+
#if 0
exec(cmd, STACK, &rgbargs);
#endif
+
#if 1
exec(lcd, STACK, &lcdarg);
- exec(clock, STACK, &clockarg);
- exec(ctrl, STACK + 8, &ctrlarg);
+ exec(clock, STACK, &lcdarg);
#endif
-#endif
-
- for (;;); /* idle task */
+ idle();
return 0;
}