20190816

Dependencies:   mbed

main.cpp

Committer:
VASKO
Date:
2019-08-02
Revision:
0:5152e3f9df72
Child:
1:e5810b8734ec

File content as of revision 0:5152e3f9df72:

#include "mbed.h"

#define ArrTxSize 16
#define ArrRxSize 16

#define LeadingEcho 1 //определить "1" для превращения программы 
                              //в эхо  + вывод массива  
#define RxInterruptEnable 1 //определить "0" для отслеживания приянятия символа поллингом

//отправка массива по приему  символа
Serial pc(USBTX,USBRX);
//uint8_t a = pc.getc();
DigitalOut myled(LED1);

int nCharTx = 0;

uint8_t ArrTx[ArrTxSize] = {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4b,0x4c,0x4d,0x4e,0x20};
uint8_t ArrRx[ArrRxSize];
    
void IntrTx() {
    nCharTx++;
    if (nCharTx < ArrTxSize ){
    pc.putc(ArrTx[nCharTx]);
    }
    else{
         pc.attach(NULL, Serial::TxIrq);
        }
    }

void IntrRx() { 
    
#ifdef LeadingEcho
#if LeadingEcho == 1  
    uint8_t received_char;
    received_char = pc.getc();
    pc.putc(received_char);   //раскомментировать эту строку для превращения программы 
                              //в эхо  + вывод массива  
    nCharTx = -1;             //установить в -1 для превращения программы
                              //в эхо  + вывод массива  
#elif LeadingEcho == 0
    (void) pc.getc();
    nCharTx = 0;             //установить в -1 для превращения программы
                              //в эхо  + вывод массива  
    pc.putc(ArrTx[nCharTx]);//закомментировать эту строку для превращения программы  
                              //в эхо  + вывод массива  (стилистически правльно)
#endif                              
#else
  #error LeadingEcho not defined !!!!!!!
#endif                             
    pc.attach(&IntrTx, Serial::TxIrq);
    }

int main() {
#ifdef RxInterruptEnable
#if RxInterruptEnable == 1
            pc.attach(&IntrRx, Serial::RxIrq);
#endif                            
#else
  #error RxInterruptEnable not defined !!!!!!!
#endif  
            pc.attach(NULL, Serial::TxIrq);//я УПЁРТЫЙ дебил
            
            
            //Я дебил,потому что хотел выполнить действия,которые требуются
            //постоянно,один раз и именно здесь.
            
    while(1) {
#ifdef RxInterruptEnable
#if RxInterruptEnable == 0
        (void) pc.getc();
        nCharTx = 0;
        pc.putc(ArrTx[nCharTx]);
        pc.attach(&IntrTx, Serial::TxIrq); 
#endif                            
#else
  #error RxInterruptEnable not defined !!!!!!!
#endif     
    }
}