diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-10-06 10:22:07 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-10-06 10:22:07 +0000 |
commit | cb5757e03204c11f425c20bb6766242618eb2b28 (patch) | |
tree | fabb65095cfe95c152f6cf1f059ea773fa47c066 /demos | |
parent | 00c6f5ea40f97385dce7ab7b9d20bc0cb909ad23 (diff) | |
download | ChibiOS-cb5757e03204c11f425c20bb6766242618eb2b28.tar.gz ChibiOS-cb5757e03204c11f425c20bb6766242618eb2b28.tar.bz2 ChibiOS-cb5757e03204c11f425c20bb6766242618eb2b28.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@41 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos')
-rw-r--r-- | demos/AVR-AT90CANx-GCC/chcore.c | 15 | ||||
-rw-r--r-- | demos/AVR-AT90CANx-GCC/chcore2.S | 8 |
2 files changed, 15 insertions, 8 deletions
diff --git a/demos/AVR-AT90CANx-GCC/chcore.c b/demos/AVR-AT90CANx-GCC/chcore.c index 2d0a2c0df..53fe296ac 100644 --- a/demos/AVR-AT90CANx-GCC/chcore.c +++ b/demos/AVR-AT90CANx-GCC/chcore.c @@ -19,8 +19,23 @@ #include <ch.h>
+void chSysPause(void) {
+
+ chThdSetPriority(IDLEPRIO);
+
+ asm volatile (
+ "ldi r18, 1 \n\t" // SE bit
+ "out 0x33, r18 \n" // SMCR
+ );
+ while (TRUE) {
+ asm volatile ("sleep\n\t");
+ }
+}
+
void chSysHalt(void) {
+ chSysLock();
+
while (TRUE)
;
}
diff --git a/demos/AVR-AT90CANx-GCC/chcore2.S b/demos/AVR-AT90CANx-GCC/chcore2.S index a9d39690a..d438ffb4f 100644 --- a/demos/AVR-AT90CANx-GCC/chcore2.S +++ b/demos/AVR-AT90CANx-GCC/chcore2.S @@ -19,14 +19,6 @@ #include <avr/io.h>
-.global chSysPause
-chSysPause:
- ldi r18, (1 << SE)
- out _SFR_IO_ADDR(SMCR), r18
-stay:
- sleep
- rjmp stay
-
.global chSysSwitchI
chSysSwitchI:
push r2
|