Add 100Hz timer
[fw/altos] / ao.h
diff --git a/ao.h b/ao.h
index 4fd368c00a5d0ef7e53b5a7301f4eb23076d94c6..2d434134b8ea4f6f01c63a2a2179daac127e3d99 100644 (file)
--- a/ao.h
+++ b/ao.h
@@ -22,7 +22,9 @@
 #include <stdio.h>
 #include "cc1111.h"
 
 #include <stdio.h>
 #include "cc1111.h"
 
-#define AO_STACK_START 0x11
+#define DATA_TO_XDATA(a)       ((void __xdata *) ((uint8_t) (a) | 0xff00))
+
+#define AO_STACK_START 0x21
 #define AO_STACK_END   0xfe
 #define AO_STACK_SIZE  (AO_STACK_END - AO_STACK_START + 1)
 
 #define AO_STACK_END   0xfe
 #define AO_STACK_SIZE  (AO_STACK_END - AO_STACK_START + 1)
 
@@ -36,6 +38,10 @@ struct ao_task {
 
 #define AO_ERROR_NO_TASK       1
 
 
 #define AO_ERROR_NO_TASK       1
 
+#define ao_interrupt_disable() (EA = 0)
+#define ao_interrupt_enable()  (EA = 1)
+
+/* ao_task.c */
 int ao_sleep(__xdata void *wchan);
 int ao_wakeup(__xdata void *wchan);
 void ao_add_task(__xdata struct ao_task * task, void (*start)(void));
 int ao_sleep(__xdata void *wchan);
 int ao_wakeup(__xdata void *wchan);
 void ao_add_task(__xdata struct ao_task * task, void (*start)(void));
@@ -43,4 +49,13 @@ void ao_start_scheduler(void);
 void ao_yield(void) _naked;
 void ao_panic(uint8_t reason);
 
 void ao_yield(void) _naked;
 void ao_panic(uint8_t reason);
 
+/* ao_timer.c */
+
+volatile __data uint16_t ao_time;
+
+void ao_timer_isr(void) interrupt 9;
+void ao_timer_init(void);
+uint16_t ao_time_atomic(void);
+void ao_delay(uint16_t ticks);
+
 #endif /* _AO_H_ */
 #endif /* _AO_H_ */