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

 
 
> DS18B20 and ATTiny2313
Arlleex
сообщение Jan 28 2012, 21:24
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата
// sensor_write_1_0 - функция записи 1/0
// bit - 0/1 => запись 0/1
void sensor_write_1_0(uint8_t bit)
{
if (bit==0)
{
DDRB=DDRB | (1<<DQ); // запись 0
_delay_us(100); // задержка 100мкс
DDRB=DDRB & 0xFE; // запись 1
}
else if (bit==1)
{
DDRB=DDRB | (1<<DQ); // запись 0
DDRB=DDRB & 0xFE; // запись 1
_delay_us(100); // задержка 100мкс
}
}
// sensor_read_1_0 - функция чтения 1/0
uint8_t sensor_read_1_0(void)
{
// объявление переменных
uint8_t bit; // данные DQ
DDRB=DDRB | (1<<DQ); // запись 0
DDRB=DDRB & 0xFE; // запись 1
bit=PINB & 0x1; // чтение состояния линии DQ
_delay_us(100); // задержка 100мкс
if (bit==0x1)
{
return 1; // возвращение 1
}
else if (bit==0x0)
{
return 0; // возвращение 0
}
}

Сопрягаю микроконтроллер ATTiny2313 с датчиком температуры DS18b20.
Сам процесс записи и чтения бита - вверху.
Но собственно вопрос - при отладке обнаружил, что не работают данные функции. Возможно не совпадают временные интервалы протокола 1-WIRE.
Для удобства приведу временные диаграммы:

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
kovigor
сообщение Jan 28 2012, 22:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Arlleex @ Jan 29 2012, 01:24) *
Для удобства приведу временные диаграммы:


Причин может быть миллион. Не хочется вникать в чужой проект. Скачайте CodeVision, с ним поставляется рабочая библиотека для этого датчика ...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 29 2012, 09:10
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Arlleex @ Jan 29 2012, 05:24) *
Для удобства приведу временные диаграммы:

Протокол 1-wire достаточно прост, если работать с одним устройством. Попробуйте разобраться самостоятельно, либо найдите в инете примеры, их очень много. У меня датчик опрашивается даже под операционной системой...
Удачи!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jan 29 2012, 11:09
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(haker_fox @ Jan 29 2012, 13:10) *
Протокол 1-wire достаточно прост, если работать с одним устройством. Попробуйте разобраться самостоятельно, либо найдите в инете примеры, их очень много. У меня датчик опрашивается даже под операционной системой...
Удачи!

Да вот и пытаюсь разобраться самостоятельно. Все делаю как в протоколе (учитывал время выполнения операций, для "опускания" некоторых временных интервалов).
Но ничего толкового не получается.
Ладно, буду дальше разбираться, перекапывать весь код, спасибо sm.gif
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 29 2012, 12:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Arlleex @ Jan 29 2012, 15:09) *
Да вот и пытаюсь разобраться самостоятельно. Все делаю как в протоколе (учитывал время выполнения операций, для "опускания" некоторых временных интервалов).
Но ничего толкового не получается.
Ладно, буду дальше разбираться, перекапывать весь код, спасибо sm.gif


Банальный и простой, как песня, совет. Возьмите осциллограф и детально изучите временные диаграммы, формируемые вашим кодом. Хотя бы уже потому, что даже при логической правильности оного оптимизатор способен изменить диаграммы на шине до неузнаваемости ...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 29 2012, 12:03
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Если в таком стиле писАть, Вы сами себя запутаете, вернее уже.
А кто будет при передаче, когда начальный импульс подаёте, задержку на время >1мкс вставлять? Пушкин?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jan 29 2012, 13:21
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(_Pasha @ Jan 29 2012, 16:03) *
Если в таком стиле писАть, Вы сами себя запутаете, вернее уже.
А кто будет при передаче, когда начальный импульс подаёте, задержку на время >1мкс вставлять? Пушкин?

Там строчка одна следующей команды выполняется более чем за 1мкс (у меня частота МК 1МГц). Поэтому там она не нужна.
Go to the top of the page
 
+Quote Post

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

 


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


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