Size: a a a

2021 August 03

DS

Dolphin Soft in ELECTRONIX
Данные идут по каналам 1 и 3
источник

DS

Dolphin Soft in ELECTRONIX
прерывание читает с канала 1
источник

DS

Dolphin Soft in ELECTRONIX
но данные идут со сдвигом во времени
источник

DS

Dolphin Soft in ELECTRONIX
прием с 1 закончился, а с 3 еще идет
источник

DS

Dolphin Soft in ELECTRONIX
возникнет НЕОДНОЗНАЧНОСТЬ
источник

DS

Dolphin Soft in ELECTRONIX
нужно определить таймаут приема на высшем уровне
источник

DS

Dolphin Soft in ELECTRONIX
который разрешит переопределение каналов
источник

DS

Dolphin Soft in ELECTRONIX
Либо сделать спецкод, который будет сообщать о закрытии канала и конце передачи
источник

DS

Dolphin Soft in ELECTRONIX
Вас понял, конец передачи!
источник

DS

Dolphin Soft in ELECTRONIX
Короче, нужны:
1. Инит канала передачи в прерывании (при условии что ни один канал неинициализирован)
2. Универсальный приемник, который читает с выбранного канала и формирует байт результата.
3. Деинит приема по событию (таймер или спецкод), который закрывает прием, выставляет флаг что данные получены, и сбрасывает флаги выбора каналов.
источник

DS

Dolphin Soft in ELECTRONIX
например, если в течении 30 мс не было данных на канале, считаем прием оконченным, формируем флаг полученных данных, выполняем сброс маски, и переключаем указатель приемника на второй буфер (чтобы не затереть даннеы, если начнется новый прием).
источник

DS

Dolphin Soft in ELECTRONIX
При этом твой ОСНОВНОЙ код должен успеть ПЕРЕВАРИТЬ принятые данные между пакетами передачи.
источник

И

Иван in ELECTRONIX
А вот с этим может возникнуть проблема. Может просто не успеть обработать и отработать принятый пакет
источник

DS

Dolphin Soft in ELECTRONIX
поэтому предлагаю механизм буферов:
несколько буферов, при переполнении которых прием запрещен.
источник

DS

Dolphin Soft in ELECTRONIX
небольшая динамическая очередь
источник

DS

Dolphin Soft in ELECTRONIX
ну и да, тут сложно вобще что либо понять из его требований. Их просто нет.
источник

DS

Dolphin Soft in ELECTRONIX
Все сказанное выше, имеет смысл только на коротких очередях.
источник

D

Dim in ELECTRONIX
100-300 байт
источник

DS

Dolphin Soft in ELECTRONIX
Если у него дата имеет неразумные длины очередей, то вобще нет смысла говорить о подобном решении.
источник

DS

Dolphin Soft in ELECTRONIX
Это пиздец.
источник