20190816

Dependencies:   mbed

main.cpp

Committer:
VASKO
Date:
2019-08-08
Revision:
23:39d96e160cf1
Parent:
22:1010cb11fb14
Child:
24:fba9a58e6fbd

File content as of revision 23:39d96e160cf1:

#include "PrjDefs.h"

DigitalOut myled(LED1);

Serial dpc(USBTX,USBRX);

Ticker tickTx;

MsgType _msg;

bool tick = 0;
uint32_t ctr = 0;  // счетчик обменов
uint32_t ctro = 0; 
uint32_t Ectr = 0; // счетчик ошибок

void dpc_func(){
    (void) dpc.getc();
    StartTx(&_msg.cmd);
    }

void tickIntrFunc(void){
    tick = 1;
    }//tickIntrFunc

int main() {
    
    _msg.cmd=0x41;
    _msg.pars.ui32[0]=0;
    
    TxRxServiceInit();
    tickTx.attach(&tickIntrFunc, 1);
    dpc.baud(115200);
    dpc.attach(dpc_func);
    
            //Exige Monumentum
            //Я дебил,потому что хотел выполнить действия,которые
            //требуются постоянно,один раз и именно здесь.
            
            //Для дебилов: в mbed типы "int" и "unsigned int" имеют размер 4 байта !!!
            
            //https://os.mbed.com/forum/bugs-suggestions/topic/4264/   проблема выравнивания данных
            
    while(1) {
        if ( RxBuffFull == 1 ) { 
            RxBuffFull = 0;
            if(GetCheckSum(&RxBuff.cmd) == RxBuff.cs){
                myled = !myled;
                ctr = RxBuff.pars.ui32[0] + 1;
                if(tick){
                    tick = 0;
                    dpc.printf("ctr = %d, diff = %d, Ectr = %d\n\r", ctr, ctr - ctro, Ectr); 
                    ctro = ctr;
                    }
                }else Ectr++;
            _msg.pars.ui32[0] = ctr;
            StartTx(&_msg.cmd);
            }
        }//while(1)
}//main