а по уму, надо стратегию другую применить: почитай про алгоритм конечных автоматов.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
ROMan2947 Текстовку ставить под спойлер надо (выделяем текст - жмем Code, снова выделяем все что получилось/с окантовочными символами/ и жмем spoiler) - так основные тексты сообщений не будут загромождаться. А кому интереснт - откроют полный текст. Для контроля результата перед окончательной отправкой есть кнопа "предпросмотр".
Всегда следует придерживаться простого алгоритма создания вопроса на форуме: 1. описание того, что хочется 2. описание того, что сделано (и не только описание, но и демонстрация кода, схемы и т.п.) 3. описание того, что вышло с отличиями от п.1 каждый пункт должен быть конкретным, "светодиод мигает не раз 1 секунду, а раз в 10 секунд" - это конкретика, "светодиод мигает не так, как надо" - это хрень. только в этом случае вы можете надеяться на какие-то конструктивные ответы. в вашем конкретном случае без описания того, что и как у вас было, и что и как у вас стало после "прерываний" (с указанием того, что вы изменили в коде), никто ничего не посоветует дельного.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
распишу: если прерывание разрешено (как индивидуально, так и глобально) и установился его флаг (произошло вызывающее событие), то контроллер доделывает текущую инструкцию основного (кстати не обязательно основного, а вообще в любом месте, главное, чтобы условия соблюлись) кода и переходит на выполнение обработчика прерывания, выполнив его возвращается в ту же точку исходного кода и продолжает его выполнение (для этого в специальной области памяти, называемой стек, сохраняется адрес команды, к которой необходимо вернуться после завершения обработки прерывания). Чтобы меньше тревожить основной код, прерывания стараются делать быстроисполнимыми (короткий без циклов код). как тебе уже написали SEI (установка бита I) разрешил глобально прерывания, а вот чтобы разрешить его индивидуально, нужно установить бит, отвечающий конкретно за это прерывание (смотри ДШ на свой контроллер)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Да. Z_h_e, сию маску подставит сам ИДЕ (для того ему целевой МК и указывается)
Добавлено after 2 minutes 18 seconds: есть маска включенных прерываний, их надо включать, а ещё есть (вот, согласен немного напутал) таблица переходов - что она отправит именно на этот обработчик и она уже прописана - это я имел в виду
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Последний раз редактировалось Ivanoff-iv Пт фев 23, 2018 12:35:44, всего редактировалось 1 раз.
...скажем так будем считать что это предусмотрено...
Вам самому не надоело быть тыканным в собственные каки? Что вы там себе предусматриваете одному вам известно. Все остальные только догадываются. Прислушайтесь наконец к ARV.
нет, не пойдёт, но его флаг будет висеть до тех пор, пока прерывание не будет выполнено (ещё флаг можно сбросить принудительно, записав в его бит "1") и, если флаг ещё активен, то при разрешении прерывания оно тутже будет выполнено (даже если событие уже прошло)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
int main(void) { sei(); MCUCR=(1<<ISC01)|(1<<ISC00); GICR=1<<INT0;
while () {
} }
и \ Спойлер
Код:
//ISR(INT0_vect) // { // //помигаем и выйдем // }
int main(void) { sei(); MCUCR=(1<<ISC01)|(1<<ISC00); GICR=1<<INT0;
while () {
} }
в первом варианте:
1. регистрируется INT0 2. флаг поднят аппаратно 3. переходим в ISR(INT0_vect) 4. выполняем то, что в ISR(INT0_vect) 5. выходим из ISR(INT0_vect) 6. флаг прерывания очищается аппаратно 7. возвращаемся в while(1)
Прерывания то хорошо... С точки зрения учебна процессу... НО... Может сначала простой опрос события поставить, а когда все заработает привести к прерыванию? Или вообще использовать внутреннюю сетку частот, а с RTCтолько "обмен данными при необходимости"?
Или счетные импулься извне на таймер затащить... Однако там те же прерывания, только внутренние и с иным приоритетом...
там где нет обработчиков стоит ссылка на 0 адрес, а по этому адресу ссылка на RESET...
Добавлено after 1 minute 54 seconds: если вам считать события - задействуйте таймер, настроив его на счёт внешних событий, и можно быть уверенным, что он событие не пропустит
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
это самое начало кода (ассемблер и прошивка на языке МК): сначала (h00) ссылка на начало исполнимого кода(reset), потом ссылки на начала подпрограмм прерываний (h02 - int0, h04 - int1 и т.д....) эти ссылки стоят здесь жестко (при компиляции меняется записанный в них вектор) т.е при вызове инт0 контроллер прыгнет на 2е слово (1слово = 2 байта) прошивки (это железно в нём заложено) и прочитает там команду перехода на обработчик прерывания. распишу по кодевижну (думаю в других С компиляторах ненамного отличается): гдето недалеко от исполнимого файла есть папка "inc" в ней файлы по названиям микросхем, в них адреса перевода битов, регистров, переходов... для перевода с человеческого языка на машинный цифровой, покопайся, может станет понятней (только не меняй ничего), а ещё можно почитать книги, (наверно лучше или про устройство МК или по ассемблеру - он к железу ближе), (конкретных не посоветую, но думаю, сейчас коты помогут). пс: тот кусок, что я приводил - это перевод из С в ассемблер готовой программы (а потом уже он превращается в прошивку) - если открыть этот файл целиком, то можно увидеть, насколько много скрыто от С программиста
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения