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);
    }
}