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

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

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

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

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

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

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

 
Опции темы
Непрочитано 05.03.2010, 23:39  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

у кодевижна есть мануал на вражеском языке. я функцию температуры осваивал из него. если нужно - могу скинуть, там есть для нас начинающих СИписцев доступное разжевывание встроенных библиотек
Реклама:
spballiance вне форума  
Непрочитано 06.03.2010, 00:00  
ish0
Прописка
 
Регистрация: 09.08.2006
Сообщений: 198
Сказал спасибо: 14
Сказали Спасибо 27 раз(а) в 20 сообщении(ях)
ish0 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Переменная __ds18b20_scratch_pad определена в библиотеке ds18b20.lib, которая написана на С. К сожелению в help`e CV не показано как эту структурную переменную использовать. Но просматривая как написана сама библиотека можно с этим разобраться.
ish0 вне форума  
Непрочитано 06.03.2010, 00:05  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

ish0,
Результат положительный.
int sp1 [MAX_DEVICES];
int sp2 [MAX_DEVICES];
........................
Код:
sp[i]=ds18b20_read_spd(&rom_codes[i][0]); 
            sp1[1]= __ds18b20_scratch_pad.temp_low;
            sp2[1]= __ds18b20_scratch_pad.temp_high;
            printf("T=%i\xf8\n\r",sp1[1]);
            printf("T=%i\xf8\n\r",sp2[1]);
Возвращает значение низкого и высокого сигнала алармов. Люкс.
Единственный вопрос - почему в значении переменных SP надо ставит 1. С другими значениями не работает.?
И все работает с несколькими датчиками - строго обращаясь по ROM code.
nsl2004 вне форума  
Непрочитано 06.03.2010, 00:25  
ish0
Прописка
 
Регистрация: 09.08.2006
Сообщений: 198
Сказал спасибо: 14
Сказали Спасибо 27 раз(а) в 20 сообщении(ях)
ish0 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Сообщение от nsl2004 Посмотреть сообщение
Единственный вопрос - почему в значении переменных SP надо ставит 1. С другими значениями не работает.?
Это как? Если определить массивы
int sp1[MAX_DEVICES];
int sp2[MAX_DEVICES];

и в цикле выполнять:
for (i = 0; i ‹ devices; i++)
{
sp[i]=ds18b20_read_spd(&rom_codes[i][0]);
sp1[i]= __ds18b20_scratch_pad.temp_low;
sp2[i]= __ds18b20_scratch_pad.temp_high;
printf("T=%i\xf8\n\r",sp1[i]);
printf("T=%i\xf8\n\r",sp2[i]);
};
то не работает?
ish0 вне форума  
Непрочитано 06.03.2010, 00:38  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

ish0,
Да если сделать sp1[i]= __ds18b20_scratch_pad.temp_low;
как сейчас у Вас, то выводит нули. Если вместо i - единица то работает. Может это связано что используется структурная переменная? Типа стоять!!
nsl2004 вне форума  
Непрочитано 06.03.2010, 01:06  
ish0
Прописка
 
Регистрация: 09.08.2006
Сообщений: 198
Сказал спасибо: 14
Сказали Спасибо 27 раз(а) в 20 сообщении(ях)
ish0 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Похоже у Вас где-то вместо i используется 1. Попробуйте поискать "[i]" или заменить [i] на [k] и посмотреть на результат.
ish0 вне форума  
Непрочитано 06.03.2010, 01:42  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Сделаю. Только завтра
nsl2004 вне форума  
Непрочитано 06.03.2010, 11:50  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

ish0,
Подвела невнимательность. Все заработало. Вот окончательно работающий код для определния температуры на каждом присутствующем датчике и выводе установк регистров temp_low и temp_high
Код:
unsigned char read_spd[MAX_DEVICES][9]; // смотрим как объявлена в файле ds18B20.lib
void main(void)
{
............
unsigned char i;// объявляем индексную переменную i
float temp [MAX_DEVICES]; // смотрим как объявлена в файле ds18B20.lib
int sp1 [MAX_DEVICES];
int sp2 [MAX_DEVICES];
..................................
while (1)
    { 
        for (i=0;i‹devices;i++)
           { 
            temp[i]=ds18b20_temperature(&rom_codes[i][0]);
            //delay_ms(750);
            printf("DEVICE #%-u TEMP Value:",i+1);
            printf("T=%5.2f\xf8C\n\r",temp[i]);
                        
            sp[i]=ds18b20_read_spd(&rom_codes[i][0]); 
            sp1[i]= __ds18b20_scratch_pad.temp_low;
            sp2[i]= __ds18b20_scratch_pad.temp_high;
            printf("T=%i\xf8\n\r",sp1[i]);
            printf("T=%i\xf8\n\r",sp2[i]);
Скрин из Proteusa ( третий девайс не датчик температуры , а ключ - поэтому выдает ошибку. Сделано для контроля.)
Миниатюры:
Нажмите на изображение для увеличения
Название: Scrin3.jpg
Просмотров: 677
Размер:	95.5 Кб
ID:	5353  
nsl2004 вне форума  
Непрочитано 07.03.2010, 15:17  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Появился еще один вопрос.
В help CVAVR присутствуют две конструкции
devices=w1_search(0xf0,rom_codes);
и если сделать так
printf("Detect %-u Device \n\r",devices) то получаем на терминале количество устройств
Все работает.
Другая конструкция. Для команды 0хec. Судя по даташету должна работать аналогично, но ... искать устройства , в которых текущая температура вышла за пределы temp_low и temp_high.
Я взял код из help'a CVAVR
printf("ALARM GENERATED BY %-u DEVICE(S)\n\r",
w1_search(0xec,alarm_rom_codes));

НЕРАБОТАЕТ показывает 0, хотя я явно создал аварийную ситуацию на датчиках. Думал что нибудь с синтаксисом, проверил заменой 0xec на 0хf0 - исправно показывает количество устройств. Выходит дело в другом? Может кто подскажет?
Из даташета
Цитата:
Выполнение этой команды идентично выполнению команды Поиск ROM за исключением того, что ответят только DS18B20 (датчики температуры) с установленным флажком аварии.
nsl2004 вне форума  
Непрочитано 09.03.2010, 17:20  
nsl2004
Почётный гражданин KAZUS.RU
 
Регистрация: 13.04.2009
Сообщений: 5,611
Сказал спасибо: 1,070
Сказали Спасибо 1,273 раз(а) в 884 сообщении(ях)
nsl2004 на пути к лучшему
По умолчанию Re: CodeVisionAVR начинающим с нуля

Вопрос с поиском по 0xEC остался открытым. Так и не удалось оживить Может быть кто то все таки сталкивался с подобным.
nsl2004 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ARM начинающим с нуля - KEIL с лекарсвом, методички, книги avr123-nm-ru Микроконтроллеры, АЦП, память и т.д 22 31.03.2010 00:24
CodeVisionAVR 1.25 and ds1992 Serj1987 Микроконтроллеры, АЦП, память и т.д 1 25.11.2009 14:11


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


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