Самодельный локомотивный декодер.
- Engineer_Keen
- Сообщения: 313
- Зарегистрирован: Ср фев 24, 2010 11:15 am
- Имя: Василий
- Откуда: Москва
- Поблагодарили: 5 раз
Re: Самодельный локомотивный декодер.
Для тех кому интересно. Реализация чтения команды (осторожно, ассемблер )
Последний вариант выглядит примерно так:
1) Настраиваем таймер (например 0-й) с предделителем 8 (пример для Fclk=8МГц)
2) Настраиваем прерывание по перепаду и для этого прерывания пишем следующий обработчик:
3) В главном цикле проверяем флаг DCC_CMD_READY, и если установлен идем в обработчик команд (там сбрасываем флаг и указатель).
Интересно посмотреть другие варианты.
Последний вариант выглядит примерно так:
1) Настраиваем таймер (например 0-й) с предделителем 8 (пример для Fclk=8МГц)
2) Настраиваем прерывание по перепаду и для этого прерывания пишем следующий обработчик:
Код: Выделить всё
DCC_READ:
PUSH r16 ;сохраняем R16
IN R16,SREG ;и SREG
PUSH R16
IN r16,TCNT1L ;читаем прошедший интервал (нужно младших 8 бит)
SUBI R16,-32 ;некоторые преобразования
COM R16 ;которые позволяют интервал превратить в соответствующий бит (60 us - 1, 120us - 0)
OUT TCNT1L,ZERO ;обнуляем таймер
SBIC PINA,0 ;реагируем только на каждый 2-й перепад
RJMP I_RET ;остальные игнорируем
BST R16,7 ;сохраняем "результат измерения" в Т
CJNE XL,low(cmd-1),C_START ;если прием команды не был начат, переход на C_START
BRTC BITZERO ;если Т=0, преамбула кончилась, переход на BITZERO
INC BITCOUNT ;иначе считаем "1"-ы
RJMP I_RET ;выходим
BITZERO:CJLO BITCOUNT,12,RESCMD ;если "1"-ц меньше 12, ошибка приема, переход на сброс
LDI XL,low(cmd) ;иначе, переводим указатель на первый адрес команды
RJMP RESBIT ;сброс счетчика битов
C_START:CJEQ XL,low(cmd+7),RESCMD ;если байт>7, слишком длинная команда, переход на сброс
INC BITCOUNT ;увеличиваем биты
CJEQ BITCOUNT,9,BIT9 ;если битов 9, переход на BIT9
LSL CurrByte ;сдвигаем байт
BLD CurrByte,0 ;загружаем в MSB "результат измерения"
RJMP I_RET ;выходим
BIT9: ST X+,CurrByte ;сохраняем байт в ОЗУ
BRTC RESBIT ;если 9-й бит 0, выходим
SBR CON1,(1<<DCC_CMD_READY) ;если нет, ставим флаг что команда принята полностью
RJMP RESBIT ;и выходим
RESCMD: LDI XL,low(cmd-1) ;сброс указателя
RESBIT: CLR BITCOUNT ;и счетчика бит
I_RET: POP R16 ;восстанавливаем R16
OUT SREG,R16 ;и SREG
POP r16
RETI ;выход из прерывания
Интересно посмотреть другие варианты.
Re: Самодельный локомотивный декодер.
Взгляните на эту печатку, помоему все верно. Похоже так и придется самому его зделать, пока все отладишь... Короче: верхний слой необходимо через зеркало, а вот второй слой без инверсии так и распечатывать. Главное многие скачивают и молчат как на допросе, нет что бы.. Ладно скоро изготовлю и отпишусь, может еще чего вылезет.
- Вложения
-
- Locdec4.rar
- (7.71 КБ) 542 скачивания
- Engineer_Keen
- Сообщения: 313
- Зарегистрирован: Ср фев 24, 2010 11:15 am
- Имя: Василий
- Откуда: Москва
- Поблагодарили: 5 раз
Re: Самодельный локомотивный декодер.
Ну у меня например диптрейса нету и ставить ради этого вломdom812005 писал(а):Главное многие скачивают и молчат как на допросе, нет что бы.. Ладно скоро изготовлю и отпишусь, может еще чего вылезет.
Re: Самодельный локомотивный декодер.
К справке: DipTrace открывает P-Cad и многие другие, а вот наоборот проверяйте сами ( импорт и экспорт действует в обоих направлениях). Если нужно могу ссылку положить, где можно скачать.
- Жорик_У
- Сообщения: 481
- Зарегистрирован: Пн мар 17, 2008 3:46 pm
- Откуда: Туапсе
- Контактная информация:
Re: Самодельный локомотивный декодер.
Блин, надо бы покрасить ЖД форум в шпальный цвет и запах прицепить креозота. А так куча хворумов на одно лицо...
Последний раз редактировалось Жорик_У Вт апр 24, 2012 8:25 am, всего редактировалось 1 раз.
- Engineer_Keen
- Сообщения: 313
- Зарегистрирован: Ср фев 24, 2010 11:15 am
- Имя: Василий
- Откуда: Москва
- Поблагодарили: 5 раз
-
- Сообщения: 1430
- Зарегистрирован: Вс фев 19, 2012 7:18 am
- Имя: Фарид
- Откуда: Узбекистан Ташкент
- Поблагодарили: 1 раз
- Контактная информация:
Re: Самодельный локомотивный декодер.
Вообшем обьездил все магазины какие есть,беда выходит с фриками,нету практический ничего, только в одном магазе на заказ 24 по тройной цене,нельзяли на пиках придумать?звуковой декодер.