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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> DS18B20 + ATMEGA8
kovigor
сообщение Dec 15 2013, 17:24
Сообщение #16


Гуру
******

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



Цитата(isx @ Dec 15 2013, 15:48) *
Теперь вот только решить проблему с миганием индикатора.

Тут два варианта: или забыть о библиотеке, поставляемой с CodeVision для этого датчика, и писать свою реализацию, которую можно прерывать, или воздействовать на ассемблерный файл, который генерирует СodeVision. Т.е., открываем этот файл и вручную вписываем в него "cli" и "sei", запрещая прерывания на время чтения и записи бита по 1-wire и выполнения функции "_w1_init" (откройте асм - файл и найдите там эти места). А потом этот файл компилируем. Я так делал, работает отлично ...
Go to the top of the page
 
+Quote Post
isx
сообщение Dec 15 2013, 17:42
Сообщение #17





Группа: Участник
Сообщений: 12
Регистрация: 1-04-12
Пользователь №: 71 126



Решил подредактировать родную библиотеку.
Нашел блок чтения температуры, убрал обращение к нему, и поставил этот код в свою программу:
CODE
if (ontemp == 0) {

ontemp = 1;
if (ds18b20_read_spd(0)==0) {temper = -9999; goto endoff;}
if (ds18b20_select(0)==0) {temper = -9999; goto endoff;}
w1_write(0x44);
} else {


ontemp = 0;
if (ds18b20_read_spd(0)==0) {temper = -9999; goto endoff;}
w1_init();
temper = (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;


Код выполняется раз в пол секунды (программный таймер так настроил). Датчик в системе один, иначе ругается на не найденную переменную addr. Я хотел её глобально объявить, но не смог найти, кто знает где она, скажите, вдруг понадобится несколько датчиков подключить.
В протеусе вроде работает, протестирую на железе отпишу...
Инициализация и прочие функции делаются через стандартную библиотеку...

Сообщение отредактировал isx - Dec 15 2013, 17:43
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 15 2013, 17:57
Сообщение #18


Гуру
******

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



Цитата(isx @ Dec 15 2013, 21:42) *
Решил подредактировать родную библиотеку.

Что бы вы ни делали, прерывания не должны возникать во время чтения/записи битов по 1-wire. Иначе будут сбои
Еще вариант - воздействуя на ассемблерный файл, засинхронизировать чтение/запись битов с прерываниями, чтобы последние не возникали в "неподходящие" моменты. В моем случае это было возможно ...
Go to the top of the page
 
+Quote Post
isx
сообщение Dec 15 2013, 18:03
Сообщение #19





Группа: Участник
Сообщений: 12
Регистрация: 1-04-12
Пользователь №: 71 126



Ды нет у меня прерываний никаких... Я это сделал, чтобы индикатор не мигал, пока получаем инфу с датчика...
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 15 2013, 18:17
Сообщение #20


Гуру
******

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



Цитата(isx @ Dec 15 2013, 22:03) *
Ды нет у меня прерываний никаких... Я это сделал, чтобы индикатор не мигал, пока получаем инфу с датчика...

Индикация динамическая ? По прерыванию от таймера ? Или она у вас в фоновом процессе реализована ?
Go to the top of the page
 
+Quote Post
isx
сообщение Dec 15 2013, 18:35
Сообщение #21





Группа: Участник
Сообщений: 12
Регистрация: 1-04-12
Пользователь №: 71 126



динамическая, в фоновом режиме..

Сообщение отредактировал isx - Dec 15 2013, 18:35
Go to the top of the page
 
+Quote Post
isx
сообщение Dec 15 2013, 21:26
Сообщение #22





Группа: Участник
Сообщений: 12
Регистрация: 1-04-12
Пользователь №: 71 126



Всё пучком sm.gif Код работает.... Только выкинул строчку w1_init();
Не знаю, зачем каждый раз инициализацию проводить там было...
Go to the top of the page
 
+Quote Post
_basile
сообщение Jan 4 2014, 10:18
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 175
Регистрация: 18-01-06
Из: Москва
Пользователь №: 13 329



Цитата(isx @ Dec 16 2013, 00:26) *
Всё пучком Код работает.... Только выкинул строчку w1_init();
Не знаю, зачем каждый раз инициализацию проводить там было...

Наверное, чтобы обнаруживать "подключаемые на ходу" датчики.


--------------------
" Будут с водкою дебаты, отвечай : Нет ребяты-демократы, только чай ! "
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 13th July 2025 - 23:03
Рейтинг@Mail.ru


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