Primjer postavljanja mbed Ticker-a na niži prioritet. Imati na umu da se sa "NVIC_SetPriority(TIMER3_IRQn)" postavlja prioritet za sve Timer objekte (Timer, Ticker, Timeout). Ako želite postavljati prioritete Timera neovisno treba ih pisati ručno. Link sa primjerom: https://exploreembedded.com/wiki/LPC1768:_Timers
Dependencies: mbed
main.cpp
- Committer:
- bosko1523
- Date:
- 2016-12-15
- Revision:
- 0:8cbff755d303
File content as of revision 0:8cbff755d303:
// Primjer postavljanja mbed Ticker-a na nizi prioritet
// Nested Vectored Interrupt Controller (NVIC)
#include "mbed.h"
// Varijabla za brojanje rastucih bridova PwmOut objekta
volatile int counter = 0;
// Callback funkcija koju poziva InterruptIn objekt
void timing_critical() {
counter++;
}
// Callback funkcija koju poziva Ticker objekt
void long_event() {
wait_ms(50);
}
PwmOut out(p25);
InterruptIn in(p26);
Ticker tick;
int main() {
// Generiranje PWM signala
out.period_ms(10);
out.pulsewidth_ms(5);
// Poziv callback funkcije void timing_critical(); na svaki rastuci brid od InterruptIn pina
in.rise(&timing_critical);
// Uzimanje 5 sample-ova svakih 1 sec
printf("1) InterruptIn only...\n");
for(int i=0; i<5; i++) {
counter = 0;
wait(1);
printf("counts/sec = %d\n", counter);
}
// Poziv callback funkcije void long_event(); od strane Ticker objekta u periodu od 0.1 sec
tick.attach(&long_event, 0.1);
// Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom bez postavljanja prioritera
printf("2) InterruptIn plus long running occasional ticker event...\n");
for(int i=0; i<5; i++) {
counter = 0;
wait(1);
printf("count/sec = %d\n", counter);
}
// Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom sa postavljenim prioritetom
printf("3) InterruptIn plus long running occasional ticker event at lower priority...\n");
// Postavi mbed ticker na najnizi prioritet
NVIC_SetPriority(TIMER3_IRQn, 255);
for(int i=0; i<5; i++) {
counter = 0;
wait(1);
printf("counter = %d\n", counter);
}
}