делать это быстрее всего уже привычно выглядящими для коллег блоками.
понятно, просто простыня длинная...вот и свернул... (действительно, надо было самую исходную портянку выкладывать) так я и пытаюсь сделать код более привычным, понятным и универсальным.
Siarzhuk писал(а):
О каком программисте речь?
Конечно задокументирую, когда конечный результат получу и проведу испытания
Siarzhuk писал(а):
скрытый переход внутри макроса - это волчий билет для автора
а я вам и не предлагаю с ГОТОй - если внутрь цикла (или ветвления) его не вставлять - всё ОК, а если вставить - оператор брейк путается и кидается не на того... (завершает цикл вместо кейса). но боюсь, что чтобы обойти такой прикол -всётаки ГОТО будет другого варианта пока не вижу так то брейк - тотже гото, только более автоматизированый (сам себе цель выбирает)
Добавлено after 2 minutes 36 seconds: над Вашим, Siarzhuk, вариантом кода подумаю.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
среда - кодевижен, камни - конкретно этот код идёт под тини2313, но и в меге 8 работает.
Тогда конкретно не подскажу. В общих чертах - сохраняйте точку возврата (она будет адресом следующей инструкции) и возвращайтесь по return из функции. Затем, чтобы войти обратно, используйте эту точку. Первый вход - адрес функции. Но учтите, если не будете манипулировать с сохранением стека (а это реально геморрой, ибо нужно отводить под каждый поток свою область памяти), то об использовании локальных переменных между вызовами можете забыть. В принципе, это не проблема - юзаем статические переменные.
Добавлено after 2 minutes 46 seconds: ПыСы: Советую Вам поюзать OSA, тогда поймёте принцип распараллеливания задач и входа/выхода из них.
Добавлено after 6 minutes 18 seconds: ПыСы2: И ещё. Ооооочень настоятельно рекомендую Вам пересмотреть реализацию своего кода и перенести бОльшую часть в основной цикл. Не нужно его экономить, наживая себе гемор...
OSA - изучаю, принцип распараллеливания понятен. про стек - понимаю, потому и делаю всё локально внутри функции как добыть точку возврата? по номеру метки или абсолютный адрес сохранять? а если кто его испортит (хотя посторонних там быть не должно ) тот диспетчер, который я приводил - он тоже под тиню делался. думаю что постепенно уйду в OSA - алгоритм многопоточности мне близок, я итак делаю чтото подобное, но с профи мне не тягаться
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
на сколько я знаю у АВР этот регистр (PC- программ каунтер) недоступен напрямую, да и в его лезть, это почти как под поездом стрелки переводить...
Добавлено after 1 hour 18 minutes 19 seconds: ещё можно всю обработку сделать в майне - крутись она там, а в прерывании оставить лишь таймеры - в этом случае скорость выполнения кода вырастет, но предсказуемость по времени выполнения команд снизится...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
а спать - если все счётчики!=0 опять же их проверять, хотя.. когда по всем счетчикам пробежимся, проверяя на равенство - ответ сам и получится, складно..., ладно, завтра подумаю... сегодня рабдень кончился
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
про стек знаю - там продолжение вопроса было. а про размещение в майне - код при прочих равных длиннее будет (счетчики по 2 раза проверять приходится)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
вы можете хотя бы в общих чертах обрисовать задачу, которую решаете? ну не укладываются у меня в голове ваши методы решения с тем, что я сам себе представляю... нужны пояснения.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Далее можно объявить: extern void xx_wo_inc (void); и вызывать эту функцию, т.е. на самом деле "прыгать" в середину другой функции. Вот во что это скомпилировалось:
lds r24,xx_var tst r24 breq .L3 sts xx_var,__zero_reg__ .L3: ret
Т.е. все нормально - можно безболезнено вызывать xx_wo_inc (). Но это очень простая функция и здесь все получилось. Вообще говоря, "вход внутрь функции" - идея странная, я без о-о-о-о-о-очень больших оснований бы так не делал никогда, и Вам не советую.
Добрый день, есть enum который будет использоваться в в нескольких файлах подскажите пожалуйста как его объявить? Так как дублирование typedef запрещено, пока нашел вариант и создать хедер и объявить в ним пользовательский тип. Подключать там где надо. есть ли еще варианты?
скорее, это точка входа, если я правильно понял то, что вам надо:
умение объяснять (особо письменно) хоть и развивается, но пока не сильная моя сторона мне не надо бэкдор в функцию, хотя... теоретически этот вариант впринципе тоже возможен если флеш придётся жестко экономить... а как тут происходит работа со стеком и видимостью переменных? я предпочитаю прыгать безопасно - только внутри подпрограммы "горизонтально", чтобы очередность стека не нарушить (входить как природой средой программирования задумано а уже потом шалить ). ——————————————— ARV, сейчас практических задач не стоит - собранный таким алгоритмом прибор исправно трудится в холодильнике: в тиню2313 запихнул дин.индикацию, работу с кнопками (антидребезг и комбинации) опрос термодатчика (его опрос и выкладывал в примере), таймеры (чтобы компрессор не мог включаться слишком часто, плавная регулировка яркости по конечнику двери (или датчику освещенности), меню для настройки рабочих температур, хотел добавить таймер, чтобы уменьшить потребление дорогого дневного электричества (но счетчик там оказался однотарифный). есть и другие поделки сделанные так и не только на тинях. просто (пока есть свободное время) решил осмотреться и поприбраться...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ничего общего с setjmp()/longjmp(). Вообще не понимаю, почему у Вас возникла такая ассоциация
ну вот почему:
viiv писал(а):
т.е. на самом деле "прыгать" в середину другой функции
вы предложили способ без применения setjmp.h сделать то же самое: из середины одной функции прыгнуть в середину другой. по-моему, общее с setjmp есть
Ivanoff-iv писал(а):
решил осмотреться и поприбраться...
вот я и не понимаю, почему вместо причесывания кода в приличной манере вы пытаетесь освоить какие-то грязные хаки... имхо, лучше структурного программирования для Си не придумать. конечный автомат хорош, когда количество состояний небольшое. поэтому вместо наворачивания всего в один конечный автомат правильнее разбивать алгоритм на несколько маленьких. и, разумеется, распределять задачи между главным циклом и прерываниями - может, тогда и потребности в бесконечных автоматах не возникнет
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения