homework 7

Dependencies:   mbed-rtos mbed C12832_lcd LM75B

Committer:
gatedClock
Date:
Sat Sep 07 20:59:11 2013 +0000
Revision:
14:d3bb343cd5b2
Parent:
13:21f27ba467c2
Child:
15:5eaa2ab1d00d
first skeleton compile.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gatedClock 0:fcca4db7b32a 1 /*----------------------------------------------//------------------------------
gatedClock 0:fcca4db7b32a 2 student : m-moore
gatedClock 0:fcca4db7b32a 3 class : rtos
gatedClock 10:2b0a9fc39109 4 directory : RTOS_HW_07
gatedClock 0:fcca4db7b32a 5 file : main.cpp
gatedClock 0:fcca4db7b32a 6 ----description---------------------------------//------------------------------
gatedClock 0:fcca4db7b32a 7 -----includes-----------------------------------//----------------------------*/
gatedClock 0:fcca4db7b32a 8 #include "mbed.h" // mbed class.
gatedClock 10:2b0a9fc39109 9 #include "rtos.h" // rtos class.
gatedClock 10:2b0a9fc39109 10 #include "C12832_lcd.h" // LCD class.
gatedClock 0:fcca4db7b32a 11 //---defines------------------------------------//------------------------------
gatedClock 9:cfdb9aa5857c 12 #define LCD1 lcd.locate(0, 0); // LCD line 1.
gatedClock 9:cfdb9aa5857c 13 #define LCD2 lcd.locate(0,11); // LCD line 2.
gatedClock 9:cfdb9aa5857c 14 #define LCD3 lcd.locate(0,22); // LCD line 3.
gatedClock 9:cfdb9aa5857c 15
gatedClock 10:2b0a9fc39109 16
gatedClock 9:cfdb9aa5857c 17 #define DEBOUNCE 0.16 // debounce pause duration in S.
gatedClock 0:fcca4db7b32a 18 //--global_definitions--------------------------//------------------------------
gatedClock 0:fcca4db7b32a 19 //--global_variables----------------------------//------------------------------
gatedClock 0:fcca4db7b32a 20 //--global_instances----------------------------//------------------------------
gatedClock 9:cfdb9aa5857c 21 C12832_LCD lcd; // LCD object.
gatedClock 0:fcca4db7b32a 22
gatedClock 0:fcca4db7b32a 23 InterruptIn iJoyStickUp (p15); // joystick up rising edge.
gatedClock 0:fcca4db7b32a 24 InterruptIn iJoyStickDown (p12); // joystick down rising edge.
gatedClock 0:fcca4db7b32a 25 InterruptIn iJoyStickLeft (p13); // joystick left rising edge.
gatedClock 0:fcca4db7b32a 26 InterruptIn iJoyStickRight (p16); // joystick right rising edge.
gatedClock 0:fcca4db7b32a 27 InterruptIn iJoyStickCenter(p14); // 1 if joystick middle pressed.
gatedClock 0:fcca4db7b32a 28
gatedClock 0:fcca4db7b32a 29 DigitalOut led3(LED1); // leftmost LED.
gatedClock 0:fcca4db7b32a 30
gatedClock 9:cfdb9aa5857c 31 Ticker tickerMetronome; // blinking LED.
gatedClock 9:cfdb9aa5857c 32 Ticker tickerLCD; // display ticker.
gatedClock 9:cfdb9aa5857c 33 Timeout timeoutDutyCycle; // LED duty cycle delay.
gatedClock 9:cfdb9aa5857c 34 Timeout timeoutMetronome;
gatedClock 0:fcca4db7b32a 35 //-------prototypes-----------------------------//------------------------------
gatedClock 9:cfdb9aa5857c 36 void initialization(); // initialize settings.
gatedClock 13:21f27ba467c2 37
gatedClock 13:21f27ba467c2 38 void ISRleftButtonRising(); // cook-time increase.
gatedClock 13:21f27ba467c2 39 void ISRleftButtonFalling(); // button-release debounce.
gatedClock 13:21f27ba467c2 40 void ISRrightButtonRising(); // cook-time decrease.
gatedClock 13:21f27ba467c2 41 void ISRrightButtonFalling(); // button-release debounce.
gatedClock 13:21f27ba467c2 42 void ISRtopButtonRising(); // cook start.
gatedClock 13:21f27ba467c2 43 void ISRtopButtonFalling(); // button-release debounce.
gatedClock 13:21f27ba467c2 44 void ISRbottomButtonRising(); // cook stop.
gatedClock 13:21f27ba467c2 45 void ISRbottomButtonFalling(); // button-release debounce.
gatedClock 13:21f27ba467c2 46 void ISRcenterButtonRising(); // door state toggle.
gatedClock 13:21f27ba467c2 47 void ISRcenterButtonFalling(); // button-release debounce.
gatedClock 0:fcca4db7b32a 48 //==============================================//==============================
gatedClock 0:fcca4db7b32a 49 int main(void)
gatedClock 0:fcca4db7b32a 50 {
gatedClock 14:d3bb343cd5b2 51 iJoyStickLeft.rise (&ISRleftButtonRising);
gatedClock 14:d3bb343cd5b2 52 iJoyStickLeft.fall (&ISRleftButtonFalling);
gatedClock 9:cfdb9aa5857c 53
gatedClock 14:d3bb343cd5b2 54 iJoyStickRight.rise(&ISRrightButtonRising);
gatedClock 14:d3bb343cd5b2 55 iJoyStickRight.fall(&ISRrightButtonFalling);
gatedClock 14:d3bb343cd5b2 56
gatedClock 14:d3bb343cd5b2 57 iJoyStickUp.rise (&ISRtopButtonRising);
gatedClock 14:d3bb343cd5b2 58 iJoyStickUp.fall (&ISRtopButtonFalling);
gatedClock 9:cfdb9aa5857c 59
gatedClock 14:d3bb343cd5b2 60 iJoyStickDown.rise (&ISRbottomButtonRising);
gatedClock 14:d3bb343cd5b2 61 iJoyStickDown.fall (&ISRbottomButtonFalling);
gatedClock 7:9fbd1d540863 62
gatedClock 14:d3bb343cd5b2 63 iJoyStickCenter.rise(&ISRcenterButtonRising);
gatedClock 14:d3bb343cd5b2 64 iJoyStickCenter.fall(&ISRcenterButtonFalling);
gatedClock 9:cfdb9aa5857c 65
gatedClock 9:cfdb9aa5857c 66 initialization(); // initialize variables.
gatedClock 0:fcca4db7b32a 67
gatedClock 14:d3bb343cd5b2 68
gatedClock 9:cfdb9aa5857c 69
gatedClock 14:d3bb343cd5b2 70 while(1)
gatedClock 0:fcca4db7b32a 71 {
gatedClock 14:d3bb343cd5b2 72
gatedClock 0:fcca4db7b32a 73 }
gatedClock 0:fcca4db7b32a 74 }
gatedClock 0:fcca4db7b32a 75 /*----------------------------------------------//----------------------------*/
gatedClock 0:fcca4db7b32a 76 void initialization(void) // program initializations.
gatedClock 0:fcca4db7b32a 77 {
gatedClock 10:2b0a9fc39109 78
gatedClock 0:fcca4db7b32a 79 }
gatedClock 0:fcca4db7b32a 80 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 81 void ISRleftButtonRising(void)
gatedClock 1:9188d4668a88 82 {
gatedClock 11:9cae003da12b 83 __disable_irq(); // debounce start.
gatedClock 9:cfdb9aa5857c 84
gatedClock 11:9cae003da12b 85
gatedClock 9:cfdb9aa5857c 86
gatedClock 9:cfdb9aa5857c 87 wait(DEBOUNCE); // debounce time.
gatedClock 9:cfdb9aa5857c 88
gatedClock 11:9cae003da12b 89 __enable_irq(); // debounce done.
gatedClock 11:9cae003da12b 90 }
gatedClock 1:9188d4668a88 91 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 92 void ISRleftButtonFalling(void) // button-release debounce.
gatedClock 1:9188d4668a88 93 {
gatedClock 11:9cae003da12b 94 __disable_irq(); // debounce start.
gatedClock 9:cfdb9aa5857c 95
gatedClock 11:9cae003da12b 96
gatedClock 9:cfdb9aa5857c 97
gatedClock 9:cfdb9aa5857c 98 wait(DEBOUNCE); // debounce time.
gatedClock 9:cfdb9aa5857c 99
gatedClock 11:9cae003da12b 100 __enable_irq(); // debounce done.
gatedClock 11:9cae003da12b 101 }
gatedClock 2:665ffa57031f 102 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 103 void ISRrightButtonRising(void)
gatedClock 12:e40272e1fd8f 104 {
gatedClock 12:e40272e1fd8f 105 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 106
gatedClock 12:e40272e1fd8f 107
gatedClock 12:e40272e1fd8f 108
gatedClock 12:e40272e1fd8f 109 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 110
gatedClock 12:e40272e1fd8f 111 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 112 }
gatedClock 12:e40272e1fd8f 113 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 114 void ISRrightButtonFalling(void) // button-release debounce.
gatedClock 12:e40272e1fd8f 115 {
gatedClock 12:e40272e1fd8f 116 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 117
gatedClock 12:e40272e1fd8f 118
gatedClock 12:e40272e1fd8f 119
gatedClock 12:e40272e1fd8f 120 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 121
gatedClock 12:e40272e1fd8f 122 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 123 }
gatedClock 12:e40272e1fd8f 124 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 125 void ISRtopButtonRising(void)
gatedClock 12:e40272e1fd8f 126 {
gatedClock 12:e40272e1fd8f 127 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 128
gatedClock 12:e40272e1fd8f 129
gatedClock 12:e40272e1fd8f 130
gatedClock 12:e40272e1fd8f 131 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 132
gatedClock 12:e40272e1fd8f 133 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 134 }
gatedClock 12:e40272e1fd8f 135 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 136 void ISRtopButtonFalling(void) // button-release debounce.
gatedClock 12:e40272e1fd8f 137 {
gatedClock 12:e40272e1fd8f 138 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 139
gatedClock 12:e40272e1fd8f 140
gatedClock 12:e40272e1fd8f 141
gatedClock 12:e40272e1fd8f 142 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 143
gatedClock 12:e40272e1fd8f 144 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 145 }
gatedClock 12:e40272e1fd8f 146 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 147 void ISRbottomButtonRising(void)
gatedClock 12:e40272e1fd8f 148 {
gatedClock 12:e40272e1fd8f 149 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 150
gatedClock 12:e40272e1fd8f 151
gatedClock 12:e40272e1fd8f 152
gatedClock 12:e40272e1fd8f 153 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 154
gatedClock 12:e40272e1fd8f 155 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 156 }
gatedClock 12:e40272e1fd8f 157 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 158 void ISRbottomButtonFalling(void) // button-release debounce.
gatedClock 12:e40272e1fd8f 159 {
gatedClock 12:e40272e1fd8f 160 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 161
gatedClock 12:e40272e1fd8f 162
gatedClock 12:e40272e1fd8f 163
gatedClock 12:e40272e1fd8f 164 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 165
gatedClock 12:e40272e1fd8f 166 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 167 }
gatedClock 12:e40272e1fd8f 168 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 169 void ISRcenterButtonRising(void)
gatedClock 12:e40272e1fd8f 170 {
gatedClock 12:e40272e1fd8f 171 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 172
gatedClock 12:e40272e1fd8f 173
gatedClock 12:e40272e1fd8f 174
gatedClock 12:e40272e1fd8f 175 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 176
gatedClock 12:e40272e1fd8f 177 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 178 }
gatedClock 12:e40272e1fd8f 179 /*----------------------------------------------//----------------------------*/
gatedClock 14:d3bb343cd5b2 180 void ISRcenterButtonFalling(void) // button-release debounce.
gatedClock 12:e40272e1fd8f 181 {
gatedClock 12:e40272e1fd8f 182 __disable_irq(); // debounce start.
gatedClock 12:e40272e1fd8f 183
gatedClock 12:e40272e1fd8f 184
gatedClock 12:e40272e1fd8f 185
gatedClock 12:e40272e1fd8f 186 wait(DEBOUNCE); // debounce time.
gatedClock 12:e40272e1fd8f 187
gatedClock 12:e40272e1fd8f 188 __enable_irq(); // debounce done.
gatedClock 12:e40272e1fd8f 189 }
gatedClock 12:e40272e1fd8f 190 /*----------------------------------------------//----------------------------*/
gatedClock 13:21f27ba467c2 191