Раз переживаешь за авторские права на свой алгоритм (хотя кому он без аппарата нужен?) можешь создать синтетический тест (мигать лампочками по условиям, опрашивать кнопки, конечники) выложить сюда правила, реализованные в алгоритме и сам алгоритм, я постараюсь тоже по твоим условиям написать алгоритм (может ктото ещё захочет...) и сравним подходы, их плюсы и минусы...
Напоминаю: в данной ветке решается вопрос не с моим "секретным" кодом, а с реализацией Delay_MS. Заниматься своими проектами с кем-либо со стороны, мне не интересно, от слова совсем! Да и времени на подобное сравнение просто жалко. Для чего это будет нужно мне не понятно. Вы не имеете на руках механики, значит у вас не будет не одного шанса подогнать настройки до полной работоспособности, не говоря уже о полной имитации работы оригинала! Свой проект я привёл как красноречивый пример, лишь для понимания того, за чем бывает нужен Delay_MS на ассемблере. СИ-шники delay во все дыры вставляют, а тут пришлось доказывать потребность.
Цитата:
...диспетчер задач
Угу! R-TOS ковырять там где он совсем не нужен. Спасибо, совсем не интересно этим заниматься в рамках моего проекта. Да и вообще офигенный подход - человек определил, что ему нужна пилка по металлу, а ему предлагают плазменный резак за 3 лимона! Был бы нужен R-TOS, я б в другой ветке спросил. Так понятно?
Цитата:
опрос периферии на хлеб не намазывается, это всего лишь опрос периферии и не более а важно то, что ты с полученной инфой будешь дальше делать
Простите, что куда не намазывается? Это вы сейчас зачем и с какой целью? Если думаете, что я не понимаю что со своими данными делать надо, то как у меня вообще что-то работает?
_________________ Если в голове каша, значит ваш котелок варит!
А ничего, что этот "лазерный станок" в тини2313 уместился, да ещё места и производительности для работы с SD картой, воспроизведения музыки, опроса кнопок и мигания светодиодами хватило?
Добавлено after 6 minutes 24 seconds: если что, то я и в С программные задержки допускаю только на этапе начальной настройки (до цикла "майн") и микросекундные для эмуляции интерфейса в остальной части кода.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
А ничего, что этот "лазерный станок" в тини2313 уместился, да ещё места и производительности для работы с SD картой, воспроизведения музыки, опроса кнопок и мигания светодиодами хватило?
А ничего, что вы протрещали три страницы так ни фига и не сделав? А теперь поздно, у меня всё готово! Только языком ля-ля-ля и на 27КБ-ми ха-ха-ха!
От болтовни пустомель к делу:
Макро-определение: Спойлер.macro DELAY_MS LDI Delay4,BYTE4(@0*XTAL/1000/6) LDI Delay3,BYTE3(@0*XTAL/1000/6) LDI Delay2,BYTE2(@0*XTAL/1000/6) ; НАСТРОЙКА ; LDI Delay1,BYTE1(@0*XTAL/1000/6-2) ; для 4'000'000 Гц (-2) + 5-и nop в функции (10мС=40000) ; LDI Delay1,BYTE1(@0*XTAL/1000/6-2) ; для 8'000'000 Гц (-2) + 3-и nop в функции (10мС=80000) LDI Delay1,BYTE1(@0*XTAL/1000/6-2) ; для 16'000'000 Гц (-2) + 5-ь nop в функции (10мС=160000) ; LDI Delay1,BYTE1(@0*XTAL/1000/6-1) ; для 16'000'000 Гц (-1) + 0-ь nop в функции (10мС=160001) call DELAY_M_S .endm
Сама функция: СпойлерDELAY_M_S: GO_DEL: SUBI Delay1,BYTE1(1) SBCI Delay2,BYTE2(1) SBCI Delay3,BYTE3(1) SBCI Delay4,BYTE4(1) BRNE GO_DEL ; НАСТРОЙКА (nop-ы для точной настройки) nop nop nop ;nop ;nop ret
Не забываем определить константу с частотой вашего тактирования: .equ XTAL = 16000000
...и объявить переменные: .def Delay1=r19 ; переменная функции Delay 1 .def Delay2=r20 ; переменная функции Delay 2 .def Delay3=r21 ; переменная функции Delay 3 .def Delay4=r22 ; переменная функции Delay 4
Вызываем так: DELAY_MS 100 ; число - единицы миллисекунд, диапазон 1-1610612 (этот потолок для 16МГц)
У меня в AtmelStudio 6.2: 37 байт на вызов. Макрос+функция = 62 байта программной памяти.
PUSH-POP-ами пожертвовал. Лучше в каждом конкретном случае вставлять вручную, если надо спасти содержимое регистров.
З.Ы. Привет не на что не способным пустомелям. Ветку можно закрывать. Адью!
_________________ Если в голове каша, значит ваш котелок варит!
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
я тоже рад, что человек под свои гвозди смог подобрать удобный микроскоп ... хотя может это я заблуждаюсь... проверить, то не удалось
Добавлено after 24 minutes 54 seconds: ну... и по доброму завидую объему памяти DrLithiumа... всётаки набить 11 кБ кода на ассемблере, да ещё и ориентироваться в нём - не каждому дано.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Всем привет. Упустил я как то эту тему. ТС. Программные таймеры. Шаг задания временных интервалов зависит от задач. В основном 1 мс. Есть нюанс. Вам придётся выстраивать основной цикл так, чтобы итерация выполнялась с запасом, менее дискретного шага. Тика. Как раз в то время, когда я до этого допер, я начал изучать конечные автоматы. Если интересно, пишите в личку.
Да, в телефоне трудно писать код. И студии нет. Ошибку увидел, но я давал не готовый код под компиляцию (того ещё не хватало), а принцип. Посему прошу возить меня мордой не очень сильно .
Добавлено after 14 minutes 42 seconds: {Если интересно,} Demiurg, ничего ТСу не интересно. У него итерация - когда все задержки отработают.
_________________ Я всё-всё узнAю и стану профессором.
Вот что вы пристали к человеку за то, что он написал программу на асме на 27 kb кода, пусть даже он оптимизировал позже, и получилось меньше. У меня тоже есть пара-тройка проектов. Станки. МК MEGA32. Асм. Объем кода за 10 kb. И что? Ужас, ужас? Да нет. Тяжеловато, не буду спорить. Но не ужас. Позже, после этих проектов я перешёл на си.
Просто посмотрите на это: https://rutracker.org/forum/viewtopic.php?t=5812488, а после будете рассуждать много 11КБ или мало. Это Япония - т.е. расцвет строения кассетных дек, HI-TECH 80х! Подобного решения не было в Советских общеизвестных ЛПМ. Тем более, что это не только ЛПМ типа включил-выключил, это обслуживание программной шестерни ЛПМ, прерывания 13-и пинов, облуживание состояний флагов, обслуживание переходов из состояния в запрашиваемый режим, тестирование ленты и т.п. Тут даже счётчик (со своим МК) умеет перехватывать фокус управления и возвращаться после теста ленты на нулевую отметку! А как вам функция настройки азимута головки записи по индикатору, специальной крутилкой на передней панели аппарата? У кого-нить из вас был подобный аппарат? Нет? Тогда подумайте ещё раз, вы точно знаете чего тут много, а чего мало?
Могу, если уж так всем интересно сказать, что да, рабочей (логика работы непосредственно с ЛПМ) части в 11КБ действительно мало. Основная масса кода это макро-защита регистров и код обслуживающий функционал логики. И отключив защиту, я существенно сэкономлю программную память. Т.к., если б как раньше писал и уложился в 4-8КБ без защит (не могу знать сколько точно), то проблемные месть искал бы неделями! Иногда только Протеус помогал выявить проблему. И это уже было в моей практике - это ассемблер, т.е. Спарта! Малые куски пишутся без ошибок, а большие - ошибся и попал на огромное время! По этому надо менять стиль и макро-определения, позволяющие сохранять содержимое регистров, есть спасение, но дорогой ценой. В текущей версии у меня задействованы всего 3 РОН для всего алгоритма, 2 нижних под флаги и 4 РОН пожертвованы DELAY-ю - всё. Значения 595-х сдвиговых регистров вообще в оперативке хранятся, ради... ну поняли чего. Я знаю, что много в коде лишнего и я точно знаю где. Упростить можно в любой момент, но мне не нужно, т.к. наглядность, время написания и будущая расширяемость функционала - у меня в приоритете. Как закончу проект, то смогу лишнее ампутировать/упростить, одновременно проверяя работоспособность. Алгоритм простой: начались глюки, то возврат. Это понятно? Теперь надеюсь все могут понять и принять альтернативный стиль моего кунг-фу?
З.Ы. Устал в этой ветке отвечать не по теме. А теперь представьте, кто-то предлагает свои услуги по написанию более компактного когда для моего проекта! Вот тут точно ха-ха, он ни как не сможет сделать подобный проект удалённо, даже близко не понимая с чем имеет дело. А готового ТЗ ему даже, если и захочет какой-либо заказчик предоставить, то ему не откуда будет брать! В сервис-мануалах этих данных нет, диаграмма почти всегда урезанная (развёрнутая только в двух моделях) и основную часть отрабатывать придётся на практике. Упражняясь с компактным кодом супер-программист взвоет уже на второй неделе. Сам себе сложности устроит - компактность же для всех просто святыня! Трогать ни-ни? И при всём этом я точно знаю, как и где у меня что-то работает (кроме одного исключения которое и заставило меня попасть в эту ветку) и точно меньше, если б писал на СИ. Поверьте, люди для Олимпа-005-го STM-ы берут и задачи там решаемые и поболее весить могут. Почитайте тематически ветки, а уже после говорите, что вам кажется что код тяжеловат... Надеюсь на сём закончим флуд.
_________________ Если в голове каша, значит ваш котелок варит!
Как по мне, применение асма в этой задаче ничем не оправдано. Прекрасно вся логика пишется на сях. Один большой цикл, крутится раз в 1 мс, в нем и опрос кнопок, и антидребезг, и проверка флагов прерываний, и счетчики-задержки. И вся логика, красивая, аккуратная. Хоть на таблицах, хоть на if-ах... И за счет структурированности и подхода ошибок гораздо меньше. На асме или экономить код, держа всё в регистрах и помня, где и что, либо держать всё в памяти, загружая в регистры кратковременно. Но так и компилятор Си делает. Но дело автора, нравится человеку героически преодолевать трудности.
DrLithium, отвечать мне не надо, спорить с вами я не буду. И упирать в сложность протяги тоже. Мне приходилось делать контроллеры для сложной управляемой механики.
Но дело автора, нравится человеку героически преодолевать трудности.
Хамство без внимания не оставлю!
В одной фразе ещё и две ошибки! Кто тут автор? Я тут просто помощник и при этом не только языком болтал.
Какие трудности? Где они показаны? Всё написано, всё работает. Сюда пришёл облегчить проблему других, что б каждый раз не генерили себе задержку нужной длины. Надеюсь мозг достаточно продвинут, что б осознать сию фразу правильно? У меня случился печальный опыт заимствования чужого кода. Это какая-то из ряда вон выходящая и исключительная проблема? Редкость особая? Или всё же нет?
Я её решил и ещё дал решение топикстартера. М.б. не надо было? Подобное вашему поведение рождает поговорки: не делай добра - не будёт и зла!
А м.б. я всё же достоин за решение, хотя бы простого "спасибо"? Не? Нахамить же лучше? Чушь написать? Подход в программировании осудить? Всё разложил по полочкам, в рот положил - но тупить не перестаём! Модно это?
Каким шрифтом надо написать, что б до вашего мозга дошло: МНЕ ДОСТАТОЧНО ТОГО КАК Я ПИШУ! Вам какое вообще до этого дело? И тем более, что вы мой код вообще не видели. Не видел - но осуждаю!
Вспомните о чём эта ветка? Флуд свой тупо в топку засуньте, т.к. не реально уже утомили со своим нытьём! Умники не рассказывайте, что и как надо делать, утомили всех уже. Реального решения от вас не дождаться - 3-и страницы флуда пока сам не сделал! За то советов, как-то - до фига! Страна советов тут или что? Модера на вас нету, теоретики диванные!
_________________ Если в голове каша, значит ваш котелок варит!
Поддержу. Логика ЛПМ может быть сложной. И объем программы может быть таким большим. Стыдно, господа. Я не зря вам писал, что у меня тоже есть проекты на асме, с большим объёмом прошивки. Особенно, проекты с развитыми меню. Это лютый атас. Указатель на указатель на указатель данных. Как основу я использовал MicroMenu, только на асме. Есть такой Ридико Леонид Иванович. В ливжурнале у него были записи, как он восстанавливал электронику для ЛПМ. STM си или даже плюсы. Но я нисколько не удивился бы, если бы он написал на асме. Этот человек сможет. Давайте представим, человек может писать проекты только на асме. Си, к примеру, он по каким либо причинам не изучал. То есть, человек использует ровно те инструменты, которыми он располагает. И если он своей задачи добился, то он молодец. Профессионал от слова профессия. И если кто то в своей жизни писал простенькие программы для простеньких устройств, то не нужно кидаться с тазиком какашек на оппонента... Уровень мышления разный....
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения