rough draft - doesn't work

Dependencies:   TextLCD mbed-rtos mbed

Committer:
xueliz
Date:
Fri Oct 03 20:43:51 2014 +0000
Revision:
3:6fad2a5b72e5
Parent:
2:91cb258f9745
Child:
4:f6eee8bb51c2
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jfields 0:c204b3ecd227 1 #include "mbed.h"
jfields 0:c204b3ecd227 2 #include "rtos.h"
jfields 0:c204b3ecd227 3 #include "TextLCD.h"
jfields 0:c204b3ecd227 4
xueliz 3:6fad2a5b72e5 5 #define RUN 0x1
xueliz 3:6fad2a5b72e5 6 #define STOP 0x0
xueliz 3:6fad2a5b72e5 7
jfields 0:c204b3ecd227 8 TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD16x2);
jfields 0:c204b3ecd227 9 Serial pc (USBTX, USBRX);
jfields 0:c204b3ecd227 10 DigitalOut myled(LED1);
xueliz 3:6fad2a5b72e5 11
jfields 0:c204b3ecd227 12
jfields 0:c204b3ecd227 13
jfields 0:c204b3ecd227 14 // global vars
jfields 0:c204b3ecd227 15 int mm [] = {0, 0};
jfields 0:c204b3ecd227 16 int ss [] = {0, 0};
jfields 0:c204b3ecd227 17 int MM [] = {0, 0};
xueliz 3:6fad2a5b72e5 18 int run_status = STOP;
jfields 0:c204b3ecd227 19
jfields 0:c204b3ecd227 20 // functions
jfields 0:c204b3ecd227 21 void update_display(void const *args);
jfields 0:c204b3ecd227 22 void update_mm(void const *args);
jfields 0:c204b3ecd227 23 void update_ss(void const *args);
jfields 0:c204b3ecd227 24 void update_MM(void const *args);
jfields 0:c204b3ecd227 25
jfields 0:c204b3ecd227 26 int main() {
jfields 0:c204b3ecd227 27
jfields 0:c204b3ecd227 28 Thread thread_display(update_display);
xueliz 3:6fad2a5b72e5 29 Thread thread_mm(update_mm);
xueliz 3:6fad2a5b72e5 30 Thread thread_ss(update_ss);
xueliz 3:6fad2a5b72e5 31 Thread thread_MM(update_MM);
xueliz 2:91cb258f9745 32 char input = 'z';
xueliz 3:6fad2a5b72e5 33
xueliz 2:91cb258f9745 34 while(1) {
xueliz 2:91cb258f9745 35 if ( input == 's') {
xueliz 3:6fad2a5b72e5 36 if (run_status==STOP) {
xueliz 3:6fad2a5b72e5 37 thread_mm.signal_set(RUN);
xueliz 3:6fad2a5b72e5 38 thread_ss.signal_set(RUN);
xueliz 3:6fad2a5b72e5 39 thread_MM.signal_set(RUN);
xueliz 3:6fad2a5b72e5 40 thread_display.signal_set(RUN);
xueliz 3:6fad2a5b72e5 41 run_status = RUN;
xueliz 2:91cb258f9745 42 }
xueliz 2:91cb258f9745 43 }
xueliz 2:91cb258f9745 44 if ( input == 'p') {
xueliz 3:6fad2a5b72e5 45 if (run_status==RUN) {
xueliz 3:6fad2a5b72e5 46 run_status = STOP;
xueliz 2:91cb258f9745 47 }
xueliz 2:91cb258f9745 48 }
xueliz 2:91cb258f9745 49 if ( input == 'r') {
xueliz 2:91cb258f9745 50 if (run_status == 0) {
xueliz 2:91cb258f9745 51 mm[0] = mm[1] = 0;
xueliz 2:91cb258f9745 52 ss[0] = ss[1] = 0;
xueliz 2:91cb258f9745 53 MM[0] = MM[1] = 0;
xueliz 3:6fad2a5b72e5 54 thread_display.signal_set(RUN);
xueliz 2:91cb258f9745 55 }
xueliz 2:91cb258f9745 56 }
xueliz 2:91cb258f9745 57
xueliz 2:91cb258f9745 58 input = pc.getc();
jfields 0:c204b3ecd227 59 }
xueliz 2:91cb258f9745 60
jfields 0:c204b3ecd227 61 }
jfields 0:c204b3ecd227 62
jfields 0:c204b3ecd227 63 void update_display(void const *args) {
jfields 0:c204b3ecd227 64 while (1) {
jfields 0:c204b3ecd227 65 lcd.printf("%d%d:%d%d:%d%d\n\n", MM[1], MM[0],ss[1],ss[0],mm[1],mm[0]);
xueliz 3:6fad2a5b72e5 66 Thread::signal_wait(RUN);
xueliz 3:6fad2a5b72e5 67 while (run_status) {
xueliz 3:6fad2a5b72e5 68 lcd.printf("%d%d:%d%d:%d%d\n\n", MM[1], MM[0],ss[1],ss[0],mm[1],mm[0]);
xueliz 3:6fad2a5b72e5 69 Thread::wait(10);
xueliz 3:6fad2a5b72e5 70 }
jfields 0:c204b3ecd227 71 }
jfields 0:c204b3ecd227 72 }
jfields 0:c204b3ecd227 73
jfields 0:c204b3ecd227 74 void update_mm(void const *args) {
xueliz 3:6fad2a5b72e5 75 while(1){
xueliz 3:6fad2a5b72e5 76 Thread::signal_wait(RUN);
xueliz 3:6fad2a5b72e5 77 while (run_status) {
xueliz 3:6fad2a5b72e5 78 Thread::wait(10);
xueliz 3:6fad2a5b72e5 79 mm[0]++;
xueliz 3:6fad2a5b72e5 80 if (mm[0] >= 10) {
xueliz 3:6fad2a5b72e5 81 mm[0] = 0;
xueliz 3:6fad2a5b72e5 82 mm[1]++;
xueliz 3:6fad2a5b72e5 83 }
xueliz 3:6fad2a5b72e5 84 if (mm[1] >= 10) {
xueliz 3:6fad2a5b72e5 85 mm[0] = 0;
xueliz 3:6fad2a5b72e5 86 mm[1] = 0;
xueliz 3:6fad2a5b72e5 87 }
jfields 1:38e744366b97 88 }
jfields 0:c204b3ecd227 89 }
jfields 0:c204b3ecd227 90 }
jfields 1:38e744366b97 91
jfields 0:c204b3ecd227 92 void update_ss(void const *args) {
xueliz 3:6fad2a5b72e5 93 while(1) {
xueliz 3:6fad2a5b72e5 94 Thread::signal_wait(RUN);
xueliz 3:6fad2a5b72e5 95 while (run_status) {
xueliz 3:6fad2a5b72e5 96 Thread::wait(1000);
xueliz 3:6fad2a5b72e5 97 ss[0]++;
xueliz 3:6fad2a5b72e5 98 if (ss[0] >= 10) {
xueliz 3:6fad2a5b72e5 99 ss[0] = 0;
xueliz 3:6fad2a5b72e5 100 ss[1]++;
xueliz 3:6fad2a5b72e5 101 }
xueliz 3:6fad2a5b72e5 102 if (ss[1] >= 6) {
xueliz 3:6fad2a5b72e5 103 ss[0] = 0;
xueliz 3:6fad2a5b72e5 104 ss[1] = 0;
xueliz 3:6fad2a5b72e5 105 }
jfields 1:38e744366b97 106 }
jfields 0:c204b3ecd227 107 }
jfields 0:c204b3ecd227 108 }
jfields 0:c204b3ecd227 109
jfields 0:c204b3ecd227 110 void update_MM(void const *args) {
xueliz 3:6fad2a5b72e5 111 while(1) {
xueliz 3:6fad2a5b72e5 112 Thread::signal_wait(RUN);
xueliz 3:6fad2a5b72e5 113 while (run_status) {
xueliz 3:6fad2a5b72e5 114 Thread::wait(60000);
xueliz 3:6fad2a5b72e5 115 MM[0]++;
xueliz 3:6fad2a5b72e5 116 if (MM[0] >= 10) {
xueliz 3:6fad2a5b72e5 117 MM[0] = 0;
xueliz 3:6fad2a5b72e5 118 MM[1]++;
xueliz 3:6fad2a5b72e5 119 }
xueliz 3:6fad2a5b72e5 120 if (MM[1] >= 6) {
xueliz 3:6fad2a5b72e5 121 MM[0] = 0;
xueliz 3:6fad2a5b72e5 122 MM[1] = 0;
xueliz 3:6fad2a5b72e5 123 }
jfields 1:38e744366b97 124 }
jfields 0:c204b3ecd227 125 }
jfields 0:c204b3ecd227 126 }