homework 7
Dependencies: mbed-rtos mbed C12832_lcd LM75B
main.cpp
- Committer:
- gatedClock
- Date:
- 2013-09-07
- Revision:
- 12:e40272e1fd8f
- Parent:
- 11:9cae003da12b
- Child:
- 13:21f27ba467c2
File content as of revision 12:e40272e1fd8f:
/*----------------------------------------------//------------------------------ student : m-moore class : rtos directory : RTOS_HW_07 file : main.cpp ----description---------------------------------//------------------------------ -----includes-----------------------------------//----------------------------*/ #include "mbed.h" // mbed class. #include "rtos.h" // rtos class. #include "C12832_lcd.h" // LCD class. //---defines------------------------------------//------------------------------ #define LCD1 lcd.locate(0, 0); // LCD line 1. #define LCD2 lcd.locate(0,11); // LCD line 2. #define LCD3 lcd.locate(0,22); // LCD line 3. #define DEBOUNCE 0.16 // debounce pause duration in S. //--global_definitions--------------------------//------------------------------ //--global_variables----------------------------//------------------------------ //--global_instances----------------------------//------------------------------ C12832_LCD lcd; // LCD object. InterruptIn iJoyStickUp (p15); // joystick up rising edge. InterruptIn iJoyStickDown (p12); // joystick down rising edge. InterruptIn iJoyStickLeft (p13); // joystick left rising edge. InterruptIn iJoyStickRight (p16); // joystick right rising edge. InterruptIn iJoyStickCenter(p14); // 1 if joystick middle pressed. DigitalOut led3(LED1); // leftmost LED. Ticker tickerMetronome; // blinking LED. Ticker tickerLCD; // display ticker. Timeout timeoutDutyCycle; // LED duty cycle delay. Timeout timeoutMetronome; //-------prototypes-----------------------------//------------------------------ void initialization(); // initialize settings. //==============================================//============================== int main(void) { iJoyStickUp.rise (&ISR_up); // metronome stop. iJoyStickDown.rise (&ISR_down); // metronome start. iJoyStickLeft.rise (&ISR_left_rising); // increase BPM. iJoyStickLeft.fall (&ISR_left_falling); // anti-bounce. iJoyStickRight.rise(&ISR_right_rising); // decrease BPM. iJoyStickRight.fall(&ISR_right_falling); // anti-bounce. iJoyStickCenter.rise(&ISR_center); // 60BPM. initialization(); // initialize variables. // metronome ticker. tickerMetronome.attach(&interrupt_service_M,fMetroDelay); // LCD ticker. tickerLCD.attach(&lcd_display,LCDSAMPLERATE); while(1) // all timer/interrupt driven. { wait(10.0); } } /*----------------------------------------------//----------------------------*/ void initialization(void) // program initializations. { } /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonRising { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/ void ISRleftButtonFalling // button-release debounce. { __disable_irq(); // debounce start. wait(DEBOUNCE); // debounce time. __enable_irq(); // debounce done. } /*----------------------------------------------//----------------------------*/