1-wire

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс июн 12, 2011 14:57:36

Сообщение ANTON_EL »

Вот решил разобраться с 1-wire и застрял в самом начале, не могу разобраться с лог-и уровнями
схема подключения: между DQ и VCC резюк 4.7Ком
пин контроллера переключаю на вход с подтяжкой(PORTx=0xff DDRx=0x00) затем выход PORTx=0x00 DDRx=0xff;
и никаких изменений не происходит уровень всегда высокий смотрел лог анализатаром и тестером мерял
подскажите куда копать ?
Вложения
Sheme.png
(10.54 КБ) 419 скачиваний
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Сообщение balmer »

Должно работать.
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение 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 резистор))
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс июн 12, 2011 14:57:36

Сообщение ANTON_EL »

внешний pull-up это который 4,7 Ком между DQ и VCC ?
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

это который 4,7 Ком между DQ и VCC ?
.. да

PS. ... соответственно чтение линии pin_state=PIN.x, идет при DDR.x=0
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25503
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

ANTON_EL писал(а):Вот решил разобраться с 1-wire и застрял...
...подскажите куда копать ?
Читать про протокол обмена.
Что Вы хотите там увидеть без сброса и команды на слейв?
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс июн 12, 2011 14:57:36

Сообщение ANTON_EL »

хочу увидеть низкий уровень когда контроллер прижимает линию,
пробовал DDRx=0x00 и PORTx=0 потом DDRx=0xff и PORTx=0 а на линии ниче не меняется всегда 4.5В (вывод DQ)

анализатор лог уровней тоже всегда показует высокий уровень (
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25503
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Я на память не помню как там у АВР, но аналоговый режим выключен с этого пина?
Кроме того, на чем меряете? На самом контроллере или еще где? Может примитивно не быть соединения пина МК и точки измерений.
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс июн 12, 2011 14:57:36

Сообщение ANTON_EL »

Контакт проверял есть, а что за аналоговый режим ?
компаратор я выключал ACSR=0x80 (atmega8)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25503
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Вход АЦП с этого пина должен быть отключен. Правда, у АВР по умолчанию все входы цифровые, вроде бы. В отличии от ПИКов.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение 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 - ответ был
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс июн 12, 2011 14:57:36

Сообщение ANTON_EL »

проверил в симуляторе Proteus работает , чуть позже проверю на контроллере
Контактная информация:
Ответить

Вернуться в «Периферия»