реклама на сайте
подробности

 
 
> I-button ключи от домофона.
ps1x
сообщение May 3 2006, 21:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Нашел в сети много копий одного и тогоже прибора для эмулирования i-button. Но вот беда, оно построено на PIC, к которым у меня религиозное предубеждение, кроме того автор дал лишь прошивку без исходников.

Кто нибудь реализовывал такое на AVR? Поделитесь исходником если есть. unsure.gif
Go to the top of the page
 
+Quote Post
4 страниц V  < 1 2 3 4 >  
Start new topic
Ответов (15 - 29)
add
сообщение May 6 2006, 09:36
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Таблетка не содержит внутри себя никаких батареек

Спешу Вас разочаровать :-)
Некоторые содержат! (например связанные с хронометрией и термоконтролем.. cо встроенной памятью)(например DS1995) но не суть дела.
Да, в домофонных таблетках нет, это факт!

Цитата
для нее получается как бы длительный RESET

этим я попытался обьяснить общий принцип. Внутри таблетки есть буферный кондер от которого она питается во время работы, и есть внутренний "потребитель тока" который просаживает кондер в отключенном состоянии. Получая питание таблетка "считает" что произошел RESET.

Сообщение отредактировал add - May 6 2006, 09:36


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
vvs157
сообщение May 6 2006, 12:13
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(add @ May 6 2006, 13:36) *
этим я попытался обьяснить общий принцип. Внутри таблетки есть буферный кондер от которого она питается во время работы, и есть внутренний "потребитель тока" который просаживает кондер в отключенном состоянии. Получая питание таблетка "считает" что произошел RESET.


Reset - Это когда после подачи питания происходит отключение питания на некоторый промежуток времени
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
add
сообщение May 6 2006, 13:00
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Reset - Это когда после подачи питания происходит отключение питания на некоторый промежуток времени

:-( ну хорошо если Вам так понятнее, пожалуста!
Хочу только обратить ваше внимание что : "все устройства начинают работу с шиной 1-wire после RESET"(из доков).
ГЛАВНОЕ: После прикосновения таблеткой к контакту домофона (контроллера), она (таблетка) выдает сигнал присутствия! иначе контроллер неопределит факт ПОДКЛЮЧЕНИЯ. Дальше с таблеткой работаем как с обычным 1-wire устройством. Можно подать (от коетроллера RESET) а можно начать передачу команды.
Заметьте для этого при первой передачи команды RESET не нужен , т.к. для таблетки это пройденный этап (см. посты выше) и она перешла на "командный уровень".
На рисунке (из datasheeta) показана инициализация уже ПОДКЛЮЧЕННОГО к шине 1-WIRE устройства!!! А мы говорим про момент первого касания и определения момента подключения!
Советую почитать про первую инициализациию.(Сейчас ссылку немогу найти, выложу потом).
зы (off top): Может я несовсем понятно обьясняю. Но сам сабирал устройства и работал с протоколом. Проверенно на хомячках. :-)


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 14:01
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Код
The 1 Wire Functions are:

unsigned char w1_init(void)


this function initializes the 1 Wire devices on the bus.

It returns 1 if there were devices present or 0 if not.

unsigned char w1_read(void)

this function reads a byte from the 1 Wire bus.

unsigned char w1_write(unsigned char data)

this function writes the byte data to the 1 Wire bus.

It returns 1 if the write process completed normally or 0 if not.

unsigned char w1_search(unsigned char cmd,void *p)

this function returns the number of devices connected to the 1 Wire bus.
If no devices were detected then it returns 0.



Вот такие функции есть в CVAVR для работы с 1 wire. Как я понимаю, считать данные из таблетки с помощью них можно, но как ее симулировать?
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 15:45
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Никто не знает??? sad.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 17:05
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.4 Standard
Automatic Program Generator
© Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 07.05.2002
Author  : ps1x                            
Company : sas                            
Comments:


Chip type           : ATtiny26L
Clock frequency     : 4,000000 MHz
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 32
*****************************************************/

#include <tiny26.h>

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x18;PORTB
   .equ __w1_bit=6
#endasm
#include <1wire.h>
#include <delay.h>
eeprom char *temp;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

}

// Declare your global variables here

void main(void)
{
unsigned char devices,rom[9];


// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0xFF;
DDRA=0xFF;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFh
// OC1A output: Disconnected
// OC1B output: Disconnected
PLLCSR=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1=0x00;
OCR1A=0x00;
OCR1B=0x00;
OCR1C=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// Interrupt on any change on pins PA3, PA6, PA7 and PB4-7: Off
// Interrupt on any change on pins PB0-3: Off
GIMSK=0x00;
MCUCR=0x00;
GIFR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;

// 1 Wire Bus initialization
w1_init();

// Global enable interrupts
#asm("sei")

while (1)                                              
      {                          
      devices=w1_search(0x33,rom);
      if (devices){PORTA=0x00;delay_ms(1000);PORTA=0xFF;*temp=rom;}
      // Place your code here

      };
}


Вот накатал программку для считывания серийника из таблетки и записи его в епром.
Но не работает.
PORTA=0x00;delay_ms(1000);PORTA=0xFF; --- вот этот кусочек, для дебага wink.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 17:15
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата([banned] @ May 8 2006, 21:11) *
Цитата(ps1x @ May 8 2006, 18:01) *

Вот такие функции есть в CVAVR для работы с 1 wire. Как я понимаю, считать данные из таблетки с помощью них можно, но как ее симулировать?


на первой странице курса http://electronix.ru/redirect.php?http://[banned]

есть ссылка на проекты на русском - там есть эмулятор таблетки.

КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С????????

простите.
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 18:33
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата([banned] @ May 8 2006, 21:50) *
Цитата(ps1x @ May 8 2006, 21:15) *

Цитата([banned] @ May 8 2006, 21:11) *

на первой странице курса http://electronix.ru/redirect.php?http://[banned]

есть ссылка на проекты на русском - там есть эмулятор таблетки.

КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С????????

простите.


вы свой то пост почитайте - вы спросили

КАК СИМУЛИРОВАТЬ ТАБЛЕТКУ !

я вам указал где есть проект где рассказано ПОДРОБНО КАК !

т.е. то что вы спрашивали.

А алгоритм хоть на бэйсике реализуйте, мне то что ?

Вы не читали ветку.
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 8 2006, 22:47
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Проблема все еще актуальна: кто делал такие вещи на С, идеальный вариант на CVAVR???
Go to the top of the page
 
+Quote Post
WHALE
сообщение May 9 2006, 06:29
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 9 2006, 10:30
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(WHALE @ May 9 2006, 10:29) *
в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки?


Дык надо 9 байт из таблетки брать.... а kod - 1 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит... sad.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 9 2006, 18:48
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(ps1x @ May 9 2006, 14:30) *
Цитата(WHALE @ May 9 2006, 10:29) *

в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки?


Дык надо 9 байт из таблетки брать.... а kod - 1 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит... sad.gif


Ну неужели никто не делал на С? не верю.

Почему может не работать код приведенный выше? (железную часть проверял)
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 9 2006, 21:37
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата([banned] @ May 10 2006, 00:10) *
Цитата("ps1x")

Ну неужели никто не делал на С? не верю.

Почему может не работать код приведенный выше? (железную часть проверял)


...... да ... наверно долго еще придется ждать ответа ...

А за это время можно было бы прочитать в кусре в какой папке на вашем ПК есть все что вам нужно чтоб работало.

В курсе рассказано как отлаживать программу чтоб узнать конкретно что не правильно происходит при работе программы !

... а не ждать когда явится телепат и дистанционно найдет баг в вашей проге...


1) наверное.....

2) в папке C:\cvavr\inc ?

3) я добавил мигание светодиодов для отладки, JTAGa у меня нет, денег на него тоже. Основной цикл выполняется, об этом можно судить по миганию светодиодов, я проверял. Не выполняется поиск устройств 1-wire, почему, я не знаю, команда для получения кода таблеток 0х33 правильная, но не работает. Электрика тоже в порядке, вот и спрашиваю у тех, кто этим занимался.
Go to the top of the page
 
+Quote Post
ps1x
сообщение May 9 2006, 23:51
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата([banned] @ May 10 2006, 02:11) *
Цитата(ps1x @ May 10 2006, 01:37) *

2) в папке C:\cvavr\inc ?


тепло!

Цитата(ps1x @ May 10 2006, 01:37) *
3) я добавил мигание светодиодов для отладки,


правильно.

Цитата(ps1x @ May 10 2006, 01:37) *
JTAGa у меня нет, денег на него тоже.


у меня тоже его нет, он и не нужен. Можно другое использовать - написано там где выше советовал.


1)Тепло но не горячо? Где же еще? В мануале?

2)Спасибо.

3)Другое это rs232?
Go to the top of the page
 
+Quote Post
ilya514
сообщение May 10 2006, 05:35
Сообщение #30


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 29-11-05
Пользователь №: 11 546



Недавно сам юзал эти таблетки....именно на си и именно в Кодевижне....
За основу взял пример из папки Examples...там все подробно расписано, как получить код таблетки и вывести его в терминал, кстати и программу лучше (на мй взгляд) отлаживать именно через RS232.
А по какому принципу работает таблетка написано и разжевано в даташите....поищи в сети, он есть и на русском....
А если воспользоваться поиском, то в ентом форуме уже не однократно поднимался етот вопрос....
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01532 секунд с 7
ELECTRONIX ©2004-2016