free_V_V писал(а):паразитного питания не хватит в любом случае.
Хватит. А вы проверяли что не хватает?
free_V_V писал(а):паразитного питания не хватит в любом случае.
Gudd-Head писал(а):Ну в вы-таки грели датчик с паразитным питанием? Нет? ДШ все умеют читать.
free_V_V писал(а):многие датчики
Gudd-Head писал(а):free_V_V писал(а):многие датчики
Сидящие на одной шине?
В одной аппноте далласовской, было написано, что при высоких температурах паразитное питание применять не рекомендуется из-за повышенных утечек при нагреве кристалла.free_V_V писал(а):Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.
uldemir писал(а):В одной аппноте далласовской, было написано, что при высоких температурах паразитное питание применять не рекомендуется из-за повышенных утечек при нагреве кристалла.free_V_V писал(а):Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.
uldemir писал(а):Я уже ничего не выясняю. Просто подтверждаю, что такой эффект описан.
Gudd-Head писал(а):Я вот только нигде не вижу, что Padavan собирался их греть до 100°.

shads писал(а):Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию, и будут видны колебания яркости разрядов. Или просто с этим смириться?
Padavan писал(а):подкидывал даже соседнюю ногу и тоже переключал в"1"на время конвертирования
Код: Выделить всё
//---------- Запись/чтение бита по однопроводной шине: ----------
bool TBit(bool b)
{
char si;
si = __save_interrupt();
__disable_interrupt(); //запрещение прерываний
Port_OWP_0;
Port_OWP_OUT; //OWP <- 0
Delay_us(2); //delay 2 uS
if(b) Port_OWP_IN; //bit = 1, OWP <- 1
Delay_us(13); //delay 13 uS
bool owp = Pin_OWP; //чтение порта
Delay_us(45); //delay 45 uS
Port_OWP_1; //force pullup !!!!!!!!!!!!!!!!!!!!!
Port_OWP_OUT;
__restore_interrupt(si); //восстанавление прерываний
Delay_us(2); //delay 2 uS
return(owp);
}
shads писал(а):Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию
Код: Выделить всё
//---------- Генерация импульса сброса: ----------
bool TReset(void)
{
char si;
Port_OWP_0;
Port_OWP_OUT; //OWP <- 0
Delay_us(500); //delay 500 uS
si = __save_interrupt();
__disable_interrupt(); //запрещение прерываний
Port_OWP_IN; //OWP <- 1
Delay_us(14); //delay 14 uS
if(Pin_OWP) //если OWP = 0, то ошибка
{
Delay_us(52); //delay 52 uS
if(!Pin_OWP) //если OWP = 1, то ошибка
{
__restore_interrupt(si); //восстанавление прерываний
Delay_us(250); //delay 250 uS
if(Pin_OWP) //если OWP = 0, то ошибка
{
return(1); //если ошибок нет, термометр присутствует
}
}
}
__restore_interrupt(si); //восстанавление прерываний в случае ошибки
return(0);
}