Чт авг 11, 2022 16:15:46
AlexandrRa писал(а):так правильней.
Чт авг 11, 2022 16:23:22
void uart_handler_RX(void)
{
if (y < Size_data) // если весь пакет не принят
{
data[y] = UDR0; // запись следующего байта data[y]
y++; // счётчик байт
return;
}
y=0;
}
uint8_t flag = 0;
uint8_t Size_data = 12; // например передаём 12 байт
ISR(PCINT0_vect){
if(PINB & (1 << PB0)) flag = 1; // Разрешение передачи данных
}
int main(){
UART_init();
interrupt_init();
sei();
while(1){
if (flag){
for (y = 0; y < Size_data ; y++){
uart_transmit(data[y]);
}
flag = 0; // Данные переданы
}
}
Чт авг 11, 2022 16:29:34
AlexandrRa писал(а):И не закрывай посылку значением данных в передаче. Отучайся от этого.
Atmega 328PAlexandrRa писал(а):Что за МК хоть?
AlexandrRa писал(а):И добавь прерывание по приёму
Чт авг 11, 2022 16:31:09
Чт авг 11, 2022 16:42:22
AlexandrRa писал(а):и с на фиг ненужно стало
Чт авг 11, 2022 18:52:34
Пт авг 12, 2022 07:46:36
Задача тут очень понятная, например консоль putty будет постоянно открыть по UART с МК, ждет ввода команд с клавы, но в то же время как только придет нужное прерывание отвязаться от uart_receive(); и начал обрабатывать другое условие с циклом с выводом данных на консоль и после обработки вернулась в тот же режим uart_receive();
Пт авг 12, 2022 14:25:10
Вам командная консоль нужна или как?Sulik писал(а):Задача тут очень понятная,
Пт авг 12, 2022 14:54:10
Пт авг 12, 2022 16:17:40
Вам командная консоль нужна или как?Sulik писал(а):Задача тут очень понятная,
Пт авг 12, 2022 18:09:14