MEL_Kings / Mbed 2 deprecated Praktikum_2_4_AMSL_v2

Dependencies:   C12832_lcd mbed

Fork of Praktikum_2_4_ADC by MEL_Kings

main.cpp

Committer:
franke
Date:
2018-03-07
Revision:
0:8a8d53cb84e8
Child:
1:660fec290722

File content as of revision 0:8a8d53cb84e8:

// Example to set up an interrupt based on the LPC TIMER0 match register, sford
 
#include "mbed.h"

DigitalOut myled(LED1);
DigitalOut irqled(LED2);

void myhandler() {                                      //Interrupt Service Routine, wird durch den Timer0_Vektor gestartet
    // do something!
    irqled = !irqled;
    
    // clear the TIMER0 interrupt
    LPC_TIM0->IR = 1;                                   //Reset Timer0 Interrupt Flag
}

int main() {
    // power up TIMER0 (PCONP[1])
    LPC_SC->PCONP |= 1 << 1; 

    // reset and set TIMER0 to timer mode
    LPC_TIM0->TCR = 0x2;  
    LPC_TIM0->CTCR = 0x0; 
    
    // set no prescaler
    LPC_TIM0->PR = 0;

    // calculate period (1 interrupt every second)
    uint32_t period = SystemCoreClock / 20;                              //Period ist die Periodenlänge     /4 ursprünlgich für eine Sekunde
                                                                        //SystemCoreClock ist eine Konstante mit dem Wert

    // set match register and enable interrupt    
    LPC_TIM0->MR0 = period;                                             //Vergleichswert des Timers wird gesetzt mit Period
    LPC_TIM0->MCR |= 1 << 0;    // interrupt on match                   //Einstellung, dass ein Interrupt ausgelöst wird beim Match
    LPC_TIM0->MCR |= 1 << 1;    // reset on match                       //Einstellung, dass der Timerwert auf Null zurückgesetzt wird bei Match

    // enable the vector in the interrupt controller
    NVIC_SetVector(TIMER0_IRQn, (uint32_t)&myhandler);                  //Zuordunung der InterruptServiceRoutine (Handler) zum Vektor von Timer0
    NVIC_EnableIRQ(TIMER0_IRQn);                                        //Timer Interrupt wird enabled

    // start the timer
    LPC_TIM0->TCR = 1;                                                  //Einstellung, dass der Timer gestartet wird

    // hang around!   
    while(1) {                                                          //while Schleife, in der die erste LED getoggelt wird
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}