vasko ozo
/
TxRxService
20190816
Diff: main.cpp
- Revision:
- 8:cad966c09853
- Parent:
- 7:7aaa14391264
- Child:
- 9:dcddb19ad551
--- a/main.cpp Sat Aug 03 14:02:58 2019 +0000 +++ b/main.cpp Sat Aug 03 14:58:57 2019 +0000 @@ -8,32 +8,27 @@ uint8_t ArrRx[ArrRxSize] = ArrRxInitializer; uint8_t *pArrTx = &ArrTx[0]; uint8_t *pArrRx = &ArrRx[0]; +bool ArrRxCmplt = 0; void IntrTx() { - if ( ++pArrTx <= &ArrTx[ArrTxSize-1] ){ - pc.putc(*pArrTx); + if ( ++pArrTx <= &ArrTx[ArrTxSize-1] ) pc.putc(*pArrTx); + else pc.attach(NULL, Serial::TxIrq); } - else{ - pc.attach(NULL, Serial::TxIrq); - myled=0; - } - } + +void StartTx(){ + pArrTx = &ArrTx[0]; + pc.putc(*pArrTx); + pc.attach(&IntrTx, Serial::TxIrq); + }//StartTx void CopyMemUint8(uint8_t *src = &ArrRx[0], uint8_t *dst = &ArrTx[0], int qty = ArrTxSize){ for ( ; qty > 0; src++,dst++,qty-- ) *dst = *src; - } - + } + void IntrRx() { *pArrRx = pc.getc(); - if ( pArrRx++ >= &ArrRx[ArrRxSize-1] ) { - pArrRx = &ArrRx[0]; - CopyMemUint8(); - pArrTx = &ArrTx[0]; - pc.putc(*pArrTx); - pc.attach(&IntrTx, Serial::TxIrq); - myled=1; - } - } + if ( pArrRx++ >= &ArrRx[ArrRxSize-1] ) { pArrRx = &ArrRx[0]; ArrRxCmplt = 1; } + }//IntrRx int main() { pc.attach(&IntrRx, Serial::RxIrq); @@ -44,5 +39,10 @@ //требуются постоянно,один раз и именно здесь. while(1) { - } + if ( ArrRxCmplt == 1 ){ + CopyMemUint8(); + StartTx(); + ArrRxCmplt = 0; + } + }//while(1) }