add 0 6 мая, 2006 Опубликовано 6 мая, 2006 (изменено) · Жалоба Таблетка не содержит внутри себя никаких батареек Спешу Вас разочаровать :-) Некоторые содержат! (например связанные с хронометрией и термоконтролем.. cо встроенной памятью)(например DS1995) но не суть дела. Да, в домофонных таблетках нет, это факт! для нее получается как бы длительный RESET этим я попытался обьяснить общий принцип. Внутри таблетки есть буферный кондер от которого она питается во время работы, и есть внутренний "потребитель тока" который просаживает кондер в отключенном состоянии. Получая питание таблетка "считает" что произошел RESET. Изменено 6 мая, 2006 пользователем add Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 6 мая, 2006 Опубликовано 6 мая, 2006 · Жалоба этим я попытался обьяснить общий принцип. Внутри таблетки есть буферный кондер от которого она питается во время работы, и есть внутренний "потребитель тока" который просаживает кондер в отключенном состоянии. Получая питание таблетка "считает" что произошел RESET. Reset - Это когда после подачи питания происходит отключение питания на некоторый промежуток времени Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
add 0 6 мая, 2006 Опубликовано 6 мая, 2006 · Жалоба Reset - Это когда после подачи питания происходит отключение питания на некоторый промежуток времени :-( ну хорошо если Вам так понятнее, пожалуста! Хочу только обратить ваше внимание что : "все устройства начинают работу с шиной 1-wire после RESET"(из доков). ГЛАВНОЕ: После прикосновения таблеткой к контакту домофона (контроллера), она (таблетка) выдает сигнал присутствия! иначе контроллер неопределит факт ПОДКЛЮЧЕНИЯ. Дальше с таблеткой работаем как с обычным 1-wire устройством. Можно подать (от коетроллера RESET) а можно начать передачу команды. Заметьте для этого при первой передачи команды RESET не нужен , т.к. для таблетки это пройденный этап (см. посты выше) и она перешла на "командный уровень". На рисунке (из datasheeta) показана инициализация уже ПОДКЛЮЧЕННОГО к шине 1-WIRE устройства!!! А мы говорим про момент первого касания и определения момента подключения! Советую почитать про первую инициализациию.(Сейчас ссылку немогу найти, выложу потом). зы (off top): Может я несовсем понятно обьясняю. Но сам сабирал устройства и работал с протоколом. Проверенно на хомячках. :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба 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. Как я понимаю, считать данные из таблетки с помощью них можно, но как ее симулировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба Никто не знает??? :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба /***************************************************** 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:[email protected] 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; --- вот этот кусочек, для дебага ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба Вот такие функции есть в CVAVR для работы с 1 wire. Как я понимаю, считать данные из таблетки с помощью них можно, но как ее симулировать? на первой странице курса http://electronix.ru/redirect.php?http://[banned] есть ссылка на проекты на русском - там есть эмулятор таблетки. КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С???????? простите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба на первой странице курса http://electronix.ru/redirect.php?http://[banned] есть ссылка на проекты на русском - там есть эмулятор таблетки. КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С???????? простите. вы свой то пост почитайте - вы спросили КАК СИМУЛИРОВАТЬ ТАБЛЕТКУ ! я вам указал где есть проект где рассказано ПОДРОБНО КАК ! т.е. то что вы спрашивали. А алгоритм хоть на бэйсике реализуйте, мне то что ? Вы не читали ветку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 8 мая, 2006 Опубликовано 8 мая, 2006 · Жалоба Проблема все еще актуальна: кто делал такие вещи на С, идеальный вариант на CVAVR??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 9 мая, 2006 Опубликовано 9 мая, 2006 · Жалоба в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 9 мая, 2006 Опубликовано 9 мая, 2006 · Жалоба в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки? Дык надо 9 байт из таблетки брать.... а kod - 1 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит... :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 9 мая, 2006 Опубликовано 9 мая, 2006 · Жалоба в 128 раз-куда *temp смотрит? Вы его обьявили как указатель на область епром,но не инициализировали.да и зачем вам в вашем контексте указатель- не проще обьявить переменную в епром- eeprom char kod и грузить в нее код таблетки? Дык надо 9 байт из таблетки брать.... а kod - 1 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит... :( Ну неужели никто не делал на С? не верю. Почему может не работать код приведенный выше? (железную часть проверял) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 9 мая, 2006 Опубликовано 9 мая, 2006 · Жалоба Ну неужели никто не делал на С? не верю. Почему может не работать код приведенный выше? (железную часть проверял) ...... да ... наверно долго еще придется ждать ответа ... А за это время можно было бы прочитать в кусре в какой папке на вашем ПК есть все что вам нужно чтоб работало. В курсе рассказано как отлаживать программу чтоб узнать конкретно что не правильно происходит при работе программы ! ... а не ждать когда явится телепат и дистанционно найдет баг в вашей проге... 1) наверное..... 2) в папке C:\cvavr\inc ? 3) я добавил мигание светодиодов для отладки, JTAGa у меня нет, денег на него тоже. Основной цикл выполняется, об этом можно судить по миганию светодиодов, я проверял. Не выполняется поиск устройств 1-wire, почему, я не знаю, команда для получения кода таблеток 0х33 правильная, но не работает. Электрика тоже в порядке, вот и спрашиваю у тех, кто этим занимался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ps1x 0 9 мая, 2006 Опубликовано 9 мая, 2006 · Жалоба 2) в папке C:\cvavr\inc ? тепло! 3) я добавил мигание светодиодов для отладки, правильно. JTAGa у меня нет, денег на него тоже. у меня тоже его нет, он и не нужен. Можно другое использовать - написано там где выше советовал. 1)Тепло но не горячо? Где же еще? В мануале? 2)Спасибо. 3)Другое это rs232? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilya514 0 10 мая, 2006 Опубликовано 10 мая, 2006 · Жалоба Недавно сам юзал эти таблетки....именно на си и именно в Кодевижне.... За основу взял пример из папки Examples...там все подробно расписано, как получить код таблетки и вывести его в терминал, кстати и программу лучше (на мй взгляд) отлаживать именно через RS232. А по какому принципу работает таблетка написано и разжевано в даташите....поищи в сети, он есть и на русском.... А если воспользоваться поиском, то в ентом форуме уже не однократно поднимался етот вопрос.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться