Страница 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 работает , чуть позже проверю на контроллере