Поиск схем. Делимся схемами Если вы ищете схему телевизора, видеомагнитофона, игровой приставки - этот раздел для вас... |
20.11.2018, 14:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от Santil@
|
другая запустила индикацию с не понятными символами и всё.
|
Я компилирую для разных индикаторов два раза, сначала для ОА и переименовываю файл "Termometr_Atm8_CA.hex", затем ОК и файл переименовываю в "Termometr_Atm8_CC.hex", вероятно имена вышли наоборот.
|
|
|
|
20.11.2018, 14:38
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: Термометр на МК Atmega8
IOPA4, позволь дать совет...
Первое... В динамику нужно внести правки...
Гашение знакомест, запись сегментов, включение знакомест...
Ну, хотя бы так...
PHP код:
|
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTD = PORTD & 0x0F;// Здесь гасим
// Place your code here
PORTB = digits[led_buf[n]];
#ifdef CC
if (n==1) PORTB.7 = 1; else PORTB.7 = 0;
#else
if (n==1) PORTB.7 = 0; else PORTB.7 = 1;
#endif
PORTD = PORTD & 0b00000100 | sel[n]; // Здесь включаем
n++;
if (n==4) n = 0;
// TCNT0=0xA0;
}
|
Второе - самое главное!!! Все прерывания, на момент работы с Датчиком, нужно запретить.
Но, тут есть нюанс, Ваша библиотека написана так, что запрет прерывания для чтения датчиков - функция ds18b20_temperature () - затянет время запрета прерывания почти на 1 сек - Динамика прервется...
Если есть исходник библиотеки, то нужно запрещать прерывание на момент чтения и записи битов в ds18b20.
То что прерывание будет влиять на показания - проверенный и установленный факт, по другому и быть не может...
Кстати, ошибки эти видны и в Протеусе...
|
|
|
|
20.11.2018, 14:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Термометр на МК Atmega8
Добавил проверку корректности чтения данных с датчика, теперь при ошибочном чтении, через 100 мсек повторяется чтение данных с датчика.
|
|
|
|
20.11.2018, 14:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от IOPA4
|
Заглянули бы в исходники, прежде чем раздавать эпитеты
|
Ну, звиняйте, далеко их искать пришлось.
Только я не увидел исходников работы с DS18.
Сообщение от mimuh64
|
нужно запрещать прерывание на момент чтения и записи битов в ds18b20.
|
Да не нужно там ничего запрещать, просто аппаратно сделать: через таймер с DMA или UART с DMA. Если в выбранном МК нет DMA, то можно сделать на таймере с прерываниями.
Как в данном случае это реализовано, непонятно: исходников нет.
__________________
Смерть бандеровской мразоте!
|
|
|
|
20.11.2018, 15:06
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от eddy
|
Да не нужно там ничего запрещать, просто аппаратно сделать: через таймер с DMA или UART с DMA. Если в выбранном МК нет DMA, то можно сделать на таймере с прерываниями.
|
При такой реализации - нужно... Тем более нужно знать что такое mega8... и что там есть...
|
|
|
Сказали "Спасибо" mimuh64
|
|
|
20.11.2018, 15:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от mimuh64
|
Гашение знакомест, запись сегментов, включение знакомест...
|
Изначально было сделано так, как вы подсказали, но чтобы максимально ускорить динамическую индикацию, убрал все лишние телодвижения. Глаз это мерцание не заметит. DMA у Atmegа нет, но с помощью прерывания, процессы считывания и обновления LCD распараллелены. Пробовал запрещать прерывания во время чтения датчика, индикатор превращался в "стробоскоп". В послдней прошивке сбоев Proteus я так и не увидел. Проверьте вы, именно этот cof. В этой прошивке осуществляется проверка корректности и если сбой запрашивается вновь. При достижении 10 ошибок выходит из процедуры с ожиданием 0.5 сек.
|
|
|
|
20.11.2018, 16:28
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: Термометр на МК Atmega8
Блин... сейчас там длинный период опроса Вы установили... не хватит терпения...
Да... контроль по CRC устранит сбои, но не устранит частый запрос, если сбои происходят, то Вы опять запросите конвертацию показаний..., а это разогрев датчика. С такой библиотекой нужно уходить от прерываний и построить программу так, что бы это "блым" было только перед отображением. Все равно идет смена показаний. Поэтому затухание перед сменой показаний будет само собой понятное действие... Ну, как-то так...
|
|
|
|
20.11.2018, 16:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Термометр на МК Atmega8
Ну тогда еще вариант, информация при ошибочном чтении не обновляется, только когда корректное чтение. Т.к. ошибка может возникнуть не часто, думаю, что это оптимальный вариант. Нужно, чтобы ТС протестировал и отписался.
Последний раз редактировалось IOPA4; 20.11.2018 в 17:00.
|
|
|
|
20.11.2018, 17:23
|
|
Прописка
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от IOPA4
|
Т.к. ошибка может возникнуть не часто...
|
Ошибки будут возникать часто... У тебя там два прерывания... И еще ты увеличил частоту вывода знакоместа в несколько раз... Зачем?
Для интереса могу предложить такой вариант на 8 Мгц. Там опрос датчика частый - для примера (так нельзя делать)... Только ТС пусть конфигурацию правильно установит по ресету...
Последний раз редактировалось mimuh64; 20.11.2018 в 17:35.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо mimuh64 за это сообщение:
|
|
|
20.11.2018, 18:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.04.2016
Адрес: 82в.д.55с.ш.
Сообщений: 1,244
Сказал спасибо: 246
Сказали Спасибо 411 раз(а) в 244 сообщении(ях)
|
Re: Термометр на МК Atmega8
Сообщение от eddy
|
Не нужно ожидать от DS18 точности выше 0.5°C, не способны они на это! Даже если откалибруете, все равно через некоторое (сравнительно небольшое) время они пойдут вразнобой.
|
Меня устроит и +/- 1 град., ну а если будет +/- 0,5 град. то это будет ещё лучше. Я хочу сделать термометр не для того, что бы контролить запредельные минусовые температуры азота или "домашней сталеплавильной печи", а для того что бы применять этот термометр на даче.
Последняя прошивка из поста №66
Фьюз: м: 0xE4 с: 0xD9
Результат.
Знак минус более не светится. Реакция на кнопку выбора датчика такая: нажал, светодиод переключился показания сменились с маломальской задержкой и тут же происходит возврат к пред идущим показаниям и включению пред идущего светодиода; для того что бы показания зафиксировались от другого датчика необходимо нажать кнопку три раза. То есть: нажал кнопку индикация сменилась вкл. HL1, через 1 секунду индикация возвращается и вкл. HL2, и так нужно сделать ровно три раза после чего фиксируется индикация от другого датчика. Иногда получалось так, что после двух нажатий на кнопку фиксировались показания от другого датчика.
Фото осциллограмм.
Фото 1. Между одной парой пачек данных по фронту 848 ms.
Фото 2. Между двух пар пачек период 11,2секунды.
Сейчас по пробую остальные самые свежие прошивки.
у меня схема с общим КАТОДОМ.
Последний раз редактировалось Santil@; 20.11.2018 в 18:53.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:05.
|
|