Клуб DiyAudio
Разное и полезное => Микроконтроллеры и их программирование => Тема начата: Злой от 27 Февраля 2017, 18:28:20
-
Осваиваю микроконтроллеры и уперся в спящий режим. В общем сделал индикацию к Болеро, все работает, но хочется еще и в сон контроллера отправить, хоть и не фонит, но все же. Отправить то несложно, а вот как разбудить в нужный момент. Частота и битность приходят в виде двоичного кода и привязать смену кода к прерыванию это или еще один микроконтроллер вешать :laugh: или нехилую схему на логике, то есть от чего ушел :wall:. Или еще один проект, регулятор Никитина, при повороте потенциометра меняется код на выходе АЦП, если микроконтроллер спит, то и вроде как некому следить за сменой кода, не ставить же отдельную кнопку, что бы будить его.
-
Злой, единственное решение - пробуждение по таймеру. Однако такой вариант тебя не устроит ибо просыпающийся и щасыпающий контроллер будет шуметь больше просто работающего.
-
Ренат, про таймеры читал, да тут не вариант, даже если и будет небольшой шум от контроллера, то лучше уж постоянно, чем через равные промежутки всплески. и опять же смотрел осциллографом, что то на уровне шумов прибора и это с проводами с полметра от ИП до стаба и сантиметров 20 от стаба, до платы.
-
А разве нет варианта просыпания по "дерганию" входов?
и добавил...
В Ардуино вроде бы есть что-то подобное http://arduino.ru/Reference/AttachInterrupt
Сам счас курю нечто подобное, пока бардак в голове...
-
А разве нет варианта просыпания по "дерганию" входов?
Есть конечно, но кто будет ногу дергать?не ставить же отдельную кнопку, что бы будить его.
С энкодером что то наверное можно придумать, но ведь делают и с потенциометром :d_know: :d_know:
-
Есть конечно, но кто будет ногу дергать?
Ну как же.... как только поменялась информация на входе (на любой из ног от Болеро), МК просыпается, выводит новую инфу - и баиньки. Я так планирую делать ;-[
и добавил...
С учетом того, что дисплей имеет свою память, то все вполне логично, имхо конечно.
-
Если уводить МК в глухую несознанку, то внешних прерываний всего два - с любой ноги оно не просыпается.
-
с любой ноги оно не просыпается.
Т.е. от внутренних прерываний он не проснется?
-
с любой ноги оно не просыпается.
Т.е. от внутренних прерываний он не проснется?
Внутренние прерывания суть таймеры, и к ногам отношения не имеют.
У AVR три режима спячки:
Power-Down - вырубается ВАЩЕ ВСЁ, даже тактовый тенератор, пробуждается пинком в INTx
ADCNR - останавливается почти все, кроме АЦП и сотоварищи, дабы шумами не мешать последнему обделывать свои грязные делишки. Просыпается либо по внешке, либо по окончании отработки АЦП (что суть тоже прерывание)
Idle - гасится ядро и память, все остальное (таймеры, ШИМы, и прочая требуха) продолжает бодро шуршать и переливаться. Приходит в себя по любому из значимых событий.
Любой режим сна может стать вечным при неправильно настроенных векторах. Из любого режима сна гарантированно выпинывается правильно настроенным WDT, бо последний к системному клоку отношения не имеет.
Длительность события прерывания (если это не фронт) должна быть не менее 10 системных тактов, иначе прерывание не засчитывается.
Как-то так.
-
либо по окончании отработки АЦП (что суть тоже прерывание)
при чем опять же считанное значение (поменялось/не поменялось) не важно.
даже если и будет небольшой шум от контроллера
не будет. точнее если и будет - далеко за гранью восприятия
и добавил...
и опять же смотрел осциллографом
и как люди шумы смотрят? мы тут милливольтный кардиосигнал посмотреть не можем... при том что контроллер "шумящий" с ацп, который опять же дико шумит по spi с периодичностью в 0.5мс отлично видит десятки микровольт :cr:
-
Althair, спасибо, разжевал.