16+
Понедельник
12 ноября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
evgeniy1294  (28.10.2018 01:14 - 28.10.2018 01:20) , в ответ на Что бы понять в каком байте ошибка придется проводить манипуляции с ДМА, нарушающие всю его работу. А если нужна возможность работы когда в каждом байте ошибка, то польза от ДМА может совсем потеряться. автор: AlexBi_
У меня все на DMA, мастеров, которые строго требуют выдерживания паузы для ответа избегаю. Это архаизм уже, в новой аппаратуре типа delta, mitsubishi и др. такого не встречал.  
Удобно же:
port->write(pdata, size); // отправили, zero copy
//...........
uint32_t size = port->read(pdata); // Приняли, копирование из буфера.
// А можно так, zero copy
port->setbuf(pbuf);
//...........
bool check = port->rxCheck(); //
Все делается на прерываниях типа IDLE и TC. Сам по себе порт построен как конечный автомат, поэтому можно легко и задержку впихнуть:
hal::timer delay; //структура timer просто удобная оболочка взаимодействия с systick

// В конечном автомате
  delay.set(3);
  state = state::delay;
  //........
  case state::delay:
   if (delay.check())
   {
     state = state::next;
     delay.stop(); // не обязательно
   }
   break;
Контролировать целостность каждого байта не вижу смысла, есть CRC.
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII