bosko lekovic
/
IO_board
IO plocana FRDM K64
Diff: main.cpp
- Revision:
- 14:b63e4664e2a8
- Parent:
- 13:7c4ec32f6a54
- Child:
- 15:3429cdc6e5f4
--- a/main.cpp Sat Apr 24 18:48:38 2021 +0200 +++ b/main.cpp Sat Apr 24 21:26:03 2021 +0200 @@ -17,6 +17,8 @@ #include "IOspiprotokol.h" #include "ZeroCrossing.h" +#include "ZC_CommandIndication.h" + #include "IOzcControl.h" @@ -27,7 +29,7 @@ // Blinking rate in milliseconds #define BLINKING_RATE_MS 200 -DigitalOut ioTest(IO_TEST,0); +//DigitalOut ioTest(IO_TEST,0); @@ -49,16 +51,23 @@ C_spiProtokol c_spiProtokol( &c_data, &c_ledControl ); + + + + C_zeroCrossing c_zeroCrossing( &c_data); + + + C_zeroCrossing& rc_zc = c_zeroCrossing; C_zcControl c_zcControl( &c_zeroCrossing, &c_spiProtokol); -//DigitalOut pola( PTB20, 0); // test zero crossing ivica +C_ZC_CommandIndication c_zc_ci( &c_data, &c_zeroCrossing); -Ticker test_RasaLed; -DigitalOut RasaLed(PTE0,1); +//Ticker test_RasaLed; +//DigitalOut RasaLed(PTE0,1); int tz; @@ -74,64 +83,8 @@ s_log.clear(); printf( " capacity %d max_size %d size %d\n\r", s_log.capacity(), s_log.max_size(), s_log.size()); -test_RasaLed.attach_us([=]{ RasaLed = !RasaLed;}, 500000 ); - -/* postavljanje funkcija za komande i indikaciju sinhrono sa zero crossing-om */ - - static int block_delay = 0; - - // uzlazni prolaz kroz nulu - izvrsenje komande - c_zeroCrossing.set_ontimeONfun( []() - { - // testPin =! testPin; - rc_zc.set_portOut( c_data.get_command() ); // upis komande na port - if( c_data.get_newcommand_flag() == true) { block_delay = 1; } // blokirati citanje indikacija posle novodobijene komande - else if(block_delay) { block_delay--; } - else { c_data.set_messagge(); c_data.set_realIndication();} - } - ); - c_zeroCrossing.set_ontimeOFFfun( [](){ } ); +//test_RasaLed.attach_us([=]{ RasaLed = !RasaLed;}, 500000 ); - // minimum mreze - rad sa indikacijama ispravnosti sijalica - c_zeroCrossing.set_postponeONfun( []() - { - if(block_delay == 0 && (c_data.check_newcommand_flag()== false) ) - { - char p1 = rc_zc.get_portInMin(); // dva ocitavanja porta - wait_us(10); - char p2 = rc_zc.get_portInMin(); - p1 &= p2; - c_data.set_pMin( p1 ); // upis vrednosti minimuma mreze u C_data - c_data.set_indication(); // proracun i upis indikacije u C_data - c_data.set_corectness(); // proracun i upis ispravnosti sijalice - c_data.set_realIndication(); // izracun aktuelne indikacije - spremna za slanje na LEDove - - - } - else c_data.clear_pMin(); - } - ); - - -// maximum mreze - rad sa neispravnim naponom - misem - c_zeroCrossing.set_postponeOFFfun( []() - { - static int i=0, j=0; - if(block_delay == 0 && (c_data.check_newcommand_flag()== false)) - { - ledB =!ledB; - char p1 = rc_zc.get_portInMax(); // dva ocitavanja porta - wait_us(10); - char p2 = rc_zc.get_portInMax(); - p1 |= p2; - c_data.set_pMax( p1 ); // upis vrednosti maksimuma mreze - c_data.set_faultVoltage(); // izracun i upis napona misa - - - } - else c_data.clear_pMax(); - - } ); int b = b2;