Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
22.09.2009, 18:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Замок на iButton DS1990
Сообщение от Developer_
|
....Могу дать исходники. Вам для IAR или для CodeVision?
|
Если Вам не жалко - то для CodeVision
|
|
|
|
23.09.2009, 10:23
|
|
Прописка
Регистрация: 21.12.2005
Сообщений: 247
Сказал спасибо: 10
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
|
Re: Замок на iButton DS1990
Вот код. Вырезал его из старого проекта(с CodeVision давно не работаю) и повставлял рыбы что бы код приобрёл целостность, поэтому может выглядеть неказисто, но основной принцип работы передаёт и его легко прикрутить к своему проекту. Если есть вопросы - задавайте.
Цитата:
|
#include ‹delay.h› //Паузы
// 1 Wire Bus functions-----------------------------------
#asm
.equ __w1_port=0x15 ;PORTC
.equ __w1_bit=7
#endasm
#include ‹1wire.h› //Работа с Tuoch memory
unsigned char g_rom_codes[8]; //глобальный масив для хранения принятых ключей
bit in_try_key; //бит приём аключа
bit in_key_for_work; // бит для обработки ключа
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void) //Каждые 0,333c
{
unsigned char i,k,z;
TCNT1H=0xf6; // Reinitialize Timer 1 value
TCNT1L=0xa1;
//*****ЗАДАЧА1 ************************************************** ***********************
//**********ЗАДАЧА2 приём ключа ibutton*******************************************
t_m=0; //Отпускаем линию
delay_us(60); //ждём
if(t_m_pin==0)
{
imput_ibutton(); //получаем номер ключа
if(in_try_key==1) //проверяем правильность приёма ключа(crc)
{
in_try_key=0; //сбрасываем бит приёма ключа
in_key_for_work = 1;
//ЧТО ТО ДЕЛАЕМ.....
//Светоэфект
vd=~vd;
delay_ms(1000);
vd=~vd;
delay_ms(1000);
vd=~vd;
delay_ms(1000);
vd=~vd;
delay_ms(1000);
vd=~vd;
delay_ms(1000);
}
}
t_m=1; //Зануляем линию линию
//*******ЗАДАЧА3************************************ ********************************
}
void init_timer(void)
{
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,200 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xf6;
TCNT1L=0xa3;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}
void imput_ibutton(void)
{
unsigned char i,crc;
in_try_key=0;
delay_us(500); //pause for pass a puls presents
w1_write(0x0f); //0f-comand read EEPRPM
for(i=0;i‹8;i++)
{
g_rom_codes[i]= w1_read(); //giving 8 bite from 1wire bus
crc=w1_dow_crc8(g_rom_codes,i); //calculation CRC
}
if(crc==g_rom_codes[7]) if(g_rom_codes[0]==1) in_try_key=1;
}
void main(void)
{
init_timer();
while(1)
{
if(in_key_for_work ) //что то делаем....
}
}
|
__________________
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей, по этому чёртовому гвоздю!
|
|
|
|
23.09.2009, 10:32
|
|
Прописка
Регистрация: 21.12.2005
Сообщений: 247
Сказал спасибо: 10
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
|
Re: Замок на iButton DS1990
Вот ещё:
#define t_m DDRC.7 //Адрес tuoch memory
#define t_m_pin PINC.7 //Адрес tuoch memory
__________________
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей, по этому чёртовому гвоздю!
|
|
|
Сказали "Спасибо" Developer_
|
|
|
04.10.2009, 13:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Замок на iButton DS1990
Уважаемые коллеги! Может кто подскажет:
в Протеусе работает - в железе нет.
Это несколько переделанный пример из CodeVisionAVR. Попробовал убрать FAMILY_CODE, проверку CRC - все-равно никакого результата. Может частота процессора в примере другая, у меня 4 мГц? Что-то в настройках 1ware?
|
|
|
|
04.10.2009, 14:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Замок на iButton DS1990
Сообщение от IOPA4
|
Уважаемые коллеги! Может кто подскажет:
в Протеусе работает - в железе нет.
Это несколько переделанный пример из CodeVisionAVR. Попробовал убрать FAMILY_CODE, проверку CRC - все-равно никакого результата. Может частота процессора в примере другая, у меня 4 мГц? Что-то в настройках 1ware?
|
А что именно у вас не работает?... где спотыкается?...
импульс отклика 1990 формирует?... или спотыкается уже на ответе?
Я столкнуля с тем, что в Протеусе 1990 не формирует отклик если длительность RESET немного менее 500 микросек. хотя реальные 1990 отвечают... немного увеличил импульс - уменьшил частоту в Протеусе и всё поехало.....
или ошибка в модели.. или реальные устройства имеют больший разброс по длитеьлности RESET.
В реале проверьте длительности.. проверьте уровни..
|
|
|
|
04.10.2009, 16:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Замок на iButton DS1990
to: picavr
Вы меня не поняли - в Протеусе все Ок, а вот в железе - ни какой реакции. Может бегло проглядите листинг, что нужно изменять в листинге чтобы откликнулось в железе?
|
|
|
|
04.10.2009, 17:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Замок на iButton DS1990
Сообщение от IOPA4
|
to: picavr
Вы меня не поняли - в Протеусе все Ок, а вот в железе - ни какой реакции. Может бегло проглядите листинг, что нужно изменять в листинге чтобы откликнулось в железе?
|
Да я понял что в железе проблема, это я просто пример привёл что Протеус не показатель работоспособности.
И написал что бы в реале проверили длительности и уровни...
Вы представляетет как работает 1wire или тупо подключили библиотеку и всё?
Я бы проверял осцилографом в железе, сначала формирование импульса сборос, его длительность и уровни, потом наличие отклика от устройства, потом запись в шину байта комманды итд... а потом анализировать что не так и рыть программу...
а смотреть код.. не зная что именно не работает... смысел есть?
Я в Си написал и отладил код работающий в IAR AVR и HITECH PICC16. Никаких неожиданойстей, длительности по даташиту и всё работает в железе...
|
|
|
|
04.10.2009, 20:47
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Нижний Новгород
Сообщений: 903
Сказал спасибо: 90
Сказали Спасибо 1,276 раз(а) в 414 сообщении(ях)
|
Re: Замок на iButton DS1990
Я занимался лет 9 назад - разрабатывал тогда программу для работы с DS1990 на ассемблере под AT90S2313. Там все достаточно понятно, просто нужно очень точно выдерживать временные слоты. В моей программе ключи хранились в EEPROM в 3-х копиях (из опыта эксплуатации - редко, но возможны искажения данных EEPROM). Поэтому был введен контроль и восстановлением данных в случаех их повреждения. По этой причине в EEPROM ключей помещается немного - зато потом не было случая, чтобы ключи "терялись". Потом была версия под Attiny 2313, где ключи записывались в программную память c использованием selfprogram mode. Если что-то из этого может Вам помочь, могу поделиться исходниками.
|
|
|
|
05.10.2009, 00:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Замок на iButton DS1990
Сообщение от you_go
|
Там все достаточно понятно, просто нужно очень точно выдерживать временные слоты.
|
Да там всё просто как дверь... повнимательнее написать, и заработает.
|
|
|
|
05.10.2009, 09:25
|
|
Временная регистрация
Регистрация: 29.03.2005
Сообщений: 86
Сказал спасибо: 6
Сказали Спасибо 45 раз(а) в 21 сообщении(ях)
|
Re: Замок на iButton DS1990
Статья публиковалась в "Радио", #3, 2001, здесь неурезанная версия - "iButton: описание протокола, электронный замок на ключах-таблетках" http://microsin.ru/content/view/508/1/
Исходники замка: http://microsin.ru/Download.cnt/touc...ck2/iblock.zip
Последний раз редактировалось microsin; 05.10.2009 в 09:29.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:23.
|
|