У меня немного более садистский подход... (один лишь генератор не столь интересен) Хотя основа в принципе та же. Концепт-набросок "треглавого змея" пищащего на разные голоса. схемка теста https://img.radiokot.ru/files/20529/2fkkt20prf.GIF архив проекта
в наброске заданы три фиксированных частоты... К сожалению на внутреннем 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МГц тактовой частоты.
Так это практически одно и то же - только в Вашем случае ОДИН генератор, а у меня ТРИ (используется один источник тактирования на Т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 дополнительных папки, правда в местах для этого предназначенных
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения