Страница 1 из 1
1-wire
Добавлено: Пн май 13, 2013 09:46:51
ANTON_EL
Вот решил разобраться с 1-wire и застрял в самом начале, не могу разобраться с лог-и уровнями
схема подключения: между DQ и VCC резюк 4.7Ком
пин контроллера переключаю на вход с подтяжкой(PORTx=0xff DDRx=0x00) затем выход PORTx=0x00 DDRx=0xff;
и никаких изменений не происходит уровень всегда высокий смотрел лог анализатаром и тестером мерял
подскажите куда копать ?
Re: 1-wire
Добавлено: Пн май 13, 2013 09:53:13
balmer
Должно работать.
Re: 1-wire
Добавлено: Пн май 13, 2013 10:27:54
ChipKiller
ANTON_EL писал(а):пин контроллера переключаю на вход с подтяжкой(PORTx=0xff DDRx=0x00) затем выход PORTx=0x00 DDRx=0xff;
1-wire работает по схеме
"лог. И", поэтому PORT.x=0 (всегда) , а переключение идет только в DDRx (DDR.x=1(лог 0), DDR.x=0(лог 1 - к 1 тянет внешний pull-up резистор))
Re: 1-wire
Добавлено: Пн май 13, 2013 10:58:01
ANTON_EL
внешний pull-up это который 4,7 Ком между DQ и VCC ?
Re: 1-wire
Добавлено: Пн май 13, 2013 11:05:04
ChipKiller
это который 4,7 Ком между DQ и VCC ?
.. да
PS. ... соответственно чтение линии pin_state=PIN.x, идет при DDR.x=0
Re: 1-wire
Добавлено: Пн май 13, 2013 11:06:57
КРАМ
ANTON_EL писал(а):Вот решил разобраться с 1-wire и застрял...
...подскажите куда копать ?
Читать про протокол обмена.
Что Вы хотите там увидеть без сброса и команды на слейв?
Re: 1-wire
Добавлено: Пн май 13, 2013 11:22:07
ANTON_EL
хочу увидеть низкий уровень когда контроллер прижимает линию,
пробовал DDRx=0x00 и PORTx=0 потом DDRx=0xff и PORTx=0 а на линии ниче не меняется всегда 4.5В (вывод DQ)
анализатор лог уровней тоже всегда показует высокий уровень (
Re: 1-wire
Добавлено: Пн май 13, 2013 11:29:25
КРАМ
Я на память не помню как там у АВР, но аналоговый режим выключен с этого пина?
Кроме того, на чем меряете? На самом контроллере или еще где? Может примитивно не быть соединения пина МК и точки измерений.
Re: 1-wire
Добавлено: Пн май 13, 2013 12:00:57
ANTON_EL
Контакт проверял есть, а что за аналоговый режим ?
компаратор я выключал ACSR=0x80 (atmega8)
Re: 1-wire
Добавлено: Пн май 13, 2013 12:11:15
КРАМ
Вход АЦП с этого пина должен быть отключен. Правда, у АВР по умолчанию все входы цифровые, вроде бы. В отличии от ПИКов.
Re: 1-wire
Добавлено: Пн май 13, 2013 12:24:25
ChipKiller
хочу увидеть низкий уровень когда контроллер прижимает линию
... вставьте в ваш код вызов ф-ции
Код: Выделить всё
uchar DS18b20_init(void){
uchar cnt;
DDRC.0=1; // линию в "0"
delay_us(480);
#asm("cli")
DDRC.0=0; // отпустим линию
delay_us(5);
cnt=20;
while(cnt--){ // ждем ответа 50 мкс
if(PINC.0==1){ delay_us(1);}
else {
#asm("sei")
delay_us(480);
goto end_init; }
}
#asm("sei")
end_init:
return cnt;
}
... если ф-ция вернула 0 - ответ был
Re: 1-wire
Добавлено: Пн май 13, 2013 13:37:42
ANTON_EL
проверил в симуляторе Proteus работает , чуть позже проверю на контроллере