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@0:8cbff755d303, 2016-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |