From 572bf9439b8fb263977dd0dd31aa33d00641eb89 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Mon, 13 Jun 2011 21:06:09 +0200 Subject: [PATCH] Move some functions into basic/ and add prototypes for them --- Makefile | 3 +-- basic/basic.h | 8 ++++++++ basic/delayms.c | 24 ++++++++++++++++++++++++ reinvoke_isp.c => basic/reinvoke_isp.c | 6 ++++++ lcd/display.c | 23 +---------------------- 5 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 basic/delayms.c rename reinvoke_isp.c => basic/reinvoke_isp.c (96%) diff --git a/Makefile b/Makefile index 87c8faf..46000d0 100644 --- a/Makefile +++ b/Makefile @@ -7,9 +7,8 @@ OBJS = main.o VPATH += OBJS += -OBJS += basic/basic.o +OBJS += basic/basic.o basic/reinvoke_isp.o basic/delayms.o OBJS += eeprom/eeprom.o -OBJS += reinvoke_isp.o LIBS += core/libcore.a lcd/liblcd.a modules/libmodules.a ########################################################################## diff --git a/basic/basic.h b/basic/basic.h index 2aee0d6..5c5c29a 100644 --- a/basic/basic.h +++ b/basic/basic.h @@ -116,4 +116,12 @@ void rbInit(void); +// reinvoke_isp.c +void ReinvokeISP(void); +void EnableWatchdog(uint32_t ms); +void EnterISP(void); + +// delayms.c +void delayms(uint32_t ms); + #endif diff --git a/basic/delayms.c b/basic/delayms.c new file mode 100644 index 0000000..17857cd --- /dev/null +++ b/basic/delayms.c @@ -0,0 +1,24 @@ +#include +#include "lpc134x.h" + +/**************************************************************************/ +/*! + Approximates a 1 millisecond delay using "nop". This is less + accurate than a dedicated timer, but is useful in certain situations. + + The number of ticks to delay depends on the optimisation level set + when compiling (-O). Depending on the compiler settings, one of the + two defined values for 'delay' should be used. +*/ +/**************************************************************************/ +void delayms(uint32_t ms) +{ + uint32_t delay = ms * ((CFG_CPU_CCLK / 100) / 45); // Release Mode (-Os) + // uint32_t delay = ms * ((CFG_CPU_CCLK / 100) / 120); // Debug Mode (No optimisations) + + while (delay > 0) + { + __asm volatile ("nop"); + delay--; + } +} diff --git a/reinvoke_isp.c b/basic/reinvoke_isp.c similarity index 96% rename from reinvoke_isp.c rename to basic/reinvoke_isp.c index cc3e6de..5e5afe5 100644 --- a/reinvoke_isp.c +++ b/basic/reinvoke_isp.c @@ -71,3 +71,9 @@ void EnableWatchdog(uint32_t ms){ WDT_WDFEED = WDT_WDFEED_FEED1; WDT_WDFEED = WDT_WDFEED_FEED2; }; + +void ISPandReset(int delay){ + EnableWatchdog(1000*delay); + ReinvokeISP(); +}; + diff --git a/lcd/display.c b/lcd/display.c index 80cdde3..9b77ca8 100644 --- a/lcd/display.c +++ b/lcd/display.c @@ -2,28 +2,7 @@ #include #include "lpc134x.h" #include "gpio/gpio.h" - -/**************************************************************************/ -/*! - Approximates a 1 millisecond delay using "nop". This is less - accurate than a dedicated timer, but is useful in certain situations. - - The number of ticks to delay depends on the optimisation level set - when compiling (-O). Depending on the compiler settings, one of the - two defined values for 'delay' should be used. -*/ -/**************************************************************************/ -void delayms(uint32_t ms) -{ - uint32_t delay = ms * ((CFG_CPU_CCLK / 100) / 45); // Release Mode (-Os) - // uint32_t delay = ms * ((CFG_CPU_CCLK / 100) / 120); // Debug Mode (No optimisations) - - while (delay > 0) - { - __asm volatile ("nop"); - delay--; - } -} +#include "basic/basic.h" /**************************************************************************/ /* Utility routines to manage nokia display */