в наброске заданы три фиксированных частоты... К сожалению на внутреннем RC у аттини2313 частота 15000 Гц получилась "не очень" - надо б и остатки совести иметь...
Однако в остальном... Весьма интересное применение может иметь место...
маленько офигел от этого, дальше рассматривать не смог:
Код:
; "irq_avr.txt" файл описания поля векторов прерываний ; .cseg .org 0x000 irq_res: rjmp start ; переход к началу программы инициализации системы ; - - - - - - - - - - - - - - - - - - - - - - - - - - - ; блок размещения векторов активных прерываний .org OVF0addr ; Timer/Counter0 Overflow irq_t0: rjmp test_inp ; - - - - - - - - - - - - - - - - - - - - - - - - - - - ; ***** END OF FILE ******************************************************
забыл почему include рассширение txt а не asm inc как положено. Имхо можно было все в одном asm файле разместить - как тут понять где находится "test_inp" и где reti в векторе подевалась. типа "треглавого змея" пищащего на разные голоса было же, про RTOS упоминалось http://www.pic24.ru/doku.php/osa/articles/pk2_osa_piano
*.asm у моего "слэнга" только один -дабы не путать обработку компилятором с линкером(и запуском с прописями из командной строки). Мы ранее уже в достатке про те условности поцарапсом занимались - смысла повторяться не вижу.
Касательно одного файла - можно и так, но попозже захочется вытянуть в вариант библиотечки - так лучше уж заранее заложить вариант разделения. В "наброске" только базовый алгоритм теста на три независимых канала генерации с раздельными выходами для каждого из каналов. А как уже ими управлять/куда применять то уже вторично. В отличии от DDS использован только базовый счётчик периода без формирования сигнала через массив данных в ПЗУ. Главный результат того тест-наброска - независимая генерация меандра по нескольким каналам возможна, запаса по времени вполне достаточно для запуска в фоновом режиме, размер кода весьма скромный. Параметры выходного сигнала вполне укладываются в "ширпотреб" для любительского применения даже при 8МГц тактовой частоты.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Так это практически одно и то же - только в Вашем случае ОДИН генератор, а у меня ТРИ
(используется один источник тактирования на Т0 для всех трех "генерирующих модулей"). И каждый из трех может "бежать" самостоятельно. Посему и регистров больше используется.
В принципе можно до четырех одновременно работающих генераторов дотянуть... Насчет таблички... чей-то она мне не сильно понравилась - меандр можно получить и из двух полупериодов - для выходных данных только инвертируем текущее значение выходного сигнала. И то у 15 КГц "джиттер" на осциллограмме наблюдается... Другое дело - была бы генерация синуса или чего другого... Тогда можно хоть к каждому из "генерирующих модулей" свою табличку прикошмарить...
А чего б таки "прикладного" на той основе замутить... Пока не придумалось... ЛЕЕНЬ...
Так это практически одно и то же - только в Вашем случае ОДИН генератор, а у меня ТРИ
а если пять и более (для пианино пальцев 10) - регистров не хватит. Придется из ОЗУ в регистры нужный канал загрузить, надо всего 6 регистров временно.
Код:
lds r24,{Fincr+0} 'LSB passa incremento frequenza lds r25,{Fincr+1} 'usa 24 dei 32 bit lds r26,{Fincr+2} 'MSB
а таблица будет то одна з.ы. прикладное - такое же пианино как на PIC16 с OSA, AVR то пошустрее будет
Один генератор ведёт одну частоту. Таблица даёт только форму одного периода частоты для данного генератора. А замена параметров для частоты одинакова как для одного комплекта регистров с одним генератором, так и для нескольких. Лишь бы регистров хватило и время для замены содержимого вписывалось в остаток времени тактового интервала (то, что останется от обработки прерывания по переполнения Т0). Собственно тот вопрос "запаса по времени" меня и интересовал. Остаётся проверить хотя-бы каким-нибудь "перебором частот"... Все же интересно - сколько возможного можно выдавить из ресурса АВРки с удобоваримыми параметрами без особого изврата. Регистров то особо не жалко - "нижний" участок с "ограниченными возможностями" в большинстве случаев "лежит без дела" - а так вроде бы при делах (в основном для подавляющего большинства программ нагрузка на R16-R25 и указатели). Зато выигрыш в объёме ПЗУ - параметры генерации могут быть и вычисляемыми/фиксированными для большинства "примитивов" применения. А это и ПИКовые малютки и АВР 8-лапки.
Таблица даёт только форму одного периода частоты для данного генератора.
ну для меандра таблица то и не нужна - следим за старшим битом аккумулятора вместо
Код:
lpm ; 3 out PORTB,r0 ; 1
используется
Код:
sbrc r30,7 ' 1/2
универсальность это хорошо - для пианино на слух синусоида звучит "мягче". сколько "выдавить" - тут надо технически(с), посчитать можно
Код:
; Output frequency (using 24 bit accumulator) : ; ; f = deltaPhase * fClock/2^24 ; ; fClock is in this case the CPU clock divided by the ; number of cycles to output the data ( 9 cycles ) ; ; f = r24/r25/r26 * (11059200/9)/16777216 ; ; f = r24/r25/r26 * 0.073242188 ; ; fMax (theoretical) = 0.5 * fClock
Вопрос в том, чего удобнее использовать из имеющегося арсенала: аппаратный таймер (в разных режимах); аппаратно - программный таймер "по классике" (счетчик досчета); аппаратно - программный таймер с "модулем DDS"; возможность одновременного использования нескольких программных модулей на базе единого аппаратного предделителя... Зависит и от начинки соответствующего семейства (возможная тактовая частота, аппаратная поддержка) и от допусков на результат - стабильность, разрешающая способность, дискретность шага перестройки частоты. Так что неплохие заготовки получились.
Вот с размещением "вручную" там еще поразбираться надо - несколько иная раскладка внутренних каталогов.
Поскольку ни один вменяемо - разумный КОТ не станет гробить имеющееся у него на компе программное обеспечение, а затравку иным способом можно только на еще одном "лишнем" пустом ПК с виндовсХР сотворить.... В то же время резерв делать надо ДО факта непланируемого сбоя.... Я выкладываю подготовленную "чистую" затравку ардуиноIDE 1.8.9 для размещения в корне резервной флешки (вышеуказанная методика). Пользователь самостоятельно сможет ее "нашпиговать" под свои интересы. А уж затем или использовать в режиме дублера или сделать замену в случае катастрофического отказа основной IDE/ Ссылка на архив на яндекс-диске https://disk.yandex.ua/d/zrYPVougRHG0VA
(попробую еще этот архивчик в СУНДУК положить - там доступ "демократичнее" будет)
Дополнительные замечания по применению "резервной копии" (виндовс ХР х32) Собственно при автозагрузке может не производится корректной установки драйверов для программаторов. Это касается платформ STM8/STM32 относительно программатора STLink... Обнаружилось при проработке STM8. Для устранения необходимо скачать новые драйвера вот тут: https://static.chipdip.ru/lib/163/DOC001163692.zip и установить их. Далее работа с платформой sduino позволяет работать с платкой https://img.radiokot.ru/files/20529/2g9hc95yn3.jpg (stm8s105k4t6 brekout board) используя "народный" вариант STLink V2 https://img.radiokot.ru/files/20529/2g9hmcjxkn.jpg
Теперь с ним (stm8s105k4t6 brekout board и stm8s105c6 discovery board) поэкспериментировать надо бы...
И таки можно и с https://img.radiokot.ru/files/20529/2g9hc84gx2.jpg (stm8s103f3 brekout board) поработать... Просто старая версия ST TOOLS stlink V2 не ведала... Пришлось переустановку сделать дистрибутив брал на этой страничке https://www.drive2.ru/b/520221558250144309/ собственно сам дистрибутив http://umat.ru/files/en.stvp-stm8.zip после переустановки STVP работает как с "устаревшей" stm8s105c6 discovery board (там своя платка с STLink старой версии) так и с stlink V2. Посему можно прошивку для stm8s103f3 brekout board через "внешний программатор" протащить. (Не путать с программатором в ардуинке!).
Собственно при автозагрузке может не производится корректной установки драйверов для программаторов. Это касается платформ STM8/STM32 относительно программатора STLink...
Ни разу такого не замечал. Драйвер не находится в автозагрузке, а запускается при обнаружении связанного с ним устройства.
BOB51 писал(а):
Для устранения необходимо скачать новые драйвера вот тут
Предлагаете ставить устаревшие (2011 год) драйверы с неизвестного сайта, вместо тех что на сайте-производителе?
Драйвера периферии некоторые платформы (при автоматической установке/обновлении) таки ставят. Причём иногда в самый неподходящий момент - когда надоело следить за окном обновления.
Относительно "старых" драйверов/программ от stm из "сторонних источников"... Речь то об аварийном резерве под ХР - там к сожалению не все " самое современное" работать будет. Приходится "старье" разыскивать и перепроверять... То, что указано на своих "подопытных" проверил - работает. Кому удастся более качественное добыть(да в свободном доступе без регистраций) - надеюсь положит дополнением. Для 7-10ки этих проблем не возникает - там все современное и так ставится.
ГЫММ... Ежли уж SDCC пристроили один раз, то возможно его кто-нибудь адаптирует и для продукции STC http://www.stcmcu.com/ http://stcmicro.com/rjxz.html ...? Ядро там от MCS51 (SDCC), а "прошивалка" весьма "демократично-доступна"...
Хотя Arduino IDE предоставляет простой и понятный интерфейс, который идеально подходит для начинающих пользователей, более продвинутые пользователи часто сообщают, что возможности редактирования немного ограничены по сравнению с современными редакторами. Сюда входят такие функции, как отступ кода, сворачивание блоков, автоматическое закрытие скобок, поиск и замена регулярных выражений, переключение комментариев. В дополнение к этому, многие пользователи просили отладку в реальном времени , то есть возможность запускать код на подключенной плате и останавливать его на заданной строке для проверки содержимого переменных, памяти и регистров.
IDE 1.x разработана на Java, и ее монолитная кодовая база затрудняет реализацию таких функций. Java также становится устаревшей технологией для настольных приложений и постепенно вытесняется новыми операционными системами и магазинами приложений, что заставляет нас тратить время на решение проблем совместимости.
Пришло время: поприветствуйте Arduino IDE 2.0 (бета)
Мы рады сообщить, что с сегодняшнего дня бета-версия Arduino IDE 2.0 доступна для загрузки, а ее репозитории кода становятся открытыми . Он оснащен современным редактором и обеспечивает лучший пользовательский интерфейс благодаря адаптивному интерфейсу и более быстрому времени компиляции . Не бойтесь попробовать это сегодня: обновление будет простым, так как интерфейс будет выглядеть очень знакомым. Но давайте посмотрим, какие вкусности вы найдете...
вкусности тут: https://blog.arduino.cc/2021/03/01/anno ... -2-0-beta/ з.ы. Проверил - ядра устанавливаются, похожим (как ранее) способом, примеры компилятся. Редактировать код стало намного приятнее. Из коробки есть темная тема. Фокус с папкой "portable" не проходит - в линуксе образуется 2 дополнительных папки, правда в местах для этого предназначенных
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения