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. 
    } 
/*----------------------------------------------//----------------------------*/