Страница 25 из 47

Re: Самодельный локомотивный декодер.

Добавлено: Пн апр 16, 2012 5:19 pm
Engineer_Keen
Для тех кому интересно. Реализация чтения команды (осторожно, ассемблер :mrgreen: )
Последний вариант выглядит примерно так:
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 ;выход из прерывания
3) В главном цикле проверяем флаг DCC_CMD_READY, и если установлен идем в обработчик команд (там сбрасываем флаг и указатель).
Интересно посмотреть другие варианты.

Re: Самодельный локомотивный декодер.

Добавлено: Пн апр 16, 2012 8:10 pm
dom812005
Взгляните на эту печатку, помоему все верно. Похоже так и придется самому его зделать, пока все отладишь... :D Короче: верхний слой необходимо через зеркало, а вот второй слой без инверсии так и распечатывать. Главное многие скачивают и молчат как на допросе, нет что бы.. :D Ладно скоро изготовлю и отпишусь, может еще чего вылезет.

Re: Самодельный локомотивный декодер.

Добавлено: Вт апр 17, 2012 2:29 pm
Engineer_Keen
dom812005 писал(а):Главное многие скачивают и молчат как на допросе, нет что бы.. :D Ладно скоро изготовлю и отпишусь, может еще чего вылезет.
Ну у меня например диптрейса нету и ставить ради этого влом :mrgreen:

Re: Самодельный локомотивный декодер.

Добавлено: Вт апр 17, 2012 3:41 pm
dom812005
К справке: DipTrace открывает P-Cad и многие другие, а вот наоборот проверяйте сами ( импорт и экспорт действует в обоих направлениях). Если нужно могу ссылку положить, где можно скачать.

Re: Самодельный локомотивный декодер.

Добавлено: Пн апр 23, 2012 5:17 pm
Жорик_У
Блин, надо бы покрасить ЖД форум в шпальный цвет и запах прицепить креозота. А так куча хворумов на одно лицо...

Re: Самодельный локомотивный декодер.

Добавлено: Пн апр 23, 2012 10:34 pm
dom812005
Кто-нибудь преведите. :mrgreen: :mrgreen: :mrgreen:

Re: Самодельный локомотивный декодер.

Добавлено: Пн апр 23, 2012 10:49 pm
Engineer_Keen
Видимо окошком промахнулись :lol:

Re: Самодельный локомотивный декодер.

Добавлено: Вт апр 24, 2012 4:46 am
Федюнь
Вообшем обьездил все магазины какие есть,беда выходит с фриками,нету практический ничего, только в одном магазе на заказ 24 по тройной цене,нельзяли на пиках придумать?звуковой декодер.

Re: Самодельный локомотивный декодер.

Добавлено: Вт апр 24, 2012 9:59 am
dom812005
А по интернет магазинам проитись религия не позволяет.

Re: Самодельный локомотивный декодер.

Добавлено: Вт апр 24, 2012 11:09 am
Жорик_У
что есть фрик?