Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
int16_t uart_recieve(uint8_t* rb)
...
while(rxbitcount);
...
int16_t uart_recieve(uint8_t* rb)
{
if(rxbitcount < 0x09) // Если счетчик бит на прием меньше 9
{
while(rxbitcount); // Ждем пока завершится текущий прием
// !!!!!!!!!!!!!!!!!!!!!
// если в этот момент случится прерывание INT0, то в rxbyte обнулится
// !!!!!!!!!!!!!!!!!!!!!
*rb = rxbyte; // Пишем по адресу указателя принятый байт
rxbitcount = 0x09; // Восстанавливаем значение счетчика бит
return (*rb); // Возвращаемся
}
else
{
return (-1); // Иначе возвращаем -1 (принимать нечего)
}
}
Полнодуплексный программный UART для ATtiny13