запрещать прерывания в конце обработчика нет необходимости.
индикацию лучше полностью перенести в фоновый цикл.
Мерси за коммент! Индикация недоработана сознательно - буду адаптировать под конкретные задачи, это так база. В пределе она должна уметь автоматом выводить числа со знаками и плавующей точкой, символы… Только не нужно пока, а вычислений добавляется.
А каков смысл переноса индикации в фоновый цикл? Т.е. в обработчик прерывания, да? Что так, что так будет ресурсы отжирать. Только в основном цикле программы это можно делать хоть раз в секунду, а таймер крутится сильно быстрее. Сейчас у меня по таймеру только переключение светящихся светодиодов. А вычисления какому диоду светиться делаются в программе. Если вычисления опоздали, ну и ладно, второй раз то же число отобразится, никто и не заметит.
Да нет…, фоновый цикл это и есть основной цикл проги. Туда и пихаются все фоновые задачи (не критичные к времени реакции/исполнения). Дело в том, что даже разрешив прерывания в начале обработчика прерывания, несколько тактов (лень смотреть сколько) проц будет с запрещенными прерываниями. В принципе ничего страшного, но если можно это избежать, то лучше и не делать.
В принципе ничего страшного, но если можно это избежать, то лучше и не делать.
Да, пожалуй. Каждый оборот основного цикла может переключать знакоместо. И таймер можно для других целей освободить. Хороший коммент.
разрешив прерывания в начале обработчика прерывания
А вот с этим надо быть очень аккуратным! Если прерывание не успеет обработаться до возникновения его самого, и условия не изменятся - пожираем стек и падаем…
Да, еще… длинный код в обработчике можно выполнить примерно так:
PORTA=led_str[tim2cnt];
PORTB&=0xf0;
PORTB|=1<<tim2cnt;
if(++tim2cnt>=4) tim2cnt=0;
Ну это, так… косметика…
А вот с этим надо быть очень аккуратным! Если прерывание не успеет обработаться до возникновения его самого, и условия не изменятся - пожираем стек и падаем…
Провел эксперимент. Засунул в прерывание delay_ms(100) - т.е. задержку примерно на 40 циклов запуска этого прерывания. Все равно работает, зараза! Глотает другие прерывания, мерцает диодами, но машинками худо-бедно управляет. Как объяснить сей феномен?
Да, еще… длинный код в обработчике можно выполнить примерно так: PORTA=led_str[tim2cnt]; PORTB&=0xf0; PORTB|=1<=4) tim2cnt=0; Ну это, так… косметика…
Да, думал я это автоматизировать. Только все получались какие-то громоздкие и долгие конструкции. PORTB&=0xf0; в голову не приходило, мерси.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"460037883df9550077785849":{"_id":"460037883df9550077785849","hid":21558,"name":"Nick_Shl","nick":"Nick_Shl","avatar_id":null,"css":""},"471c4f2f3df9550077780685":{"_id":"471c4f2f3df9550077780685","hid":28640,"name":"Pavel_E","nick":"Pavel_E","avatar_id":null,"css":""},"47ce0c933df955007777d11e":{"_id":"47ce0c933df955007777d11e","hid":32219,"name":"msv","nick":"msv","avatar_id":null,"css":""}},"settings":{"can_see_ip":false,"can_report_abuse":false,"can_see_hellbanned":false,"forum_can_view":true,"forum_can_reply":false,"forum_edit_max_time":30,"forum_can_close_topic":false,"forum_show_ignored":false,"forum_mod_can_delete_topics":false,"forum_mod_can_hard_delete_topics":false,"forum_mod_can_see_hard_deleted_topics":false,"forum_mod_can_edit_posts":false,"forum_mod_can_pin_topic":false,"forum_mod_can_edit_titles":false,"forum_mod_can_close_topic":false,"can_vote":false,"forum_mod_can_add_infractions":false,"forum_topic_title_min_length":10,"forum_reply_old_post_threshold":30,"votes_add_max_time":168,"forum_show_post_interval":7,"can_see_deleted_users":false},"section":{"_id":"61c9a54c3df9550077bb50ba","hid":8,"title":"Самодельная электроника, компьютерные программы","parent":"61c9a54c3df9550077bb50f3","description":"Софт для моделирования и черчения, самодельные электронные устройства.","is_category":false,"is_votable":true,"is_writable":true,"cache":{"topic_count":2668,"post_count":48285,"last_post":"69396824b4761b70be1cf1f6","last_topic":"6936752c44153b3865eede83","last_topic_hid":572669,"last_topic_title":"Последовательность работы сервоприводов.","last_ts":"2025-12-10T12:31:32.140Z","last_user":"4f3e22e13df955007774805c"}},"topic":{"_id":"49d4614c3df95500779ccddf","hid":136741,"title":"Освоение Атмеги или кипит наш разум","views_count":5278,"last_post_counter":42,"cache":{"post_count":42,"first_post":"49d4614c3df95500779cd14d","first_ts":"2009-04-02T06:55:08.000Z","first_user":"471c4f2f3df9550077780685","last_post":"49e417103df95500779cd19f","last_post_hid":42,"last_ts":"2009-04-14T04:54:40.000Z","last_user":"471c4f2f3df9550077780685"},"st":1,"section":"61c9a54c3df9550077bb50ba"},"subscription":null,"pagination":{"total":42,"per_page":25,"chunk_offset":36},"posts_list_before_post":["paginator","datediff"]},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}