MEL_Kings / Mbed 2 deprecated Praktikum_2_4_AMSL_v2

Dependencies:   C12832_lcd mbed

Fork of Praktikum_2_4_ADC by MEL_Kings

Committer:
franke
Date:
Wed Mar 07 10:20:07 2018 +0000
Revision:
0:8a8d53cb84e8
Child:
1:660fec290722
Praktikum_2_3_Timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
franke 0:8a8d53cb84e8 1 // Example to set up an interrupt based on the LPC TIMER0 match register, sford
franke 0:8a8d53cb84e8 2
franke 0:8a8d53cb84e8 3 #include "mbed.h"
franke 0:8a8d53cb84e8 4
franke 0:8a8d53cb84e8 5 DigitalOut myled(LED1);
franke 0:8a8d53cb84e8 6 DigitalOut irqled(LED2);
franke 0:8a8d53cb84e8 7
franke 0:8a8d53cb84e8 8 void myhandler() { //Interrupt Service Routine, wird durch den Timer0_Vektor gestartet
franke 0:8a8d53cb84e8 9 // do something!
franke 0:8a8d53cb84e8 10 irqled = !irqled;
franke 0:8a8d53cb84e8 11
franke 0:8a8d53cb84e8 12 // clear the TIMER0 interrupt
franke 0:8a8d53cb84e8 13 LPC_TIM0->IR = 1; //Reset Timer0 Interrupt Flag
franke 0:8a8d53cb84e8 14 }
franke 0:8a8d53cb84e8 15
franke 0:8a8d53cb84e8 16 int main() {
franke 0:8a8d53cb84e8 17 // power up TIMER0 (PCONP[1])
franke 0:8a8d53cb84e8 18 LPC_SC->PCONP |= 1 << 1;
franke 0:8a8d53cb84e8 19
franke 0:8a8d53cb84e8 20 // reset and set TIMER0 to timer mode
franke 0:8a8d53cb84e8 21 LPC_TIM0->TCR = 0x2;
franke 0:8a8d53cb84e8 22 LPC_TIM0->CTCR = 0x0;
franke 0:8a8d53cb84e8 23
franke 0:8a8d53cb84e8 24 // set no prescaler
franke 0:8a8d53cb84e8 25 LPC_TIM0->PR = 0;
franke 0:8a8d53cb84e8 26
franke 0:8a8d53cb84e8 27 // calculate period (1 interrupt every second)
franke 0:8a8d53cb84e8 28 uint32_t period = SystemCoreClock / 20; //Period ist die Periodenlänge /4 ursprünlgich für eine Sekunde
franke 0:8a8d53cb84e8 29 //SystemCoreClock ist eine Konstante mit dem Wert
franke 0:8a8d53cb84e8 30
franke 0:8a8d53cb84e8 31 // set match register and enable interrupt
franke 0:8a8d53cb84e8 32 LPC_TIM0->MR0 = period; //Vergleichswert des Timers wird gesetzt mit Period
franke 0:8a8d53cb84e8 33 LPC_TIM0->MCR |= 1 << 0; // interrupt on match //Einstellung, dass ein Interrupt ausgelöst wird beim Match
franke 0:8a8d53cb84e8 34 LPC_TIM0->MCR |= 1 << 1; // reset on match //Einstellung, dass der Timerwert auf Null zurückgesetzt wird bei Match
franke 0:8a8d53cb84e8 35
franke 0:8a8d53cb84e8 36 // enable the vector in the interrupt controller
franke 0:8a8d53cb84e8 37 NVIC_SetVector(TIMER0_IRQn, (uint32_t)&myhandler); //Zuordunung der InterruptServiceRoutine (Handler) zum Vektor von Timer0
franke 0:8a8d53cb84e8 38 NVIC_EnableIRQ(TIMER0_IRQn); //Timer Interrupt wird enabled
franke 0:8a8d53cb84e8 39
franke 0:8a8d53cb84e8 40 // start the timer
franke 0:8a8d53cb84e8 41 LPC_TIM0->TCR = 1; //Einstellung, dass der Timer gestartet wird
franke 0:8a8d53cb84e8 42
franke 0:8a8d53cb84e8 43 // hang around!
franke 0:8a8d53cb84e8 44 while(1) { //while Schleife, in der die erste LED getoggelt wird
franke 0:8a8d53cb84e8 45 myled = 1;
franke 0:8a8d53cb84e8 46 wait(0.2);
franke 0:8a8d53cb84e8 47 myled = 0;
franke 0:8a8d53cb84e8 48 wait(0.2);
franke 0:8a8d53cb84e8 49 }
franke 0:8a8d53cb84e8 50 }