23.11.2011, 11:44
|
|
Частый гость
Регистрация: 07.03.2011
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 16 сообщении(ях)
|
Re: Отладочные платы для STM32
Цитата:
|
И чтобы можно было взять и подключить другой термостик целиком если в старом вышел из строя датчик хоть один. Без замеров и кодирования, просто как совместимые устройства. Но похоже это неосуществимо...
|
Банальные проблемы с обычной логикой -- стики же будешь собирать "на берегу" в домашней обстановке?
Узнать номер одного датчика не припаивая, а вставляя по 1 в разъем можешь?
Разложить датчики по возрастанию номеров можешь?
Пронумеровать по возрастанию позиции датчиков в стике можешь?
Впаивай по возрастанию номеров датчиков.
Вот тебе полная независимость производства стиков от приборов в которые ты их будешь втыкать.
А да -- если в стике умрет один датчкик -- будешь перепаивать все из них...
========
Так что лучше написать процедуру и нагревая конкретный датчик (в руках, спичкой,) тыкать пальцем -- это первый... это второй... это третий...
На длинных шлейфах тоже самое...
При промышленном производстве с ленты идут последовательные номера, при эксплуатации/ремонте -- отдельно показываются "тройками": позиция первого датчика который перестал отвечать и показания датчика ДО него и позиция первого же работающего датчика После неработающего...
Убеждаешься нагревом в работе их оставшихся и НОВЫЙ появившийся вписывается между ними начиная с ближайшего по позиции в шлейфе...
Цитата:
|
И понял, что оно бесплезно, как только начал цеплять к уже разведенной сети термометров и идентификаторов. Хорошо, что все Далласы висели на клеммниках... В общем сделал определение идентификатора на соседней ножке проца, вывел ее на приборе и дело пошло гораздо веселее - сунул термометр в прибор, прописал его, привязал к месту в сети, а потом отнес термометр на его новое место и подцепил на клеммник.
|
Гм... по описанию, ну ты и набегался... практически "факториал" расстояний вычислил...
С напарником и комплектом ручных радиостанций, после очередного пожара/ремонта и тд. это делалось за один проход по шлейфу включая восстановление самого шлейфа -- к счастью его обрывало, но ни разу не закоротило...
|
|
|
Сказали "Спасибо" Gaaaaaad
|
|
|
24.11.2011, 16:53
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Распаял датчики и выписал на бумажку их адреса. Easyrider83 подскажите плиз как теперь обратиться к датчику на считывание температуры по адресу? Адреса хранятся в переменной uint64_t addr[5]. И ещё надо ли перед каждым считыванием запускать конвертацию? Или можно дать команду конвертации на шину один раз, а потом по адресам считать со всех датчиков показания?
|
|
|
|
24.11.2011, 16:59
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
Easyrider83 подскажите плиз как теперь обратиться к датчику на считывание температуры по адресу?
|
Адрес должен лежать в массиве. В вашем случае массив можно сделать константным. Пусть лежит во флеше. Массив двумерный - по горизонтали 64 бита уникального кода включая CRC, по вертикали - номер сенсора.
Сообщение от CMaxx22
|
И ещё надо ли перед каждым считыванием запускать конвертацию?
|
Да, по дефолту, датчик настроен на 12 битное разрешение и конвертирование занимает 750мс. Можно ли просто дать команду на конвертирование через Skip Rom или же надо каждому датчику отдельно эту команду давать - не знаю. Думаю, оба варианта подходят.
|
|
|
|
24.11.2011, 17:32
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Ага, похоже понятно. Это приемлемо для уже подправленной версии библиотеки, где вы добавили sens_num во все процедуры? Я просто для наглядности откатился к первой версии библиотеки что вы давали, там массив ещё не двумерный. Попробую снова.
|
|
|
|
24.11.2011, 17:44
|
|
Частый гость
Регистрация: 07.03.2011
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 16 сообщении(ях)
|
Re: Отладочные платы для STM32
Если кому-то грустно может сравнить свой код с
http://www.coocox.org/show_comp.php?...3-001fd0c63d33
могу ошибаться но кажется это первый "библиотечный" код под кортексы
|
|
|
|
24.11.2011, 19:12
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от kison
|
Обязательно самостоятельно? Эта задача уже решалась 100500 раз.
И не раз выкладывалось решение.
http://electronix.ru/forum/index.php...dpost&p=178318
Я не проверял работу, для обычных задач мне и самописных библ хватает. Поиск на шине ни разу не использовал. Но автор этой библы тут бывает.
Проверяйте работоспособность.
|
Конечно же запустить не получилось, снова эти андефайны и PORTD, DDRD непонятные поомешали...
|
|
|
|
24.11.2011, 20:36
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Посмотрите правильно ли я объявил массив адресов
unsigned char DS1822_SERIAL_NUMBER[5][8]
={{2,4,9,1,9,0,8,0},{2,5,6,6,7,8,8,0},{2,1,7,2,1,8 ,9,6},{2,1,3,3,0,2,1,6},{2,2,2,3,4,4,0,8}};
В каждых скобках адрес одного датчика чеерез запятую.
Почемуто хоть с общей конвертацией хоть с индивидуальной попытка считать показания по адресу возвращает no_echo при том что сама процедура конвертации воозвращает Sucess ...
Выззывваю так:
DS1822_Start_Conversion_Cmd(GPIOB,GPIO_Pin_1,3);
LCD_ShowNum(10,10,DS1822_Read_Temp_NoCRC_By_Rom(GPIOB,GPIO_Pin_1,3),8,16, RED);
Также если считать температуру пропустив ром то выдаёт нормально изменяющееся значение что говорит о том, что датчики в порядке, похоже DS1822_Read_Temp_NoCRC_By_Rom работает не верно, где исправить?
Последний раз редактировалось CMaxx22; 24.11.2011 в 20:48.
|
|
|
|
24.11.2011, 21:22
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Ссмоттрю далььше, функция выглядит так
unsigned int DS1822_Read_Temp_NoCRC_By_Rom (GPIO_TypeDef* GPIOx, unsigned long PIN, char sens_num)
{
if (DS1822_Send_Cmd_By_Rom(GPIOx, PIN, sens_num)==One_Wire_Success)
{
One_Wire_Write_Byte(DS1822_READ_STRATCHPAD_CMD,GPI Ox, PIN);
return One_Wire_Read_Byte(GPIOx, PIN)|(One_Wire_Read_Byte(GPIOx, PIN)‹‹ ![Горд собой](images/smilies/icon_dovl.gif) ;
}
else return One_Wire_Error_No_Echo;
}
И она вооззвврращаетт One_Wire_Error_No_Echo притом, ччтто отдельно взятая процедура DS1822_Send_Cmd_By_Rom по вине которой DS1822_Read_Temp_NoCRC_By_Rom может выдать One_Wire_Error_No_Echo сама по себе возвращает One_Wire_Success!!! Как такое вообщее возможно?
|
|
|
|
24.11.2011, 21:28
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Вы правы, такое не возможно. Постараюсь проверить в ближайшее время.
|
|
|
|
24.11.2011, 21:51
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Оказалось что 65535 возвращааетсся другим путём, прии поммощи загаадочноой связки
return One_Wire_Read_Byte(GPIOx, PIN)|(One_Wire_Read_Byte(GPIOx, PIN)‹‹ ![Горд собой](images/smilies/icon_dovl.gif) ;
Это выдаёёёт 65535
Отдельно (One_Wire_Read_Byte(GPIOx, PIN)‹‹ ![Горд собой](images/smilies/icon_dovl.gif) даёт 65280 а One_Wire_Read_Byte(GPIOx, PIN) даёт 255
Что делает эта строка?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:09.
|
|