Автор |
Сообщение |
|
Дата: 14 Июн 2007 03:24:12 · Поправил: Harald (14 Июн 2007 03:26:50)
#
Решил сделать сабж под впечатлением от статьи в ][акере за 09.2006
Собрал девайс на ATTiny12L-4PI. Схема проста, опишу на словах. В качестве сигнальной линии используется нога
PB3 (XTAL1) Она соединена с землей резистором на 360кОм. Питается от двух круглых батареек типа для калькуляторов. К PB4 подключен светодиод. Еще пришлось соединить RESET с плюсом питания через резистор, без этого контроллер не запускался.
Тактовая частота - 1.2 МГц от внутреннего генератора должна быть
Девайс работать отказывается, при подключении к домофону светодиод мигает, но домофон не реагирует, т.е ключ корректно не передается. Решил выложить прошивку, может кто в теме, поможет
И еще вопрос - у серийника на таблетке младший байт - крайний правый, старший - крайний левый, правильно?
[code]
.include "tn12def.inc"
.cseg
.org 0
rjmp RESET
rjmp EINT0
rjmp PIN_CHANGE
rjmp TIMER_OVF
rjmp EEPROM_RDY
rjmp AN_COMP
key_o2:
.db 0x01,0x48,0x7F,0xAB,0x0D,0x0,0x0,0xC6
RESET:
ldi r16,0b00010000
out DDRB,r16;ножка со светодиодом-выход, остальные-входы
ldi r16,0b00000111
out PORTB,r16
ldi r16,0b00100000
out GIMSK,r16;разрешение прерывания по изменению состояния ножек
ldi r16,0b00110000
out MCUCR,r16;разрешение спящего режима
sei ;разрешение прерываний
sleep
;1) ожидание подключения к домофону
sbis PINB,3
rjmp do_reset;сброс, если на проводе 0
wdr
ldi r16,0b00001011
out WDTCR,r16
cli
ldi r17,6
rcall wait;задержка прибл. на 21мкс
;2) выдача импульса присутствия
sbi DDRB,3; PB3 -выход
cbi PORTB,3;удержание линии в 0
ldi r17,30
rcall wait;импульс присутсвия, 80мсек
cbi DDRB,3;PB3 -вход,импульс выдан
rcall wait_pullup
wdr
;3) пропуск 8 бит команды чтения
ldi r16,8
skip_command:
rcall wait_pulldown
wdr
rcall wait_pullup
dec r16
brne skip_command
wdr
;4) передача ключа
ldi r16,8;счетчик байтов
ldi r20,0
ldi r21,1
load_key:
ldi ZL,low(key_o2)
ldi ZH,high(key_o2)
send_next_byte:
lpm
add ZL,r21
adc ZH,r20
ldi r18,8;счетчик битов
send_next_bit:
lsr r0
brcs write_1
write_0:
rcall wait_pulldown
sbi DDRB,3; PB3 -выход
cbi PORTB,3;удержание линии в 0
ldi r17,9;
rcall wait
cbi DDRB,3;PB3 -вход
wdr
rcall wait_pullup
dec r18
brne send_next_bit
rjmp l_01
write_1:
rcall wait_pulldown
wdr
rcall wait_pullup
dec r18
brne send_next_bit
l_01:
dec r16
brne send_next_byte
;5) ключ отправлен, включаем светодиод
wdr
ldi r16,0b00010111
out PORTB,r16;включение светодиода
rjmp do_reset;сброс контроллера
wait:
dec r17
brne wait
ret
wait_pullup:
sbis PINB,3
rjmp wait_pullup
ret
wait_pulldown:
sbic PINB,3
rjmp wait_pulldown
ret
do_reset:
ldi r16,0b00001000
out WDTCR,r16
WAIT_RESET:
rjmp WAIT_RESET
PIN_CHANGE:
reti
EINT0:
TIMER_OVF:
EEPROM_RDY:
AN_COMP:
reti
[/code]
|
|
Дата: 14 Июн 2007 08:58:53
#
Домофоны бывают с ключами работающими по протоколам Метаком, Цифрал, Даллас и нецифровые. У тебя какой? :-))
|
Реклама Google
|
|
|
Дата: 14 Июн 2007 09:44:42
#
Цифрал, Даллас
У меня оба работают от Далласовского ключа. ПРичем инсталлеры сначала выеживались прошивать даллас на Цифрал (денех, видать, хотели), но прошился тут же без проблем. Так что это один и тот же протокол.
|
|
Дата: 14 Июн 2007 14:03:37 · Поправил: Harald (14 Июн 2007 14:05:20)
#
протокол Dallas, написано ж в названии темы
У меня недавно подозрения возникли, что может у контроллера тактовая частота значительно ниже, чем
1.2 мгц, и задержки из-за этого больше получаются. По документации Atmel, при напряжении 3 В и температуре
25 градусов частота должна быть где-то 1.12мгц (по графику), но там же написано, что это теоретически рассчитываемые характеристики, значит, реальные девайсы могут вести себя по-другому
задержки я рассчитывал исходя из частоты 1.12мгц
|
|
Дата: 14 Июн 2007 14:43:06
#
А зачем изобретать эмулятор, когда в сети есть гарантированно рабочие, со схемой и прошивкой?
|
|
Дата: 14 Июн 2007 14:53:50
#
Когда-то собрал отлично работающая сигналку с ключами Dallas, правда не на Атмеле, а на пике. Сам дорабатывал схему и провивку. За три года работы никаких нареканий не было, многие повторили данную конструкцию. Если интересуют, пришлю всю документацию с прошивкой.
|
|
Дата: 14 Июн 2007 17:58:29
#
Dominic
Тут важен не готовый результат, а процесс самостоятельного создания рабочего девайса :)
К тому же все эмуляторы в сети, которые я встречал, на PIC-ах. А программировать под
PIC влом, AVR архитектура мне больше нравится
Bar_boss
Интересует, буду рад поизучать
можно выложить на zalil.ru ? (файловый хостинг такой)
|
|
Дата: 15 Июн 2007 07:56:53
#
можно выложить на zalil.ru ? (файловый хостинг такой)
Да напишите в личку свой электронный адрес, пришлю письмом, там файл всего 120 кБ.
|
|
Дата: 15 Июн 2007 09:23:28
#
Harald
AVR архитектура мне больше нравится
А вы аппликейшн джоурналс Атмеловские читали?
Там в каком-то из номеров какраз такой эмулятор описывался на Тиньке.
Была приведена схема, листинг программы и описание работы.
|
|
Дата: 15 Июн 2007 15:26:41
#
лучше бы придумали програмулину для КПК или хотя бы лаптопа, чтобы, подключив СОМ порт ПК можно было открывать все двери. Ведь код, зашитый в каждый ключ Даллас семикондуктор, выгравюрован на саом ключе. Так что, имея образец, можно ввести цифры в программу и послать данные в порт домофона.
|
|
Дата: 15 Июн 2007 15:32:11
#
Harald
Тут важен не готовый результат, а процесс
В таком случае хорошо понимаю :)) Сам такой.
программировать под PIC влом, AVR архитектура мне больше нравится
И это одобряю, правда ни тем ни другим пока толком не владею, всё собираюсь освоить AVR, подопытный 8535 уже с полгода валяется прямо на столе, никак до него не дойдут руки. Я лично люблю AVR за его преемственность по отношению к старым добрым Intel/Z80, на которых я съел если не собаку, то собачку точно :)
Возвращаясь к теме: алгоритм далласа довольно примитивный, попробуйте разрисовать его в виде структурной схемы и пройдитесь по своей программе. Я обычно тоже начинаю сразу кодить, а когда прога не работает, рисую структурку и фактически переписываю прогу по этому рисунку. Как ни странно, но в 90% случаев это помогает... Ну и за таймингами конечно надо следить.
|
|
Дата: 15 Июн 2007 15:39:54
#
частота должна быть где-то 1.12мгц стремная эта штука встроенный RC-генератор. До контроллера пальцем дотрагиваешься и все плывет. Задержки нельзя делать, основанные на таком источнике.
Работал с аналогичной переферией MSP430 от TI, так там было много всяких чудес вокруг этого генератора. А почему кварц не поставить? Или прибором не померить? Ну можно в крайнем случае приемником помониторить :)
|
|
Дата: 15 Июн 2007 18:52:32
#
Altair
Домофоны бывают с ключами работающими по протоколам Метаком, Цифрал, Даллас и нецифровые. У тебя какой? :-))
про "протоколы" Цифрал звучит комично. :) http://vrtp.ru/index.php?showtopic=5661 |
|
Дата: 17 Июн 2007 01:37:35
#
ЗигЗаг
А в каком именно номере? Или за какой год? На сайте Атмела архивы 2005 годом заканчиваются.
Атмел их типа по почте рассылает?
Недавно копался в прошивке, нашел несколько багов:
ldi ZL,low(key_o2*2)
ldi ZH,high(key_o2*2)
- забыл умножить на 2
А также еще несколько возможных проблем с таймингами.
Надо будет повозиться в ближайшее время.
metrolog
А вот частоту померить нечем. Есть только такая идея - написать прогу,
которая будет мигать светодиодом с большими задержками (несколько десятков секунд),
измерить секундомером период мигания и рассчитать частоту
|
|
Дата: 17 Июн 2007 09:15:38
#
фузы смотри. Обычно через них косяки получаются.
|
|
Дата: 17 Июн 2007 16:05:40
#
да я их вообще не трогал
|
Реклама Google |
|