Перейти к содержанию

Как Работать С 1wire?


Рекомендуемые сообщения

Здравствуйте!

Не могу понять, как правильно работать с 1 wire? Интересует полностью процесс обмена данными. Прочитал несколько статей по 1 wire, даташиты. Везде есть примеры, но все для асма и всяких там Бесиков. не нашел примеров работы на С, а в других средах я пока что не рублю ниче :(

Вот моя начальная задача:

Имеется 1 датчик температуры ds18b20. Нужно узнать какая температура.

Как это сделать на С???

Пишу на С в Кодвижн авер под 16 мегу.

Кста, еще вопрос: я случайно коннектил датчик температуры к ПИНС.6, а не к ПИНС.1 так можно использовать, или полюбому надо на 6 пин подключить?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Спасибо большое! Стало чуть понятнее, но все-таки, просьба для тупого объяснить, что за чем должно следовать?

Вот например, предварительно настроив 1 wire, таким образом:

#asm
  .equ __w1_port=0x15;PORTC
  .equ __w1_bit=1
#endasm
#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds1820.h>

имеем функцию срабатывания таймера, каждые 2 минуты, в которой надо мерять температуру:

interrupt [TIM1_OVF] void timer1_ovf_isr(void){

Что здесь написать?

}

Я понял все про тайминги, там ресет, вроде и т.д., но что КОНКРЕТНО делать не ясно. По вышеприведенным ссылкам, есть много кодов, но, я думал, как-то попроще должно все работать.. Ну и не совсем рублю всех инструкций.

Ссылка на комментарий
Поделиться на другие сайты

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Нашел кусок кода, описанный во многих статьях:

 temp=ds18b20_temperature(0);  //читаем температуру  
	  if (temp>1000){			   //если датчик выдаёт больше 1000 
		 temp=4096-temp;			//отнимаем от данных 4096 
		 temp=-temp;				//и ставим знак "минус"

Если тупо в прерывание таймера вписать этот кусок, то будет ли работать? или еще чего надо?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Где-то сдесь эта ссылка уже проскакивала Реобас. В исходниках есть код для работы с 1wire +коментарии. Правда написано под WinAVR, но разобраться что к чему и переделать под CVAVR можно.

Ссылка на комментарий
Поделиться на другие сайты

имеем функцию срабатывания таймера, каждые 2 минуты, в которой надо мерять температуру:

interrupt [TIM1_OVF] void timer1_ovf_isr(void){

Что здесь написать?

}

Найдите справку по функциям входящим в хендлер 1wire.h, коль Вы его уже включили в компиляцию...

Вот это, например, temp=ds18b20_temperature(0) вернет в переменной temp температуру с датчика.

Вообще, лучше разберитесь на уровне железа в работе 1-выра, будет понятно что делать на Сях. ИМХО

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

Ссылка на комментарий
Поделиться на другие сайты

Вот все функции для работы с датчиками ds18x20 от производителя: http://forum.cxem.net/index.php?act=attach...st&id=56666

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

"Если тупо в прерывание таймера вписать этот кусок, то будет ли работать? или еще чего надо?" будет но обработчик прерывания должен быть как можно короче, в идеале там только выставляют флаги, а их обработку и принятие рещений делают в основном цикле, но если кроме измерения температуры больше делать нечего то можно код обрабатывать и в прерывании.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Я писал как раз для DS18B20, давно это было... Вот, если поможет, куски моего кода:

#include <mega8.h> 
#include <delay.h>
#include <math.h>
#include <1wire.h>

#asm
     .equ __w1_port=0x15 ;PORTC // настройка вывода шины
     .equ __w1_bit=1  // // настройка вывода шины
#endasm

#define MAX_DEVICES 4

unsigned char rom_codes[MAX_DEVICES][9], devices;
char Temp1, Temp2, Temp3;
char TempInt, MSB, LSB;

void main(void)
{
int i;
#asm("cli")
devices = w1_search(0xf0,rom_codes);
#asm("sei");
while (1)
// **************** Calling of all sensors **************** //
{
#asm("cli")
w1_init();
w1_write(0xCC);
delay_ms(10);
w1_write(0x44);
#asm("sei");
delay_ms(760);
#asm("cli");
w1_init();
w1_write(0x55);
delay_ms(10);
for (i=0; i<8; i++)
 w1_write(rom_codes[0][i]);
w1_write(0xBE);
delay_ms(10);
LSB = w1_read();
delay_ms(10);
MSB = w1_read();
LSB = (LSB >> 4) & 0b00001111;
MSB = (MSB << 4) & 0b01110000;

TempInt = MSB + LSB; //здесь по идее лежит температура
#asm("sei")
// *************End Of Calling of all sensors ************* //
}
}

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...