Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: I-button ключи от домофона.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ps1x
Нашел в сети много копий одного и тогоже прибора для эмулирования i-button. Но вот беда, оно построено на PIC, к которым у меня религиозное предубеждение, кроме того автор дал лишь прошивку без исходников.

Кто нибудь реализовывал такое на AVR? Поделитесь исходником если есть. unsure.gif
dvm11111111
Цитата(ps1x @ May 4 2006, 00:31) *
Нашел в сети много копий одного и тогоже прибора для эмулирования i-button. Но вот беда, оно построено на PIC, к которым у меня религиозное предубеждение, кроме того автор дал лишь прошивку без исходников.

Кто нибудь реализовывал такое на AVR? Поделитесь исходником если есть. unsure.gif


http://www.compitech.ru/html.cgi/arhiv_s/00_01/stat_44.htm

Прада он на AT89C2051 собран.
sseett
Цитата
Кто нибудь реализовывал такое на AVR?


Реализовывал на tiny12 (асм).

Теория от Атмел.
http://www.atmel.com/dyn/resources/prod_do...nts/doc2579.pdf
А вот тут http://www.elin.ru/1-Wire/?topic=info все что нужно.
Удачи!
ps1x
Цитата(sseett @ May 4 2006, 03:13) *
Цитата
Кто нибудь реализовывал такое на AVR?


Реализовывал на tiny12 (асм).

Теория от Атмел.
http://www.atmel.com/dyn/resources/prod_do...nts/doc2579.pdf
А вот тут http://www.elin.ru/1-Wire/?topic=info все что нужно.
Удачи!


Я к сожалению, с ассемблером не дружу (.
В общем и целом вещь простая.
Как определять подключились ли мы к домофону? По прерыванию?


Ктонибудь реализовывал девайс с использованием C? В частности CVAVR было бы идеальным вариантом...
Igor26
Цитата(ps1x @ May 4 2006, 04:27) *
Цитата(sseett @ May 4 2006, 03:13) *

Цитата
Кто нибудь реализовывал такое на AVR?


Реализовывал на tiny12 (асм).

Теория от Атмел.
http://www.atmel.com/dyn/resources/prod_do...nts/doc2579.pdf
А вот тут http://www.elin.ru/1-Wire/?topic=info все что нужно.
Удачи!


Я к сожалению, с ассемблером не дружу (.
В общем и целом вещь простая.
Как определять подключились ли мы к домофону? По прерыванию?


Ктонибудь реализовывал девайс с использованием C? В частности CVAVR было бы идеальным вариантом...

Так в CV есть готовые библиотеки для работы с 1-Wire.
Определить, подключились ли мы к домофону, можно постоянно посылая импульс сброса длительностью минимум 480 мкс.
По окончании его, подключенное устройство рапортует о себе.
SasaVitebsk
Цитата(ps1x @ May 4 2006, 03:27) *
Как определять подключились ли мы к домофону? По прерыванию?


Кроме способа описанного постом выше, вообще говоря, при первом подключении таблетки (и любого др. устройства на данной шине) она даёт запрос. Это чётко описано в PDF на данную шину или любое изделие на данной шине. Первоисточник Dalas

Цитата(ps1x @ May 4 2006, 03:27) *
В общем и целом вещь простая.


smile.gif Совершенно согласен. Так о чём тогда говорить.


Мне вообще нравится когда мне, к примеру, дают задание типо:"надо написать две простых програмки" или "путяковых". Особенно приятно что оценку твоему труду дают люди сами неспособные эти пустяковины сделать. Или не желающие. Или суще ленивые.

Следи за базаром когда обращаешься за помощью!
SpiritDance
Коли зашла речь о ключах спрошу пока тема не ушла в даун. Как прочитать с ключа номер который там записан? Вобщем речь о том как сделать терминал, а не ключ? Есть ли такие проекты?
add
Цитата
Определить, подключились ли мы к домофону, можно постоянно посылая импульс сброса длительностью минимум 480 мкс.
По окончании его, подключенное устройство рапортует о себе


Как же так?! Ключи, не посылают импульсы сброса!!! smile.gif
Неспособны они на это!
Описание работы(кратко-доступное): Ключик после прекосновения дает сигнал присутствия (это не "сброс"!) -шунтирует наземлю линию 1wire (60-240 мкс). Мастер(домофон) дает после этого импульс сброса (480мкс) . Ждет сигнала присутствия устройства на линии(60-240 мкс). После чего начинает работу с ним.

Цитата
Как определять подключились ли мы к домофону? По прерыванию?

Можно по уровню на входе линии. Так как линия 1wire должна быть "подтянута" к VCC (со стороны мастера). А вход нашей псевдотаблетки притягиваем к земле сопротивлением (прим.сотню кОм) то достаточно определить что на входе "единичка" сменила ноль и все. Дальше импульс присутствия и т.д.

Цитата
Коли зашла речь о ключах спрошу пока тема не ушла в даун. Как прочитать с ключа номер который там записан? Вобщем речь о том как сделать терминал, а не ключ? Есть ли такие проекты?

Здесь все проще. Ждем имп.присут. потом посылаем команду 0x33(читать ROM). Читаем ROM. Проверяем контрольную сумму (CRC). Радуемся прочитанному номеру ключа. :-) На счет протокола обмена повторюсь (почемуто народ совершенно игнорирует ссылки и не читает?!): ссылка: http://www.elin.ru/1-Wire/?topic=whatis
На мой взгляд самая лучшая. + AVR318: Dallas 1-Wire® master. Удачи!
Igor26
Цитата
Как же так?! Ключи, не посылают импульсы сброса!!!

Всё правильно. Я имел ввиду, что импульс сброса посылает контроллер. Видел такое решение в одном замке.
SasaVitebsk
[quote name='add' date='May 5 2006, 08:57' post='110610']
[quote]Определить, подключились ли мы к домофону, можно постоянно посылая импульс сброса длительностью минимум 480 мкс.
По окончании его, подключенное устройство рапортует о себе[/quote]

Как же так?! Ключи, не посылают импульсы сброса!!! smile.gif
Неспособны они на это!
Описание работы(кратко-доступное): Ключик после прекосновения дает сигнал присутствия (это не "сброс"!) -шунтирует наземлю линию 1wire (60-240 мкс). Мастер(домофон) дает после этого импульс сброса (480мкс) . Ждет сигнала присутствия устройства на линии(60-240 мкс). После чего начинает работу с ним.

[/quote]

Я уже писал, что ключ формирует сигнал присутствия. Но как правило его не используют. Обычно посылают сигнал запроса. На него ключ отвечает, если он есть. Если ответил, то дальше его опрашивают.

[quote name='add' date='May 5 2006, 08:57' post='110610']
Можно по уровню на входе линии. Так как линия 1wire должна быть "подтянута" к VCC (со стороны мастера). А вход нашей псевдотаблетки притягиваем к земле сопротивлением (прим.сотню кОм) то достаточно определить что на входе "единичка" сменила ноль и все. Дальше импульс присутствия и т.д.

[quote]

Это бред.

[quote name='add' date='May 5 2006, 08:57' post='110610']
Коли зашла речь о ключах спрошу пока тема не ушла в даун. Как прочитать с ключа номер который там записан? Вобщем речь о том как сделать терминал, а не ключ? Есть ли такие проекты?[/quote]
Здесь все проще. Ждем имп.присут. потом посылаем команду 0x33(читать ROM). Читаем ROM. Проверяем контрольную сумму (CRC). Радуемся прочитанному номеру ключа. :-) На счет протокола обмена повторюсь (почемуто народ совершенно игнорирует ссылки и не читает?!): ссылка: http://www.elin.ru/1-Wire/?topic=whatis
На мой взгляд самая лучшая. + AVR318: Dallas 1-Wire® master. Удачи!
[/quote]

От себя добавлю, что Dalas на своём ключе выбивает номер в HEX виде. smile.gif Так что правильность достаточно просто проверить. (Как и свиснуть такой ключ) smile.gif
ps1x
У меня две "таблетки", одна от далласа, а другая нонейм походу, ибо вся мятая немного и маркировки вообще нет angry.gif
Так есть исходники на С?
dvm11111111
Цитата(ps1x @ May 5 2006, 23:02) *
У меня две "таблетки", одна от далласа, а другая нонейм походу, ибо вся мятая немного и маркировки вообще нет angry.gif
Так есть исходники на С?


Держи под 2313 заточено. На названия файлов не обращай внимания. Переделывал с пика, так что корявато могет работать.
А про нонаме, эт скорей всего CIFRAL ключи, к даласам не подходят.
SpiritDance
Цитата(add @ May 5 2006, 09:57) *
На счет протокола обмена повторюсь (почемуто народ совершенно игнорирует ссылки и не читает?!): ссылка: http://www.elin.ru/1-Wire/?topic=whatis
На мой взгляд самая лучшая. + AVR318: Dallas 1-Wire® master.

Ну не успел я по ссылкам полазать посмотреть, расстреляйте меня!!! smile.gif
Цитата(add @ May 5 2006, 09:57) *
Удачи!

Спасибо! и Вам того же!

SasaVitebsk
Я знаю про номера, только вот у меня они затертые.
add
Таааак! Ну Вам уважаемый SasaVitebsk советую повнимательней посты читать!!!
Цитата
Я уже писал, что ключ формирует сигнал присутствия. Но как правило его не используют. Обычно посылают сигнал запроса. На него ключ отвечает, если он есть. Если ответил, то дальше его опрашивают

А вот и используют! Если бы Вы повнимательней с документацией работали, то таких недоразумений бы не было, а именно: Устройство мастер (в нашем случае контроллер или домофон), ждет как раз импульс присутствия, и никак непосылает "сигнал запроса" постоянно. Речь идет о таблетке! В момент отключения ее от устройства, для нее получается как бы длительный RESET. После подключения она выдает сигнал присутствия.

Цитата
Это бред.


Очень информативно! Я предложил один из возможных вариантов с целью помочь человеку в его проблеме. Если Вас что то неустраивает , можете его неиспользовать. А если уж высказываете свое "мнение" будьте любезны аргументировать по делу, и пояснять столь категоричное заявление.
Цитата
От себя добавлю, что Dalas на своём ключе выбивает номер в HEX виде. Так что правильность достаточно просто проверить. (Как и свиснуть такой ключ)

Есть еще "метаком" и "цифрал" на которыж нет кода.
vvs157
Цитата(add @ May 6 2006, 09:32) *
А вот и используют! Если бы Вы повнимательней с документацией работали, то таких недоразумений бы не было, а именно: Устройство мастер (в нашем случае контроллер или домофон), ждет как раз импульс присутствия, и никак непосылает "сигнал запроса" постоянно. Речь идет о таблетке! В момент отключения ее от устройства, для нее получается как бы длительный RESET. После подключения она выдает сигнал присутствия.


Таблетка не содержит внутри себя никаких батареек и использует только энергию, получаемую от контроллера в момент контакта, поэтому импульс присутствия является "задавливанием" лог "1" посланной контроллером таблеткой (Рис.6 в http://pdfserv.maxim-ic.com/en/ds/DS1990A-F3-DS1990A-F5.pdf) ://http://pdfserv.maxim-ic.com/en/ds/D...S1990A-F5.pdf) ://http://pdfserv.maxim-ic.com/en/ds/D...S1990A-F5.pdf) ://http://pdfserv.maxim-ic.com/en/ds/D...S1990A-F5.pdf) ://http://pdfserv.maxim-ic.com/en/ds/D...S1990A-F5.pdf) ://http://pdfserv.maxim-ic.com/en/ds/D...S1990A-F5.pdf)
add
Цитата
Таблетка не содержит внутри себя никаких батареек

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

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

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


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

:-( ну хорошо если Вам так понятнее, пожалуста!
Хочу только обратить ваше внимание что : "все устройства начинают работу с шиной 1-wire после RESET"(из доков).
ГЛАВНОЕ: После прикосновения таблеткой к контакту домофона (контроллера), она (таблетка) выдает сигнал присутствия! иначе контроллер неопределит факт ПОДКЛЮЧЕНИЯ. Дальше с таблеткой работаем как с обычным 1-wire устройством. Можно подать (от коетроллера RESET) а можно начать передачу команды.
Заметьте для этого при первой передачи команды RESET не нужен , т.к. для таблетки это пройденный этап (см. посты выше) и она перешла на "командный уровень".
На рисунке (из datasheeta) показана инициализация уже ПОДКЛЮЧЕННОГО к шине 1-WIRE устройства!!! А мы говорим про момент первого касания и определения момента подключения!
Советую почитать про первую инициализациию.(Сейчас ссылку немогу найти, выложу потом).
зы (off top): Может я несовсем понятно обьясняю. Но сам сабирал устройства и работал с протоколом. Проверенно на хомячках. :-)
ps1x
Код
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
Никто не знает??? sad.gif
ps1x
Код
/*****************************************************
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
ps1x
Цитата([banned] @ May 8 2006, 21:11) *
Цитата(ps1x @ May 8 2006, 18:01) *

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


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

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

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

простите.
ps1x
Цитата([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]

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

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

простите.


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

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

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

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

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

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


Дык надо 9 байт из таблетки брать.... а kod - 1 байт, но прежде всего при нахождении таблетки должны загораться светодиоды, чего не происходит... sad.gif
ps1x
Цитата(ps1x @ May 9 2006, 14:30) *
Цитата(WHALE @ May 9 2006, 10:29) *

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


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


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

Почему может не работать код приведенный выше? (железную часть проверял)
ps1x
Цитата([banned] @ May 10 2006, 00:10) *
Цитата("ps1x")

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

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


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

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

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

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


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

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

3) я добавил мигание светодиодов для отладки, JTAGa у меня нет, денег на него тоже. Основной цикл выполняется, об этом можно судить по миганию светодиодов, я проверял. Не выполняется поиск устройств 1-wire, почему, я не знаю, команда для получения кода таблеток 0х33 правильная, но не работает. Электрика тоже в порядке, вот и спрашиваю у тех, кто этим занимался.
ps1x
Цитата([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?
ilya514
Недавно сам юзал эти таблетки....именно на си и именно в Кодевижне....
За основу взял пример из папки Examples...там все подробно расписано, как получить код таблетки и вывести его в терминал, кстати и программу лучше (на мй взгляд) отлаживать именно через RS232.
А по какому принципу работает таблетка написано и разжевано в даташите....поищи в сети, он есть и на русском....
А если воспользоваться поиском, то в ентом форуме уже не однократно поднимался етот вопрос....
ps1x
Цитата([banned] @ May 10 2006, 12:22) *
Цитата(ilya514 @ May 10 2006, 09:35) *

За основу взял пример из папки Examples...

там все подробно расписано, как получить код таблетки и вывести его в терминал,


кстати и программу лучше (на мй взгляд) отлаживать именно через RS232.


Ну вот... точно по КУРСУ !

и результат ПОЛОЖИТЕЛЬНЫЙ !


Во б№%н а я не заметил даже, только вот непонятно:
Код
   A 4.7k PULLUP RESISTOR MUST BE CONNECTED
   BETWEEN DATA (PA6) AND PORTA HEADER PIN 10 (VTG) !

Что такое VTG? Земля?
ps1x
Цитата(ilya514 @ May 10 2006, 09:35) *
Недавно сам юзал эти таблетки....именно на си и именно в Кодевижне....
За основу взял пример из папки Examples...там все подробно расписано, как получить код таблетки и вывести его в терминал, кстати и программу лучше (на мй взгляд) отлаживать именно через RS232.
А по какому принципу работает таблетка написано и разжевано в даташите....поищи в сети, он есть и на русском....
А если воспользоваться поиском, то в ентом форуме уже не однократно поднимался етот вопрос....

А симулятор таблетки делали?
ps1x
Цитата([banned] @ May 10 2006, 22:52) *
Цитата(ps1x @ May 10 2006, 20:12) *


Цитата(ilya514 @ May 10 2006, 09:35) *

Код
   A 4.7k PULLUP RESISTOR MUST BE CONNECTED
   BETWEEN DATA (PA6) AND PORTA HEADER PIN 10 (VTG) !



Что такое VTG? Земля?


блин! почему не прочитать на конец то что я всегда рекомендую прочитать и понять что такое "пулап" и может ли он быть "на землю".



ну почему бы просто не ответить куда подключить резистор? ну нет у меня времени (к сожалению прочитать Ваш курс целиком) я даже ночами работаю.
Pyku_He_oTTyda
VTG - вольтаге таржет ( в вашем случае напряжение питания МК (+5В))
Пулап - резистор, подтягивающий цепь к плюсу
ps1x
Цитата(Pyku_He_oTTyda @ May 11 2006, 08:41) *
VTG - вольтаге таржет ( в вашем случае напряжение питания МК (+5В))
Пулап - резистор, подтягивающий цепь к плюсу

Спасибо, я разобрался, считал коды всех ключей которые были smile.gif работает без ошибок.
Осталось дело за малым - симулировать таблетку...
Но как?
Можно ли использовать для этого библиотеку 1wire.h?
Можно-ли просто тупо посылать код ключа?
Pyku_He_oTTyda
Кстати, а Протеус эмулирует DS1990?
ps1x
Цитата(Pyku_He_oTTyda @ May 12 2006, 08:47) *
Кстати, а Протеус эмулирует DS1990?

Не знаю, после смерти винды, вместе с ней ушел и протеус, а сейчас стоит жутко глючная, на нее вообще ничего не ставится, даже сервиспаки и директХ.

Кстати мне все еще очень интересно как симулировать работу таблетки используя С, и может быть, функции 1wire.h в компиляторе CVAVR...
oscill
Proteus начиная с версии 6.8 sp4 весьма прилично работает с 1-Wire ус-вами в т.ч. с DS1990 есть соответствующая модель
ps1x
Цитата(oscill @ May 12 2006, 23:36) *
Proteus начиная с версии 6.8 sp4 весьма прилично работает с 1-Wire ус-вами в т.ч. с DS1990 есть соответствующая модель

А домофон оно симулировать может? smile.gif

Кстати по запросу ds1990 emulator гугль мне выдал три страницы результатов из примерно 14 000 возможных (???!!!) из них все были на чешско - латышско прибалтийском языке, в которм я ничего не понимаю..
sseett
А вот на родном (мне) русском:
http://www.telesys.ru/projects/proj019/index.shtml
Когда-то мне понадобился симулятор, я данный проект прочел,
и сделал по образу и подобию на тиньке26 (1 мгц, асм.).
Думаю, и у вас получится.
Удачи!
ps1x
Цитата([banned] @ May 13 2006, 14:07) *
Цитата(sseett @ May 13 2006, 07:47) *

А вот на родном (мне) русском:
http://www.telesys.ru/projects/proj019/index.shtml


да былобы у человека желание!

я уж давно ему дал эту ссылку - но он видетели на Си пишет !

а алгоритм АСМ на Си записать ему религия не позволяет, не кошерно наверно ...

Код
TERM:CLR TR0
JB DATA,$
MOV TH0,#HI(R_DEL)
MOV TL0,#LO(R_DEL)
SETB TR0
WAIT:JNB DATA,$
SJMP TERM

RES:      JNB DATA,$

MOV R3,#14
DJNZ R3,$;delay 30 uS
CLR DATA;presence pulse begin

MOV R3,#58
DJNZ R3,$;delay 120 uS
SETB DATA;presence pulse end

MOV R0,#FAM_CODE-1;pointer load
MOV R1,#9;load number of bytes (1 RX + 8 TX)
MOV R2,#8;load number of bits
SETB RXF;set RX flag
MOV A,#0FFH;perform RX
RRC A;C <- first TX bit
CLR IE0;clear interrupt flag

;1-Wire RX-TX Loop:

LOOPH:JNB IE0,$;wait for interrupt flag

MOV DATA,C;DATA <- C
MOV TH0,#HI(R_DEL)
MOV TL0,#LO(R_DEL)
SETB TR0;start timer 0 (reset timeout)
MOV R3,#9
DJNZ R3,$;delay
MOV C,DATA;receive data bit
SETB DATA;DATA <- 1 (30uS is over)
RRC A;save received bit in ACC

CLR IE0;clear interrupt flag
DJNZ R2,LOOP;advance bit counter
JNB RXF,NEXT;jump if TX cycle

CLR RXF
CJNE A,#033H,MISM;RX complete, check command code
SJMP NEXT
MISM:CJNE A,#00FH,TERM

NEXT:INC R0;advance pointer
MOV R2,#8;bits counter reload
MOV A,@R0
RRC A
DJNZ R1,LOOP
SJMP TERM

LOOP:     JNB DATA,$;wait for DATA = 1
CLR TR0
SJMP LOOPH

;TIMER0 Interrupt Holder:
;Timer terminates process if reset pulse detected

TIMER:CLR TR0;timer 0 stop
MOV SP,#STACK
MOV A,#LO(RES)
PUSH ACC
MOV A,#HI(RES)
PUSH ACC
RETI;return to RES

.END

еще бы знать что это все обозначает....

Цитата
if (w1_read()==0x33 | w1_read()==0xF0)//если прочтен байт команды считывания памяти то
{
delay_us(160); //задержка
for (i=0;i<=9;i++) {//цикл для передачи всей памяти таблетки
w1_write(data[z][i]);//передать байт в шину 1 wire
};
}

и все это крутится бесконечно.

Будет ли работать?
sseett
"....просто скачиваешь документ с инструкциями для того МК...."

или книжку, например: Фрунзе А.В.
"Микроконтроллеры это же просто том 1"
http://lord-n.narod.ru/walla.html#FrunzeSi...CUtom1djvurar(3 метра)

"... и пишешь строчка за строчкой что делает каждая....."
c учетом более медленного исполнения программы на С, чем на асме.
т.е. соответственно увеличив тактовую частоту.
Или можно попробовать использовать набортное железо, для быстрой реакции.
Удачи!
defunct
Цитата([banned] @ May 15 2006, 09:57) *
бред ! МК не выполняет программ не на Си на асме поэтому скорость сравнивать бессмысленно.

Гм, стоит ли быть столь придирчивым?
Очевидно, что автор сего поста хотел сказать. Реализация алгоритма на C однозначно будет содержать больше избыточного кода, который исполняется МК, чем реализация того же алгоритма на асм'е. Вывод автор поста построил вполне логичный, хотя и не совсем верный, тем не менее бредом его назвать нельзя.

Цитата(ps1x @ May 8 2006, 18:45) *
Никто не знает??? sad.gif
...
Цитата(ps1x @ May 8 2006, 20:15) *
КАКОЙ МНЕ СМЫСЛ ОТ ЭТОГО ПРОЕКТА ЕСЛИ Я ПИШУ НА С????????
...
Вы думаете после этого у кого-нибудь появится желание решать вашу проблему?
Помягше надо быть в высказываниях и поскромнее в требованиях и сомнительных выводах.

ps1x прошу вас почитать на досуге это http://ln.com.ua/~openxs/articles/smart-questions-ru.html

PS: после прочтения этой ветки, остался какой-то неприятный осадок. Господа, относитесь более уважительно друг к другу, цените не только свое, но и чужое время.
sseett
Цитата([banned] @ May 15 2006, 15:57) *
Цитата(sseett @ May 15 2006, 04:00) *

c учетом более медленного исполнения программы на С, чем на асме.


бред ! МК не выполняет программ не на Си на асме поэтому скорость сравнивать бессмысленно.


Хотел ответить, но уважаемый defunct очень доходчиво "окультурил" мое высказывание.

В свое оправдание хочу сказать, что когда 19 лет назад я поимел в личное пользование маленький персональный компьютер, программное обеспечение которого представляло из себя только начальный загрузчик, мне пришлось не имея не только С но и ЯА, писать небольшие программки прямо в коде, компилируя на бумажке, а затем, после некоторого навыка, и в уме.

Насчет скорости выполнения программы:
если для создания эмулятора использовать, малогабаритные (чтобы запихнуть в таблеточный корпус) и дешевые тиньки12, то при тактовой частоте 1,2мгц в отдельных частях программы просто нет времени на исполнения "избыточного кода". К счастью любителей С появился более шустрый Тинька13, к тому же с ОЗУ ....
Удачи!
lech196
Есть вопрос по 1-wire, задал его в форуме по интерфейсам тут т.к. вопрос именно о железном интерфейсе при работе с 1-wire где мастером служит МК.

Заранее спасибо за ответы!
vesago
По поводу интерфейса - метров 50 - работает. Иногда если неустойчиво - помогает параллельно подключенный резак, номинал которого придется подобрать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.