aboutsummaryrefslogtreecommitdiffstats
path: root/demos/AVR-AT90CANx-GCC
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-10-06 10:22:07 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-10-06 10:22:07 +0000
commitcb5757e03204c11f425c20bb6766242618eb2b28 (patch)
treefabb65095cfe95c152f6cf1f059ea773fa47c066 /demos/AVR-AT90CANx-GCC
parent00c6f5ea40f97385dce7ab7b9d20bc0cb909ad23 (diff)
downloadChibiOS-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/AVR-AT90CANx-GCC')
-rw-r--r--demos/AVR-AT90CANx-GCC/chcore.c15
-rw-r--r--demos/AVR-AT90CANx-GCC/chcore2.S8
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