TVZ Mechatronics Team / Mbed 2 deprecated Ticker_Prioriteti

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // Primjer postavljanja mbed Ticker-a na nizi prioritet
00002 // Nested Vectored Interrupt Controller (NVIC) 
00003 #include "mbed.h"
00004 // Varijabla za brojanje rastucih bridova PwmOut objekta
00005 volatile int counter = 0; 
00006 // Callback funkcija koju poziva InterruptIn objekt
00007 void timing_critical() { 
00008     counter++;
00009 }
00010 
00011 // Callback funkcija koju poziva Ticker objekt
00012 void long_event() { 
00013     wait_ms(50);
00014 }
00015 
00016 PwmOut out(p25);
00017 InterruptIn in(p26);
00018 Ticker tick;
00019 
00020 int main() {
00021     // Generiranje PWM signala
00022     out.period_ms(10);
00023     out.pulsewidth_ms(5);
00024     // Poziv callback funkcije void timing_critical(); na svaki rastuci brid od InterruptIn pina
00025     in.rise(&timing_critical);
00026  
00027     // Uzimanje 5 sample-ova svakih 1 sec
00028     printf("1) InterruptIn only...\n");    
00029     for(int i=0; i<5; i++) {
00030         counter = 0;
00031         wait(1);
00032         printf("counts/sec = %d\n", counter);
00033     }
00034  
00035     // Poziv callback funkcije void long_event(); od strane Ticker objekta u periodu od 0.1 sec
00036     tick.attach(&long_event, 0.1);    
00037     
00038     // Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom bez postavljanja prioritera
00039     printf("2) InterruptIn plus long running occasional ticker event...\n");    
00040     for(int i=0; i<5; i++) {
00041         counter = 0;
00042         wait(1);
00043         printf("count/sec = %d\n", counter);
00044     }
00045     
00046     // Uzimanje 5 sample-ova svakih 1 sec sa ukljucenim Ticker objektom sa postavljenim prioritetom
00047     printf("3) InterruptIn plus long running occasional ticker event at lower priority...\n"); 
00048     // Postavi mbed ticker na najnizi prioritet   
00049     NVIC_SetPriority(TIMER3_IRQn, 255); 
00050     for(int i=0; i<5; i++) {
00051         counter = 0;
00052         wait(1);
00053         printf("counter = %d\n", counter);
00054     }
00055 }