Pingvin писал(а):
Теперь понял!
Вы предлагаете работать на уровне бит. Я и такой вариант рассматривал, но пока не стал реализовывать, так как в прерывании придется крутить-вертеть битами, а это дополнительное процессорное время, что для прерывания не есть хорошо.
Но я и это вариант не исключаю ни коем образом. Сперва именно так и хотел сделать. Поживем - увидим. Пока делаю как проще (лично для меня).
Что касается хранения установок eeprom - разумеется! Так и будет, дайте срок.
И меняться значения будут по команде через COM-порт и/или посредством кнопок управления.
Пока нужно сделать основные вещи - обеспечит транспортный уровень (прием/передача), потом и до остального доберёмся.
Не бит а байт
и ничего крутить не надо. Передаем в прерывание сначала байт с id_gamer ( это данные в буфере передатчика по индексу 0 ) последовательно сдвигая вправа а затем точно так же байт с цветом команды и ущербом. Время нахождение в прерывании равно толко времени инициаллизации передачи одного бита и установки идентификатора окончания передачи. У меня это около 8-10 циклов. Ниже написана процедура отправки бита в прерывание.
for( count_byte = 0; count_byte < length; ++count_byte )
{
for( count_bit = 0; count_bit < 8; ++count_bit )
{
if( bufer_ir_tx[count_byte] & 0x80 )
// передаю 1 ( в прерывании )
else // передаю 0
bufer_ir_tx[count_byte] <<= 1;
++count_bit;
while( // ожидание передачи бита )
}
}
Ну, на вкус и цвет ...
Я просто обнуляю курсор и разрешаю передачу, прерывание само все сделает.