Например TDA7294

Форум РадиоКот • Просмотр темы - Написал свою Onewire для Codevision
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 13, 2025 13:10:09

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 115 ]  1, , , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Написал свою Onewire для Codevision
СообщениеДобавлено: Пн окт 23, 2023 22:29:28 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: -4
Написал свою реализацию OneWire для CodeVisionAVR.
Чем не устраивает родная библиотека? А она не в исходниках, работает очень медленно и блокирует прерывания.
Посмотрел я другие библиотеки и чот, а дай ка я свой велосипед напишу и заодно досконально разберусь в теме одноваре.
Писалось все по сути с чистого листа, кроме вычисления CRC8. Места занимает больше чем родная но и функционал там побогаче, есть контроль линии на КЗ как в питание так и в землю. Работает примерно в два раза быстрее, прерывания блокирует минимально. Ну и родная библиотека типа плохо работает на частотах проца меньше 4МГц, этой вообще пофиг.
Единственный ньюанс, нужно в прерывании каком нибудь инкрементить переменную для ловли таймаута шины хотя бы раз в 100 миллисекунд. Можно и раз в секунду но на эту секунду контроллер не будет отзываться в случае КЗ. Этого можно и не делать, но тогда есть шанс повесить проц если на линии случится КЗ в землю.
Оформлено не в виде библиотеки, кто хочет сам сделает. А то отлаживать в Proteus не получится. )))))))))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Пн окт 23, 2023 23:11:53 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
врятли кому пригодится самодельная библиотека...))
тут всё уже разобрали... viewtopic.php?f=28&t=185219


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 16:27:51 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
врятли кому пригодится самодельная библиотека...))
тут всё уже разобрали... viewtopic.php?f=28&t=185219

Так то почти все библиотеки самодельные. Там есть еще библиотека для MAX7219 тоже самодельная. И драйвер клавиатуры резистивной ))))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 18:05:36 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
я вообще не использую библиотеки... никакие))

MAX7219 шо за зверь...
https://yandex.ru/video/preview/5334075 ... snippets=1
:roll:
Вложение:
Screenshot_1.jpg [50.22 KiB]
Скачиваний: 55

всё ясно))
:tea:
динамическая индикация...
Вложение:
Screenshot_2.jpg [79.68 KiB]
Скачиваний: 43

ненавижу динамическую индикацию...
:facepalm:
у меня от неё в глазах рябит))
:shock:

лучше делать статическую индикацию... она не раздражает))
на простых сдвиговых регистрах...
или на худой конец на любом дешёвом МК...
:tea:


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 21:32:04 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Динамическая индикация на частоте 500 герц вообще незаметна. Ее даже на камеру не видно.
Как это вы не пользуетесь библиотеками? Или вы не понимаете значения этого слова? пусть будет функция для работы с дисплеем. Драйвер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 22:43:43 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
пусть будет функция для работы с дисплеем.))
:tea:
например вот так
Вложение:
пульт.c [104.49 KiB]
Скачиваний: 66


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 23:04:48 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Заборная у вас трава. Завидую.
И что это такое?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Вт окт 24, 2023 23:28:07 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
И что это такое?
простенький пультик))
https://www.youtube.com/watch?v=qWojRM-tjP0
https://www.youtube.com/watch?v=VvzbTWOdV3g
...
и т.д.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 11:00:38 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Это выросло не из проекта Фокуса на рсдизане?
Я тоже баловался.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 11:31:57 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
нет.
это чисто свой проект...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 12:16:11 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Ну так и где там разобрали одноваре?
Я так понял вы весьма специфичный товарищ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 12:27:27 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
там всё разобрали...
Вложение:
модель.c [30.83 KiB]
Скачиваний: 52

и даже нарисовали...
Вложение:
PCM-256.jpg [150.59 KiB]
Скачиваний: 57

одноваре...))
:tea:

код одноваре...

Код:
////////////////////////////////////////////////////////////// передача wt (1-Wire-DS18B20):
void wt(void)
{
// LSB...MSB
for (x=0;x<8;x++) {
 DDRC.4=0;         // отпустить линию
 delay_us(10);
 DDRC.4=1;         // прижать линию
 DDRC.4= t_ & (1<<x) ? 0 : 1;   // DDRC.4  // выход Data TX
 delay_us(70);
};
DDRC.4=0;          // отпустить линию
}
///////////////////////////////////////////////////////////////////// приём wr (RX DS18B20):
void wr(void)
{
// LSB...MSB
t_=0;
for (x=0;x<8;x++) {
 DDRC.4=0;         // отпустить линию
 delay_us(10);
 DDRC.4=1;         // прижать линию
 delay_us(4);
 DDRC.4=0;         // отпустить линию
 delay_us(8);      // delay_us(25); v //delay_us(30); x
if (PINC.4==1) {t_|=(1<<x);}; // Data RX
 delay_us(70);
};
DDRC.4=0;          // отпустить линию
}
/////////////////////////////////////////////////////////////////////// fwcrc (TX/RX DS18B20):   
void fwcrc(void)
{
wcrc ^= wbcrc;     // CRC-8-Dallas/Maxim // 0x31 8+x5+x4+1 // 1.0011.0001 // 0x8C // 1000.1100
 for (x=0;x<8;x++) {
  wcrc = wcrc & 0x01 ? ( wcrc >> 1 ) ^ 0x8C : wcrc >> 1;
 };
}

:tea:
Код:
///////////////////////////////////////////////////////////////// t - температура модель(датчик DS18B20):         
// температура модель ds18b20: 0 C^ (00000000)... 128 C^ (10000000) (начальное 85 C^ (01010101))
// 32 пак/c. цикл 0,031.25c.
sd++;               // sd - запуск преобразования: 1 преобразование(минимум 750mc)=1с.
////////////////////// запуск преобразования: -3,7 mc
if (sd == 1) {      // Инициализация DS18B20
DDRC.4=1;           // прижать линию DS18B20
delay_us(550);      // 480 мкС < имп < 960 мкС
DDRC.4=0;           // отпустить линию  DS18B20
delay_us(550);      // 480 мкС < имп
t_ =0b11001100; wt(); // обратиться ко всем устройствам на шине.   
t_ =0b01000100; wt(); // начинает единственное температурное преобразование.   
};
////////////////////// читать датчик DS18B20: -3,7 mc
if (sd == 31) {     // Инициализация DS18B20                                       
DDRC.4=1;           // прижать линию DS18B20
delay_us(550);      // 480 мкС < имп < 960 мкС
DDRC.4=0;           // отпустить линию  DS18B20
delay_us(550);      // 480 мкС < имп
t_ =0b11001100; wt(); // обратиться ко всем устройствам на шине.   
t_ =0b10111110; wt(); // читать содержание ПАМЯТИ (ОЗУ). 
};
////////////////////// читать датчик DS18B20: -3,7 mc
if (sd == 32) {     
wr(); t0=t_;         // 0 - Температура LSB
wr(); t1=t_;         // 1 - Температура MSB         
wr(); t2=t_;         // 2 - TH   
};
////////////////////// читать датчик DS18B20: -3,7 mc
if (sd == 33) {   
wr(); t3=t_;         // 3 - TL   
wr(); t4=t_;         // 4 - конфигурация       
wr(); t5=t_;         // 5 - FF       
};
////////////////////// читать датчик DS18B20: -3,7 mc
if (sd == 34) {   
wr(); t6=t_;         // 6 - 0C   
wr(); t7=t_;         // 7 - 10     
wr(); t8=t_;         // 8 - CRC         
};
////////////////////// CRC-8 датчик DS18B20    -0,7mc
if (sd == 35) { 
wcrc=0;             // сброс
wbcrc=t0; fwcrc();  // 0
wbcrc=t1; fwcrc();  // 1
wbcrc=t2; fwcrc();  // 2
wbcrc=t3; fwcrc();  // 3
wbcrc=t4; fwcrc();  // 4
wbcrc=t5; fwcrc();  // 5
wbcrc=t6; fwcrc();  // 6
wbcrc=t7; fwcrc();  // 7
         // crc                               
wbcrc=t8; fwcrc();  // 8
////////////////////// проверка crc
  if (wcrc==0) {
////////////////////// сборка L + H :
// tok - датчик тока: 0...255. / температура 2
//   tok = t & 0b00001111; // t0 = ....1111 - L младший бит температурного регистра.

    t0 = (t0 >> 4); // t0 = 1111.... >> .... 1111  - L младший бит температурного регистра.
    t1 = (t1 << 4); // t1 = ....1111 << 1111....   - H старший бит температурного регистра.
    t = t1 | t0;    // t = DS18B20.
   }
////////////////////// ошибка crc
   else  {   
   t=0x00;          // ошибка crc (TX/RX DS18B20).
 //  tok=0x00;        // ошибка crc (TX/RX DS18B20).
   };
////////////////////// сброс // sd - счётчик датчика DS18B20
sd = 0;           
};

:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 14:58:13 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Я может в шары долблюсь, но где SearchROM? Это самая интересная часть балета. И вы даже прерывания не запрещаете в критических моментах.
И написано это конечно огонь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 15:58:44 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 4
AVK, глянул, и сразу удалил. Извини, но это детство. Во всём! Сам поймёшь со временем, когда повзрослеешь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Ср окт 25, 2023 16:28:30 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
кто такой SearchROM ? )) и зачем он нужен ?
прерывания в критических моментах... каких таких критических моментах ?
:dont_know:
OKF зачем писать "Сам поймёшь" ?
если есть замечания... пиши конкретно... иначе твой комментарий бессмысленный ))
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Чт окт 26, 2023 10:10:42 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
Вы я смотрю ничего в одноваре не понимаете.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Чт окт 26, 2023 13:58:45 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
ну так расскажите мне... чего я там не понимаю))
Вложение:
1-Wire.jpg [55.04 KiB]
Скачиваний: 61

:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Чт окт 26, 2023 14:29:14 
Мудрый кот

Карма: 25
Рейтинг сообщений: 486
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1786
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Подключите напр. 5 датчиков параллельно по одному проводу с одним резистором и эта функция понадобится. Датчики имеют уникальный адрес.

Ничего доп. из прогр. кода не добавляем, просто добавляем датчики параллельно (GND, DS, VDD).
Ниже: 3 датчика:

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Чт окт 26, 2023 15:20:56 
Друг Кота

Карма: -1
Рейтинг сообщений: 84
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8866
Откуда: .ru
Рейтинг сообщения: 0
SearchROM - функция поиска Датчика по уникальному адресу.
SearchROM - функция нужна если на общей шине 2 и больше датчика.

ну вот... всё ясно))
:tea:

а сразу нельзя написать понятно ? надо писать всякую хрень ? ))

"ничего в одноваре не понимаете"...
"Сам поймёшь"...
и т.д.

когда уже люди научатся писать нормальные комментарии))
:tea:

P.S.
спасибо, SearchROM мне не надо))
делать гирлянды из датчиков... я пока не планирую))
у меня по одному датчику на каждый МК... меня устраивает))
Вложение:
схема_PoE(5V2A)_AVR.jpg [171.8 KiB]
Скачиваний: 47

:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Чт окт 26, 2023 18:36:46 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -18
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 328
Рейтинг сообщения: 0
SearchROM - функция поиска Датчика по уникальному адресу.
SearchROM - функция нужна если на общей шине 2 и больше датчика.

Нет, это функция чтения ромкодов всех датчиков.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 115 ]  1, , , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y