Watchdog version 1

Dependencies:   mbed-rtos mbed

Committer:
greenroshks
Date:
Mon Dec 01 06:40:13 2014 +0000
Revision:
0:24d0ec172cf1
Watchdog IITMSAT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
greenroshks 0:24d0ec172cf1 1 #include "mbed.h"
greenroshks 0:24d0ec172cf1 2 #include "rtos.h"
greenroshks 0:24d0ec172cf1 3
greenroshks 0:24d0ec172cf1 4
greenroshks 0:24d0ec172cf1 5 // The trigger D4 is connected to Watchdog input and WD output is connected to interrupt button D3. The ISR thus evoked will trigger reset. Alternately, D3 can be connected to reset as well
greenroshks 0:24d0ec172cf1 6 DigitalOut led1(LED1);
greenroshks 0:24d0ec172cf1 7 DigitalOut led2(LED2);
greenroshks 0:24d0ec172cf1 8 DigitalOut trigger(D2); //triggering watchdog
greenroshks 0:24d0ec172cf1 9 DigitalOut reset(D4); //D4 is connected to uC reset
greenroshks 0:24d0ec172cf1 10 Serial pc(USBTX,USBRX);
greenroshks 0:24d0ec172cf1 11 InterruptIn button(D3); //ISR initialize
greenroshks 0:24d0ec172cf1 12
greenroshks 0:24d0ec172cf1 13 void led2_thread(void const *args) {
greenroshks 0:24d0ec172cf1 14 while (true) {
greenroshks 0:24d0ec172cf1 15 led2 = !led2;
greenroshks 0:24d0ec172cf1 16 Thread::wait(1000);
greenroshks 0:24d0ec172cf1 17 }
greenroshks 0:24d0ec172cf1 18 }
greenroshks 0:24d0ec172cf1 19
greenroshks 0:24d0ec172cf1 20 void led1_thread(void const *args)
greenroshks 0:24d0ec172cf1 21 {
greenroshks 0:24d0ec172cf1 22 while(true)
greenroshks 0:24d0ec172cf1 23 {
greenroshks 0:24d0ec172cf1 24 led1!=led1;
greenroshks 0:24d0ec172cf1 25 Thread::wait(500);
greenroshks 0:24d0ec172cf1 26 }
greenroshks 0:24d0ec172cf1 27 }
greenroshks 0:24d0ec172cf1 28
greenroshks 0:24d0ec172cf1 29 void WDT(void const *args)
greenroshks 0:24d0ec172cf1 30 {
greenroshks 0:24d0ec172cf1 31 trigger=1;
greenroshks 0:24d0ec172cf1 32 while(true)
greenroshks 0:24d0ec172cf1 33 {
greenroshks 0:24d0ec172cf1 34 trigger=!trigger;
greenroshks 0:24d0ec172cf1 35 Thread::wait(5000);
greenroshks 0:24d0ec172cf1 36 }
greenroshks 0:24d0ec172cf1 37 }
greenroshks 0:24d0ec172cf1 38 void fault()
greenroshks 0:24d0ec172cf1 39 {
greenroshks 0:24d0ec172cf1 40 printf("\n Watchdog triggered... Saving parameters\n");
greenroshks 0:24d0ec172cf1 41 reset=1;
greenroshks 0:24d0ec172cf1 42 }
greenroshks 0:24d0ec172cf1 43
greenroshks 0:24d0ec172cf1 44 int main() {
greenroshks 0:24d0ec172cf1 45 button.rise(&fault);
greenroshks 0:24d0ec172cf1 46 Thread thread1(led1_thread);
greenroshks 0:24d0ec172cf1 47 Thread thread2(led2_thread);
greenroshks 0:24d0ec172cf1 48 Thread watchdog(WDT);
greenroshks 0:24d0ec172cf1 49
greenroshks 0:24d0ec172cf1 50 thread1.set_priority(osPriorityRealtime);
greenroshks 0:24d0ec172cf1 51 thread2.set_priority(osPriorityHigh);
greenroshks 0:24d0ec172cf1 52 watchdog.set_priority(osPriorityIdle);
greenroshks 0:24d0ec172cf1 53
greenroshks 0:24d0ec172cf1 54 while (true) {
greenroshks 0:24d0ec172cf1 55 Thread::wait(8000);
greenroshks 0:24d0ec172cf1 56 }
greenroshks 0:24d0ec172cf1 57 }