Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 05.11.2009, 13:13  
asele
Частый гость
 
Регистрация: 11.07.2006
Сообщений: 32
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
asele на пути к лучшему
По умолчанию DS1820-не работает, как найти причину?

Доброго времени суток!
Захотелось температуру измерять, к старой макетной плате с ATmega16 приладил датчик температуры DS18s20. Но эффект получился интересный: при поиске устройств на шине I2C выводится 246 устройств (0xF6), хотя подключен один датчик, а значение температуры -9999.
Куски кода:
#asm
// Подключен LCD к порту В:
.equ __lcd_port=0x18 ;// .equ __lcd_port=0x1B ; //PORT A
// Подключен датчик DS1820 к порту D, пин PD5:
.equ __w1_port=0x12; //0x12
.equ __w1_bit=5;
#endasm
#include ‹lcd.h›
#include ‹stdio.h›
#include ‹math.h›
#include ‹ds1820.h›
.....
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x87;
// Place your code here
if(++uS250 == 4000) //секунда
{
uS250 = 0;
#asm("cli");
temperature=ds1820_temperature_10(NULL);
#asm("sei");
sprintf(lcd_buffer,"t%u=%i.%u\xdfC",0,temperature/10,abs(temperature%10));
Flag = 1;
}
}
.....
void main(void)
{
if (w1_init())
{
#asm("cli");
devices=w1_search(0xf0,rom_code);
#asm("sei");
while (1)
{
if(Flag & 0b00000001) // вывод времени при поднятом флаге
{
lcd_prinf(lcd_buffer);
Flag=0;
}
}
};
В чем может быть причина?
}
Реклама:
asele вне форума  
Непрочитано 05.11.2009, 14:34  
rubel
Гражданин KAZUS.RU
 
Аватар для rubel
 
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
rubel на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Сообщение от asele Посмотреть сообщение
Доброго времени суток!
Захотелось температуру измерять, к старой макетной плате с ATmega16 приладил датчик температуры DS18s20. Но эффект получился интересный: при поиске устройств на шине I2C выводится 246 устройств (0xF6), хотя подключен один датчик, а значение температуры -9999.
Куски кода:

...
В чем может быть причина?
}
По-моему вы шинами обшиблись: DS18s20 работает с 1-wire, а с I2C кажись DS1621. Если просто опечатка в тексте, и вы имели в виду 1-wire, то тогда можно протеусом все проверить - там есть эта модель.
rubel вне форума  
Непрочитано 05.11.2009, 15:48  
asele
Частый гость
 
Регистрация: 11.07.2006
Сообщений: 32
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
asele на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Вы правы, шина, действительно, 1-wire. Подозреваю, что датчик неисправен, но опыта проверки устройств на этой шине нет, а хочется понять. Можно ли осциллографом "отловить" обмен и оценить его "правильность"? И если устройство, в данном случае DS1820, отвечает (есть результат w1_search), то почему кол-во устройств неверное? И значение температуры тоже...
asele вне форума  
Непрочитано 06.11.2009, 10:30  
rubel
Гражданин KAZUS.RU
 
Аватар для rubel
 
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
rubel на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Сообщение от asele Посмотреть сообщение
Вы правы, шина, действительно, 1-wire. Подозреваю, что датчик неисправен, но опыта проверки устройств на этой шине нет, а хочется понять. Можно ли осциллографом "отловить" обмен и оценить его "правильность"? И если устройство, в данном случае DS1820, отвечает (есть результат w1_search), то почему кол-во устройств неверное? И значение температуры тоже...
Если есть осциллограф - то дело конечно упрощается раз в 10. Есть ли активность на шине DATA вообще?проверяли?Питание в норме? Если осциллограф без памяти, выводите синхроимпульс с какой-нить ноги МК в начале каждой посылки, засинхронизируйте от него осциллограф, и, возможно, удастся рассмотреть посылку. Подтягивающий резистор какого номинала? Работоспособность датчика можно проверить только прикрутив его к заведомо рабочей системе(или прикрутив к вашей системе заведомо работоспособный датчик). Но как показывает практика(из моего опыта) - чаще всего причина кроется в неверном протоколе со стороны МК.

И еще раз повторюсь: почему бы вам не промоделировать работоспособность программы в Proteus?

Еще упустил момент: датчик DS1820 или DS18S20? К сожалению сейчас точно не скажу, вроде протокол у них одинаковый. Просто, например, у DS18S20 и DS18B20 - протоколы разные. Уточните это.

Последний раз редактировалось rubel; 06.11.2009 в 10:37.
rubel вне форума  
Непрочитано 06.11.2009, 10:47  
rubel
Гражданин KAZUS.RU
 
Аватар для rubel
 
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
rubel на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Сообщение от asele Посмотреть сообщение

...то почему кол-во устройств неверное? ...
Для определения количества датчиков и их серийных номеров используется довольно хитрый(и геморройный) алгоритм. Возможно,что МК не обнаруживает ни одного DS, но выводит какое-то значение на дисплей - тут вопросы к автору программы. Прицепите еще пару датчиков - если результат не изменится - копать в МК. Проверьте частоту тактирования МК. фуз биты. ошибиться там очень легко.
rubel вне форума  
Непрочитано 06.11.2009, 18:09  
renatavr
Временная регистрация
 
Регистрация: 12.10.2006
Сообщений: 53
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
renatavr на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Вот определитель кода 1-вир, должен помоч.
Вложения:
Тип файла: rar Определитель кода.rar (44.2 Кб, 146 просмотров)
__________________
Б.га нет, есть только двоичный код.
renatavr вне форума  
Непрочитано 07.11.2009, 11:48  
asele
Частый гость
 
Регистрация: 11.07.2006
Сообщений: 32
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
asele на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Поступил следующим образом. Написал новый проект в CVAVR, где кроме измерения температуры и вывода на LCD-дисплей ничего нет. Заработало. Отсюда вывод: что-то в большом коде взаимоисключающее. Но найти это место дело только времени и желания. Дальше справлюсь. Если интересно, напишу, когда разберусь.

Всем откликнувшимся большое спасибо!

По поводу Proteusa. Что-то в нем можно проверить, а что-то нет. Например, терморегулятор с конкретными тепловыми инерционностями объектов и мощностью нагревателей. Тем более, если этих значений нет. Потом, если не знаешь среды, работа в ней долгая и непродуктивная. А макет - просто, быстро и есть гарантия, что это так и будет работать.
asele вне форума  
Непрочитано 07.11.2009, 14:17  
asele
Частый гость
 
Регистрация: 11.07.2006
Сообщений: 32
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
asele на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

Причина была в досадной ошибке: вывод PORD.5, на который подключил DS18S20 был сконфигурирован под вывод ШИМ от таймера 1 (OC1A). Изменил биты COM1A1 и COM1A0 регистра TCCR1A с "1" на "0" и датчики нормально заработали - определяются и выводят температуру.
Еще раз спасибо за помощь!
asele вне форума  
Непрочитано 11.11.2009, 00:29  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: DS1820-не работает, как найти причину?

а кто нибудь писал прогу для поиска датчиков на асме PIC?
Dtolok вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
proteus, atmega8, меняю ноги в hex - не работает digitest Микроконтроллеры, АЦП, память и т.д 3 08.10.2009 13:07


Часовой пояс GMT +4, время: 16:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot