|
|
  |
I-button ключи от домофона. |
|
|
|
May 6 2006, 09:36
|

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

|
Цитата Таблетка не содержит внутри себя никаких батареек Спешу Вас разочаровать :-) Некоторые содержат! (например связанные с хронометрией и термоконтролем.. cо встроенной памятью)(например DS1995) но не суть дела. Да, в домофонных таблетках нет, это факт! Цитата для нее получается как бы длительный RESET этим я попытался обьяснить общий принцип. Внутри таблетки есть буферный кондер от которого она питается во время работы, и есть внутренний "потребитель тока" который просаживает кондер в отключенном состоянии. Получая питание таблетка "считает" что произошел RESET.
Сообщение отредактировал add - May 6 2006, 09:36
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
May 6 2006, 13:00
|

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

|
Цитата Reset - Это когда после подачи питания происходит отключение питания на некоторый промежуток времени :-( ну хорошо если Вам так понятнее, пожалуста! Хочу только обратить ваше внимание что : "все устройства начинают работу с шиной 1-wire после RESET"(из доков). ГЛАВНОЕ: После прикосновения таблеткой к контакту домофона (контроллера), она (таблетка) выдает сигнал присутствия! иначе контроллер неопределит факт ПОДКЛЮЧЕНИЯ. Дальше с таблеткой работаем как с обычным 1-wire устройством. Можно подать (от коетроллера RESET) а можно начать передачу команды. Заметьте для этого при первой передачи команды RESET не нужен , т.к. для таблетки это пройденный этап (см. посты выше) и она перешла на "командный уровень". На рисунке (из datasheeta) показана инициализация уже ПОДКЛЮЧЕННОГО к шине 1-WIRE устройства!!! А мы говорим про момент первого касания и определения момента подключения! Советую почитать про первую инициализациию.(Сейчас ссылку немогу найти, выложу потом). зы (off top): Может я несовсем понятно обьясняю. Но сам сабирал устройства и работал с протоколом. Проверенно на хомячках. :-)
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
May 8 2006, 14:01
|
Местный
  
Группа: Свой
Сообщений: 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. Как я понимаю, считать данные из таблетки с помощью них можно, но как ее симулировать?
|
|
|
|
|
May 8 2006, 17:05
|
Местный
  
Группа: Свой
Сообщений: 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; --- вот этот кусочек, для дебага
|
|
|
|
|
May 8 2006, 17:15
|
Местный
  
Группа: Свой
Сообщений: 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] есть ссылка на проекты на русском - там есть эмулятор таблетки. КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С???????? простите.
|
|
|
|
|
May 8 2006, 18:33
|
Местный
  
Группа: Свой
Сообщений: 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] есть ссылка на проекты на русском - там есть эмулятор таблетки. КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С???????? простите. вы свой то пост почитайте - вы спросили КАК СИМУЛИРОВАТЬ ТАБЛЕТКУ ! я вам указал где есть проект где рассказано ПОДРОБНО КАК ! т.е. то что вы спрашивали. А алгоритм хоть на бэйсике реализуйте, мне то что ? Вы не читали ветку.
|
|
|
|
|
May 9 2006, 18:48
|
Местный
  
Группа: Свой
Сообщений: 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 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит...  Ну неужели никто не делал на С? не верю. Почему может не работать код приведенный выше? (железную часть проверял)
|
|
|
|
|
May 9 2006, 21:37
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата([banned] @ May 10 2006, 00:10)  Цитата("ps1x") Ну неужели никто не делал на С? не верю.
Почему может не работать код приведенный выше? (железную часть проверял) ...... да ... наверно долго еще придется ждать ответа ... А за это время можно было бы прочитать в кусре в какой папке на вашем ПК есть все что вам нужно чтоб работало. В курсе рассказано как отлаживать программу чтоб узнать конкретно что не правильно происходит при работе программы ! ... а не ждать когда явится телепат и дистанционно найдет баг в вашей проге... 1) наверное..... 2) в папке C:\cvavr\inc ? 3) я добавил мигание светодиодов для отладки, JTAGa у меня нет, денег на него тоже. Основной цикл выполняется, об этом можно судить по миганию светодиодов, я проверял. Не выполняется поиск устройств 1-wire, почему, я не знаю, команда для получения кода таблеток 0х33 правильная, но не работает. Электрика тоже в порядке, вот и спрашиваю у тех, кто этим занимался.
|
|
|
|
|
May 9 2006, 23:51
|
Местный
  
Группа: Свой
Сообщений: 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?
|
|
|
|
|
May 10 2006, 05:35
|
Участник

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

|
Недавно сам юзал эти таблетки....именно на си и именно в Кодевижне.... За основу взял пример из папки Examples...там все подробно расписано, как получить код таблетки и вывести его в терминал, кстати и программу лучше (на мй взгляд) отлаживать именно через RS232. А по какому принципу работает таблетка написано и разжевано в даташите....поищи в сети, он есть и на русском.... А если воспользоваться поиском, то в ентом форуме уже не однократно поднимался етот вопрос....
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|