реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Хоть о DS18B20 , но
ILYAUL
сообщение Oct 13 2010, 15:41
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



не могу понять почему не получается этот "фокус". Всем привет!

Сейчас только обратил на это внимание. Есть часть кода: ( Полностью он где -то выкладывался на форуме , в многочисленных темах о 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 в прерывании, Может незя этого делать в нём?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 18 2010, 14:38
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ARV
сообщение Oct 18 2010, 14:50
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



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


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 18 2010, 15:37
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(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
.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 18 2010, 17:05
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(xemul @ Oct 18 2010, 19:37) *
Потому что его ещё спросить надо согласно D/S:

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

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

А зачем заниматься ногодрыганьем и забивать мозги , если есть свободный USART и в "фоновом" режиме он спокойно "расправляется" с DS. Два практически стандартных обработчика прерываний USART.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 11 2010, 17:37
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Дошли руки , добавил опрос готовности датчика (11 команд asm) и был приятно удивлён . Длительность самой конвертации составила 75,596 ms (9 бит разрешение) весь пакет 81,984 ms против 93,75 - и соответсвенно 100,1 ms. При этом из кода выброшены команды инит таймера и обработки его прерывания.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 08:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016