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

Committer:
bosko1523
Date:
Thu Dec 15 08:59:57 2016 +0000
Revision:
0:8cbff755d303
Primjer postavljanja mbed Ticker-a na nizi prioritet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bosko1523 0:8cbff755d303 1 // Primjer postavljanja mbed Ticker-a na nizi prioritet
bosko1523 0:8cbff755d303 2 // Nested Vectored Interrupt Controller (NVIC)
bosko1523 0:8cbff755d303 3 #include "mbed.h"
bosko1523 0:8cbff755d303 4 // Varijabla za brojanje rastucih bridova PwmOut objekta
bosko1523 0:8cbff755d303 5 volatile int counter = 0;
bosko1523 0:8cbff755d303 6 // Callback funkcija koju poziva InterruptIn objekt
bosko1523 0:8cbff755d303 7 void timing_critical() {
bosko1523 0:8cbff755d303 8 counter++;
bosko1523 0:8cbff755d303 9 }
bosko1523 0:8cbff755d303 10
bosko1523 0:8cbff755d303 11 // Callback funkcija koju poziva Ticker objekt
bosko1523 0:8cbff755d303 12 void long_event() {
bosko1523 0:8cbff755d303 13 wait_ms(50);
bosko1523 0:8cbff755d303 14 }
bosko1523 0:8cbff755d303 15
bosko1523 0:8cbff755d303 16 PwmOut out(p25);
bosko1523 0:8cbff755d303 17 InterruptIn in(p26);
bosko1523 0:8cbff755d303 18 Ticker tick;
bosko1523 0:8cbff755d303 19
bosko1523 0:8cbff755d303 20 int main() {
bosko1523 0:8cbff755d303 21 // Generiranje PWM signala
bosko1523 0:8cbff755d303 22 out.period_ms(10);
bosko1523 0:8cbff755d303 23 out.pulsewidth_ms(5);
bosko1523 0:8cbff755d303 24 // Poziv callback funkcije void timing_critical(); na svaki rastuci brid od InterruptIn pina
bosko1523 0:8cbff755d303 25 in.rise(&timing_critical);
bosko1523 0:8cbff755d303 26
bosko1523 0:8cbff755d303 27 // Uzimanje 5 sample-ova svakih 1 sec
bosko1523 0:8cbff755d303 28 printf("1) InterruptIn only...\n");
bosko1523 0:8cbff755d303 29 for(int i=0; i<5; i++) {
bosko1523 0:8cbff755d303 30 counter = 0;
bosko1523 0:8cbff755d303 31 wait(1);
bosko1523 0:8cbff755d303 32 printf("counts/sec = %d\n", counter);
bosko1523 0:8cbff755d303 33 }
bosko1523 0:8cbff755d303 34
bosko1523 0:8cbff755d303 35 // Poziv callback funkcije void long_event(); od strane Ticker objekta u periodu od 0.1 sec
bosko1523 0:8cbff755d303 36 tick.attach(&long_event, 0.1);
bosko1523 0:8cbff755d303 37
bosko1523 0:8cbff755d303 38 // Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom bez postavljanja prioritera
bosko1523 0:8cbff755d303 39 printf("2) InterruptIn plus long running occasional ticker event...\n");
bosko1523 0:8cbff755d303 40 for(int i=0; i<5; i++) {
bosko1523 0:8cbff755d303 41 counter = 0;
bosko1523 0:8cbff755d303 42 wait(1);
bosko1523 0:8cbff755d303 43 printf("count/sec = %d\n", counter);
bosko1523 0:8cbff755d303 44 }
bosko1523 0:8cbff755d303 45
bosko1523 0:8cbff755d303 46 // Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom sa postavljenim prioritetom
bosko1523 0:8cbff755d303 47 printf("3) InterruptIn plus long running occasional ticker event at lower priority...\n");
bosko1523 0:8cbff755d303 48 // Postavi mbed ticker na najnizi prioritet
bosko1523 0:8cbff755d303 49 NVIC_SetPriority(TIMER3_IRQn, 255);
bosko1523 0:8cbff755d303 50 for(int i=0; i<5; i++) {
bosko1523 0:8cbff755d303 51 counter = 0;
bosko1523 0:8cbff755d303 52 wait(1);
bosko1523 0:8cbff755d303 53 printf("counter = %d\n", counter);
bosko1523 0:8cbff755d303 54 }
bosko1523 0:8cbff755d303 55 }