простые интересные РАДИОСХЕМЫ сделанные своими руками

» Гость

Мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизируйтесь!





» ДАТАШИТЫ
Например: TDA1562

» СХЕМЫ


Отметить прочитанными   -   Поиск   -   Правила   -   Новые сообщения

Страница 6 из 7«124567»
Модератор форума: Электродыч, Витинари, Sam 
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Помогите с направлением (программирование микросхем)
Помогите с направлением (программирование микросхем)
Пт, 09.12.2016, 15:30 | Сообщение # 51        
Тёмыч
аватар
  Постов: 1362  Offline Друзья 
caha2011, спасибо, посмотрел, правда ни чего нового не увидел sad
Цитатаcaha2011 ()
правда в CodeVision

в этой программе и пишу.
Пт, 09.12.2016, 15:40 | Сообщение # 52        
msmmmm
аватар
  Постов: 613  Offline Друзья 
Тёмыч, подключение датчика 2-х или 3-х проводное?
Пт, 09.12.2016, 15:59 | Сообщение # 53        
Тёмыч
аватар
  Постов: 1362  Offline Друзья 
msmmmm, 3-х проводное
Пт, 09.12.2016, 16:12 | Сообщение # 54        
msmmmm
аватар
  Постов: 613  Offline Друзья 
Тебе таймер не нужен.
Из даташита:
"Если DS18B20 питается от внешнего источника питания, главное устройство может считывать
состояние шины после команды Конвертирования температуры [44h]. Если на шине логический «Ноль» -это значит, что DS18B20 выполняет температурное преобразование. Если на шине логическая «Единица» – это значит, что преобразование окончено и можно считывать данные.""
Разделяешь функцию float ds18b20_temperature(unsigned char *addr) на 2 части - запрос и считывание данных. Запрос отправляешь когда нужно и ставишь где-нибудь глобально флаг, а в цикле динамической индикации проверяешь флаг; если установлен, проверяешь состояние линии; если оно 1 - сбрасываешь флаг и считываешь и используешь данные.

Добавлено (09.12.2016, 16:12)
---------------------------------------------
Задержку, естественно, выбрасываешь

Пт, 09.12.2016, 16:17 | Сообщение # 55        
Тёмыч
аватар
  Постов: 1362  Offline Друзья 
Разделять таким образом?

float ds18b20_temperature(unsigned char *addr)
{
unsigned char resolution;
if (ds18b20_read_spd(addr)==0) return -9999;
resolution=(__ds18b20_scratch_pad.conf_register>>5) & 3;
if (ds18b20_select(addr)==0) return -9999;
w1_write(0x44);
}

здесь что написать?
{
if (ds18b20_read_spd(addr)==0) return -9999;
w1_init();
return (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;
}

сильно не пинайте, только начинаю по тихоньку разбираться, и то если пережуют и в рот положат smile
Пт, 09.12.2016, 16:22 | Сообщение # 56        
msmmmm
аватар
  Постов: 613  Offline Друзья 
smile Почитай пока, что такое функция и с чем ее едят, я ближе к ночи подправлю.
Пт, 09.12.2016, 16:26 | Сообщение # 57        
Тёмыч
аватар
  Постов: 1362  Offline Друзья 
Спасибо большое буду ждать исправлений smile
Сб, 10.12.2016, 00:45 | Сообщение # 58        
msmmmm
аватар
  Постов: 613  Offline Друзья 
Извини, цейтнот, только с работы приехал. В первой функции нет возврата в случае нормальной передачи команды запроса преобразования, во второй нет объявления самой функции, ну и проверки линии, нужно будет дописать. Да и определение разрядности преобразования температуры из первой во вторую перенести. В общем перепахать нужно хорошо. Но уже не сегодня.
Сб, 10.12.2016, 18:13 | Сообщение # 59        
Тёмыч
аватар
  Постов: 1362  Offline Друзья 
msmmmm, Спасибо если у Вас найдётся на меня время то будет очень хорошо smile , так как больше помочь не кому sad

Добавлено (10.12.2016, 18:13)
---------------------------------------------
Попробовал сделать так:


И в программе вызывать таким образом:


толку мало, циферки всё равно начинают бегать... sad

Вс, 11.12.2016, 00:22 | Сообщение # 60        
msmmmm
аватар
  Постов: 613  Offline Друзья 
Тёмыч, выложи свою библиотеку "1wire". Даташит на датчик туманный, потом указывается, что не просто состояние линии проверять нужно, нужно формировать слот времени чтения одного бита, он должен быть в этой библиотеке. Работает этот режим с параллельным подключением датчиков или нет, я так и не понял, вроде бы и запрета нет, но и явно не сказано. Надо пробовать.
Если динамическая индикация стабильная, можно отсчитывать время преобразования по ней. Так же - дать запрос в программе, а в цикле динамической индикации включить по флагу счетчик, после необходимого количества циклов ДИ считать датчик. Сможешь измерить период ДИ? Я с CodeVision не работал, там отладчик нормальный?

Добавлено (11.12.2016, 00:22)
---------------------------------------------
Читал вчера на работе эту тему, коллега совет дал: есть светодиодные индикаторы с драйверами. Работать как с ЖК - отправил данные и все, дальше драйвер занимается. Как вариант, если нужно срочно и без экспериментов. Если охота разобраться с тем, что есть - попробуем. И не такое делали и не сделали biggrin .

Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Помогите с направлением (программирование микросхем)
Страница 6 из 7«124567»
Поиск:
Кто есть кто на форуме радиолюбителей: Администратор Модераторы Друзья Пользователи
Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2018, "Радиосхемы". Все права защищены. Почта