Снова вопрос , снова часы.
Где то прочитал, человек пишет - "что не делаю, получаются часы".
Что имееем:
На таймере 2 организована динамическая индикация для матрицы светодиодов.
DS1307 и DS18B20 работают совместно без проблем.
Попытался добавить RC5. И здесь засада - всё перестаёт работать.
Я так понимаю, что таймер 0 используется и для DS18B20, и для RC5.
Переназначить RC5 на таймер 2 не могу, он занят.
Как заставить работать DS18B20 и RC5 одновременно?
Какой выход может быть - вот в чём вопрос?
RC5, DS18B20 и динамическая развёртка на Timer2
Сообщений 1 страница 11 из 11
Поделиться12013-03-18 11:45:06
Поделиться22013-03-18 12:07:57
А если перекинуть индикацию на Timer 1?
Поделиться32013-03-18 12:18:25
Я уже не помню, но почему-то Timer 1 мне не подошёл...
Вспомнил, он 16-разрядный, у меня при переполнении и при совпадении есть действия - регулировка яркости и т.д.
Может и придётся переносить, если другого решения не найду.
Поделиться42013-03-18 15:53:50
Если DS1307 и DS18B20 работают через аппаратный TWI, то они не должны использовать таймер.
При использовании штатных ног SCL и SDA нужно просто подцепить аппаратную библиотеку:
DS1307 висит на PD0, PD1 ATbanned28. Т.е. используется аппаратный режим, попробую прицепить аппаратную библиотеку.
А вот DS18B20 - висит на PG2. Что с термометром, для него тоже нужно специальное подключение и аппаратная библиотека?
Поделиться52013-03-18 16:08:15
Если DS1307 и DS18B20 работают через аппаратный TWI
Разве 1Wire согласуется с I2C на уровне протокола?
На UART теоретически можно повесить (с компом прокатывает, может и с MK этот трюк сработает), но насчет I2C, есть сомнения.
Поделиться62013-03-18 17:07:55
Для 1Wire нигде не указано, что он использует таймер, хотя как-то время замеряет.
Вполне возможно что используются циклы для формирования требуемой задержки, примерно как в функции Waitus.
Поделиться72013-03-18 17:13:21
Получается, что лучше всего использовать MODE=BACKGROUND.
В таком случае не будет тратится время в основном цикле программы.
Поделиться82013-03-19 05:07:32
RC5 использует по умолчанию Timer 1, может в
этом проблема? И попытка его использовать в других
целях и ведёт к конфликту.
А об DS18B20 уже сколько народу мозги сломало, а
тут всё просто. Уменьшите разрядность, работайте с ней в
паузах, когда ближайшие 1-2мсек будут свободны.
И разделите работу с ней на два этапа, запуск преобразования
и считывание . Запустили преобразование и на секунду - другую
забыли, затем считали результат и через время снова запуск.
Поделиться92013-03-19 10:11:26
А об DS18B20 уже сколько народу мозги сломало, а
тут всё просто. Уменьшите разрядность, работайте с ней в
паузах, когда ближайшие 1-2мсек будут свободны.
И разделите работу с ней на два этапа, запуск преобразования
и считывание . Запустили преобразование и на секунду - другую
забыли, затем считали результат и через время снова запуск.
Я так и делаю.
Через каждые 5 секунд - запуск на преобразование, затем через 5 - считывание и расчёт.
Один замер в 10 секунд.
Для домашних условий больше и не нужно. Температура так быстро всё равно не будет меняться.
Поделиться102013-03-20 01:15:58
MODE=BACKGROUND работает.
На таймере 1. Таймер 3 не компилируется, выдаёт ошибку - нет GIFR3.
Вообщем Баском - это сила!
Всё никак руки не доходят взяться по серъёзному, но и такие успехи меня радуют.
У меня девайс на 1024 светодиода - 8 регистров TPIC6C595, 16 полевиков.
ИК пульт, регулировка яркости с помощью фоторезистора, кнопки, датчик температуры, часы реального времени, связь с ПК через ЮСБ(тут Тинька 2313 стоит), на ней же бутлоадер. Всем этим рулит Мега128, и занято пока 9% памяти. Теперь остаётся самое интересное - эффекты писать. Да, это часы, если что. 
Поделиться112013-03-20 05:46:47
Да, это часы, если что.
А я то уже подумал что LED телевизор собираешь)))
Похожие темы
| Датчики температуры | Путеводитель по Форуму | 2022-02-18 |