Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Хоть о DS18B20 , но
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
ILYAUL
не могу понять почему не получается этот "фокус". Всем привет!

Сейчас только обратил на это внимание. Есть часть кода: ( Полностью он где -то выкладывался на форуме , в многочисленных темах о DS18)
Код
            ....................................................
        cpi        rab,ToConvTermo;| Ищем команду ToConvTermo
        brne    ForwardCheck;| Не она идём дальше
                                ldi             temp,1<<RXCIE1|1<<UDRIE1|0<<RXEN1|1<<TXEN1
        sts    UCSR1B,temp;/ По идее конверт. должна закончиться до этой проверки,
CheckPinRX:
        sbis    PIND,PIND2;/ но проверить надо ,поэтому отключаем приёмник,
        rjmp    CheckPinRX;/ если на входе (0) конвертация не закончена.Тогда - ждём
        ldi        temp,1<<RXCIE1|1<<UDRIE1|1<<RXEN1|1<<TXEN1
        sts        UCSR1B,temp    
ForwardCheck:
                   ........................................................


ToConvTermo - это $44 -начало конвертации температуры. Отловил - отключил приемник и жду 1 от DS18B20. DS- понятно запитана от внешнего источника.
Поэтому, по идее такой фокус возможен, согласно D/S . PIN RX порта по умолчанию сконфигурирован на вход.
Студия , если делать BREAKPOINT , на SBIS дает следующую картину PIND2=1 PORTD2=0 хотя осцил на ноге дает тоже 1 и конечно никакой конвертации цикл не ждёт.
Не могу понять почему нет 0 от DS18B20 или что-то упустил при отключении USART? laughing.gif

P/S Да забыл , отключается USART в прерывании, Может незя этого делать в нём?
ILYAUL
Вынес из прерывания , тоже самое. Нет сигнала . Поставил другой датчик - нет сигнала , питание и земля - всё как вкопанное. Добавил команду проверить питание - нет отвечает датчик , от внешнего питаюсь. Вообщем серое вещество раком.
ARV
и к чему такие извраты? 1-wire и без всякого UART-а тупым ногодрыганьем делается на ура... и меньше возможностей словить грабли навстречу...
xemul
Цитата(ILYAUL @ Oct 13 2010, 19:41) *
ToConvTermo - это $44 -начало конвертации температуры. Отловил - отключил приемник и жду 1 от DS18B20. DS- понятно запитана от внешнего источника.
Поэтому, по идее такой фокус возможен, согласно D/S
...
Не могу понять почему нет 0 от DS18B20

Потому что его ещё спросить надо согласно D/S:
Цитата
If the DS18B20 is powered by an external supply, the master can issue “read time slots” (see the 1-
WIRE BUS SYSTEM section) after the Convert T command and the DS18B20 will respond by
transmitting 0 while the temperature conversion is in progress and 1 when the conversion is done
.
ILYAUL
Цитата(xemul @ Oct 18 2010, 19:37) *
Потому что его ещё спросить надо согласно D/S:

Вот ведь ... Сто раз видел эту фразу , а вот что бы вчитаться. smile3046.gif СПАСИБО!!!!! a14.gif

Цитата
и к чему такие извраты? 1-wire и без всякого UART-а тупым ногодрыганьем делается на ура... и меньше возможностей словить грабли навстречу...

А зачем заниматься ногодрыганьем и забивать мозги , если есть свободный USART и в "фоновом" режиме он спокойно "расправляется" с DS. Два практически стандартных обработчика прерываний USART.
ILYAUL
Дошли руки , добавил опрос готовности датчика (11 команд asm) и был приятно удивлён . Длительность самой конвертации составила 75,596 ms (9 бит разрешение) весь пакет 81,984 ms против 93,75 - и соответсвенно 100,1 ms. При этом из кода выброшены команды инит таймера и обработки его прерывания.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.