Все что нужно - это таймер. А аппаратный шим или самому в прерывании по совпадению таймера ногой дернуть - пофиг.
аппаратный шим или самому в прерывании по совпадению таймера ногой дернуть - пофиг.
Это только если не задействованы никакие другие прерывания.
Про другие прерывания - в точку! В прерываниях по таймеру кнопки опрашиваются и выводится динамическая индикация на семисегментник. Возможно, там же получится и генерировать ШИМ. Или проще посчитать пустое время основного цикла, и пол секунды, при необходимости, управлять сервой. На всякий случай выкладываю полный текст проги.
Кстати, можно и питание серве отключать на время, когда ей не нужно менять положение. Тогда и дрожать впустую из-за джиттера она не будет 😉
В проге есть подпрограмма вывода на дисплей… померь сколько времени проходит от обращения до обращения к ней … наверняка 20мс±… не больше, иначе мерцание будет… вот сразу в ней перед выходом и воткни цикл по поднятию-опусканию ноги на рассчетное время… на работоспособности девайса лишняя 1-2мс не повлияют…
Только при расчете длины импульса введи небольшой гистерезис, чтобы серва не дрожала, как сказали выше…
на работоспособности девайса лишняя 1-2мс не повлияют
Весь рабочий диапазон ширины импульса как раз составляет 1 мсек - от 1 до 2 мсек. Так что поднимать ногу еще можно раз в 20 мсек с плюс-минус парой мсек, а вот опускать ее надо в очень точно выверенный промежуток времени после поднятия. С нормальной сервой разница в пару мксек уже будет давать дрожание сервы.
1-2мс - это и есть диапазон поднятия-опускания ноги который нужно считать… я говорю что на общий цикл этот довесок не повлияет
Это только если не задействованы никакие другие прерывания.
Никто не мешает запретить другие прерывания, когда это нужно. А всякая некритичная ко времени фигня типа семисегментника и кнопок - может обрабатываться впору хоть в основном цикле или во время 20мс паузы. Ксто смотрел код “самодельного передатчика” - там вобще всего одно прерывание. 😃 Работает же. 😃
Да можно, конечно, кто спорит? Все можно, даже на мелкой логике собрать 😃
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"416128d73df9550077793889":{"_id":"416128d73df9550077793889","hid":4637,"name":"Aleksey_Gorelikov","nick":"Aleksey_Gorelikov","avatar_id":null,"css":""},"423050103df9550077791c4d":{"_id":"423050103df9550077791c4d","hid":6402,"name":"mikki","nick":"mikki","avatar_id":null,"css":""},"4b213a353df955007776706c":{"_id":"4b213a353df955007776706c","hid":57823,"name":"Fotilla","nick":"Fotilla","avatar_id":null,"css":""},"4d3f787c3df9550077756e26":{"_id":"4d3f787c3df9550077756e26","hid":79334,"name":"AndyBig","nick":"AndyBig","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":2667,"post_count":48274,"last_post":"6757f71af9bb00ab89de832d","last_topic":"6757f71af9bb00ab89de832c","last_topic_hid":572572,"last_topic_title":"DVB-T2 для FPV видео","last_ts":"2024-12-10T08:08:58.227Z","last_user":"5b0062d13df95500776fe377"}},"topic":{"_id":"4ebea52c3df9550077460541","hid":254952,"title":"Программный ШИМ управления сервой на PIC16F628A","views_count":5203,"last_post_counter":20,"cache":{"post_count":20,"first_post":"4ebea52c3df95500774613df","first_ts":"2011-11-12T16:56:12.000Z","first_user":"4b213a353df955007776706c","last_post":"4ec19be43df9550077461405","last_post_hid":20,"last_ts":"2011-11-14T22:53:24.000Z","last_user":"4d3f787c3df9550077756e26"},"st":1,"section":"61c9a54c3df9550077bb50ba"},"subscription":null,"pagination":{"total":20,"per_page":25,"chunk_offset":11},"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"}