Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.07.2008, 01:33
|
|
Вид на жительство
Регистрация: 17.07.2007
Сообщений: 384
Сказал спасибо: 65
Сказали Спасибо 156 раз(а) в 84 сообщении(ях)
|
Управление по расписанию
Не знал где разместить эту тему, тк это часть системы безопасности, хотя вопрос больше относится к програмной части... Проэкт на АВР.
Вобщем к делу. Мне надо организовать такой прибор, который делает чтото в соответсвии с рассписанием, которое нужно менять с компа через сом например. Вобщем контроллер должен посылать команды на ножки в если в неком списке на это время это действие запланировано. Но проблема в том, что рассписание должно быть расчитано на неделю, а то и больше, кроме того. в основное время контроллер занят другими делами.
Я думаю что надо сделать так: добавить еще контроллер, который будет работать с внешней микросхемой- часами+ микросхемой памяти, в которой и содержится даный список, либо использовать внутреннюю память, но сколько ее надо? этот контроллер при совпадении событеем из списка с временем от часов будет давать прерывание на основной контроллер, с кодом действия для выполнения. Как организовать доступ к этой памяти? Какой контроллер (с внутренней памятью) с этим справится? Может у вас какието другие идеи? Что думаете?
Еще раз в кратце: Есть контроллер, который занят своими делами. Есть рассписание, по которому этому контрллнру надо действовать (по времени). Рассписание нужно иметь возможность менять с компа.
Как это все организовать? Интересует сам принцип работы. А так же структурная схема устройства.
Заранее всем благодарен.
|
|
|
|
06.07.2008, 01:45
|
|
Прописка
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Я бы присобачил и2с таймер pch8583, в который заливали бы нужное время в будильник, при наступлении события ножка часов дергала бы пин авр и тот записывал бы следующее время для срабатывания. Что-то типа такого.
|
|
|
|
06.07.2008, 01:54
|
|
Вид на жительство
Регистрация: 17.07.2007
Сообщений: 384
Сказал спасибо: 65
Сказали Спасибо 156 раз(а) в 84 сообщении(ях)
|
а список где хранить?
|
|
|
|
06.07.2008, 02:04
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
|
А список сохраняйте в энергонезависимой памяти (EEPROM), которая имеется в достаточном количестве в АВР микроконтроллере. Например, ATmega8 имеет 512 байт ЕЕPROM на борту. Этого вполне достаточно, чтобы сохранить расписание включения/выключения обьекта на неделю с трехминутной гранулярностью. Например, если отталкиваться от десятиминутной гранулярности, то вам нужно 126 байт (7 дней * 24 часов в сутки * 6 десятиминуток в часе / 8 бит в байте = 126 байт).
|
|
|
|
06.07.2008, 02:40
|
|
Вид на жительство
Регистрация: 17.07.2007
Сообщений: 384
Сказал спасибо: 65
Сказали Спасибо 156 раз(а) в 84 сообщении(ях)
|
дело в том, что действие не одно, их примерно 10 разных, для каждого нужно: врямя(число(день, месяц, год) время(часы мин сек) код операции) итого запись:
06.07.08.01.34.50.01 это 14 байт. В 128 байтную память 9 записей поместится... а мне надо намного больше. Может флешку использовать? И на комп оперативно переносится!
|
|
|
|
06.07.2008, 10:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Сообщение от l-e-o-n-a-r-d-o
|
дело в том, что действие не одно, их примерно 10 разных, для каждого нужно: врямя(число(день, месяц, год) время(часы мин сек) код операции) итого запись:
06.07.08.01.34.50.01 это 14 байт. В 128 байтную память 9 записей поместится... а мне надо намного больше. Может флешку использовать? И на комп оперативно переносится!
|
Если ЧРВ будут на И2С, то логичнее всего на нее повесить и память, например 24СХХХ
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
06.07.2008, 10:57
|
|
Прописка
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
флэшку использовать накладно программно, а вот раз ставим и2ц таймер, то логично использовать такую же еепром. Тока вот нюанс - адреса у них совпадают, так что придется у таймера ногу А0 цеплять на +5 В, а не на 0. И не забывать, что вывод INT - открытый коллектор и ему нужна подтяжка. И использовать лучше не программный, а аппаратный и2ц с прерыванием - если время работы этой связки критично
|
|
|
|
06.07.2008, 16:09
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
|
Цитата:
|
Дело в том, что действие не одно, их примерно 10 разных, для каждого нужно: врямя(число(день, месяц, год) время(часы мин сек) код операции) итого запись:
06.07.08.01.34.50.01 это 14 байт. В 128 байтную память 9 записей поместится...
|
Уф! 14 байт это сильно круто. Можно то же самое поместить в 4 байта. Тогда в память поместится больше записей. Вот пример: для представления времени используйте количество секунд начиная, например, с 2000.01.01. Только для этого потребуется загнать календарные правила в прошивку, но это не сильно сложно, просто учитывать высокосные года, кол-во дней в месяце и т.д. В сети можете найти код, который это делает, самый яркий пример, реализация Си функций mktime и gmtime. Если у вас Си компилятор поддерживает эти функции, то будет достаточно ими воспользоваться (вызвать их). Если нет, то смотрите сюда:
Реализация:
http://www.raspberryginger.com/jbail...8c-source.html
http://www.raspberryginger.com/jbail...8c-source.html
Документация:
http://www.cplusplus.com/reference/c...me/gmtime.html
http://www.cplusplus.com/reference/c...me/mktime.html
|
|
|
|
06.07.2008, 21:48
|
|
Вид на жительство
Регистрация: 17.07.2007
Сообщений: 384
Сказал спасибо: 65
Сказали Спасибо 156 раз(а) в 84 сообщении(ях)
|
я тут подумал, что впринципе действия будут вполне периодичны днями, это значительно облегчит мне жизнь(всмысле алгоритм). Ладно, задача чуть меняется(упрощается): в сутки есть перечень задач по расписанию, задач около 10-20(предположим максимум 99), но опять таки по времени и с возможностью изменения с компа. Тогда, вполне логично отсчитывать секунды, или десятки секунд. А преобразование идет на самом компе в качестве пользовательского интерфейса(зачем контроллер непрягать)) ) Положим роль планировщика отдельному контроллеру, который будет ити по внешним часам, и 5-6ю пинами конектится к основному, и будет в нужное время вызывать прерывание основного.
Критикуйте. Есть пример использования по и2ц с часами реального времени? (я с и2ц еще не работал)
|
|
|
|
06.07.2008, 22:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Сообщение от l-e-o-n-a-r-d-o
|
Критикуйте. Есть пример использования по и2ц с часами реального времени? (я с и2ц еще не работал)
|
Примеров реализации шины I2C для различных МК на различных языках, великое множество, в основе, все-равно лежат низкоуровневые процедуры работы с шиной(универсальные для всех устройств), Освоив их, Вы с легкостью интегрируете на шину любое устройство.
ЗЫ все ищется в сети, на "раз"
На конкретном МК не зацикливайтесь, алгоритм общий...
ЗЗЫ и на этом форуме, по этой тематике, полно информации.
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:09.
|
|