Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Котуинко
Значит у Вас какая-то из библиотек не соответствует стандарту С99. Или же некая функция написана в стандарте С99, а компилятор не умеет. И для того, чтобы найти, надо покопаться в коде. У меня ничего подобного не наблюдается. Но я то в LGT8 пока только один Blink и шил то. А у Вас наверное там код посерьёзнее?
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
- Реклама
Скорее последствия изготовления программатора на IDE версии 1.8.9, а работа с прошивкой платок LGT на IDE версии 1.8.19.
У меня обе версии установлены и допускают независимую работу.
Позже ещё разок соберу макет для перепроверки, как настроение будет.

У меня обе версии установлены и допускают независимую работу.
Позже ещё разок соберу макет для перепроверки, как настроение будет.
Интересно, это только у меня так?...

или только "местные особенности" влияют?
или моё "КАРР" (https://radiokot.ru/forum/viewtopic.php ... 0#p4752270) сбылося?
Любая попытка входа на сайт ардуино (https://www.arduino.cc/)


или только "местные особенности" влияют?
или моё "КАРР" (https://radiokot.ru/forum/viewtopic.php ... 0#p4752270) сбылося?
Любая попытка входа на сайт ардуино (https://www.arduino.cc/)
В нынешнее время надо пользоваться тем, что запрещено рекламировать, чтобы увидеть, что нам недоступно из-за блокировок...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Причем тут "запрещенная реклама"???
Простейший вопрос в скачивании дистрибутива ардуино IDE (без разницы какой из версий) да доступ к онлайн хелпу (с версии 2.х.х эта функция стала "он лайн").
Доступ к обновлению платформ...
Ранее таки было "свободно- бесплатное".
Проблемы пошли недели две -три назад... Причем случайно обнаружил - попытка переустановки "с нуля" ардуиноIDE и\или обновления через менеджер платформ для версий 1.8.9 и 1.8.19. Да и из 2.3.6 уже справочки с сайта недоступны.
Хотя... Я предполагал очередную "прихватизацию" (чтоб простолюбителям проблемы создавать - "...уж слишком моного вумных появилось...")...
С другой стороны - переживемс и этот "эксцесс" - не в первый раз уже...

Простейший вопрос в скачивании дистрибутива ардуино IDE (без разницы какой из версий) да доступ к онлайн хелпу (с версии 2.х.х эта функция стала "он лайн").
Доступ к обновлению платформ...
Ранее таки было "свободно- бесплатное".
Проблемы пошли недели две -три назад... Причем случайно обнаружил - попытка переустановки "с нуля" ардуиноIDE и\или обновления через менеджер платформ для версий 1.8.9 и 1.8.19. Да и из 2.3.6 уже справочки с сайта недоступны.
Хотя... Я предполагал очередную "прихватизацию" (чтоб простолюбителям проблемы создавать - "...уж слишком моного вумных появилось...")...
С другой стороны - переживемс и этот "эксцесс" - не в первый раз уже...
- Реклама
То, что не заблокировали нам в качестве санкций, блокируем мы в качестве безопасности. Вдруг вы на том сайте начнете ВСУ финансировать?! А так - нет доступа, и все за вас спокойны...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Да. И дулю всем.ARV писал(а):А так - нет доступа, и все за вас спокойны...
Собственно ничего нового - единственно надо к подобной ситуации заранее готовиться.
О чем ранее уже не раз говаривалось (те же микрощип да атмел в не столь далеком прошлом)...
Нынче стоит присмотреться к группе ARM микроконтроллеров и особо к средствам разработки для ESP8266/ESP32 (наверняка будут следующими в группе "подссакционных")...
Жаль только "отечественного софта/IDE" да еще и свободно - бесплатного пока не наблюдается...
Кстати...
Рекомендую вспомнить работу с разграфленными под линеечку (собственными лапками да карандашиком) листочками, нарисованными от руки таблицами команд для "ручного ассемблера" и старые-добрые MCS51, MCS48, Z80, I8080 (в старых кладовках валяющиеся).
Ну и архивными копиями старого софта под ДОС не брезговать.
Мало ли чего нас еще из "нежданчиков" ожидает.
Весьма хорошо архивируются для резервного восстановления/переноса портабле версии ардуиноIDE 1.8.9 и 1.8.19

О чем ранее уже не раз говаривалось (те же микрощип да атмел в не столь далеком прошлом)...
Нынче стоит присмотреться к группе ARM микроконтроллеров и особо к средствам разработки для ESP8266/ESP32 (наверняка будут следующими в группе "подссакционных")...
Жаль только "отечественного софта/IDE" да еще и свободно - бесплатного пока не наблюдается...
Кстати...
Рекомендую вспомнить работу с разграфленными под линеечку (собственными лапками да карандашиком) листочками, нарисованными от руки таблицами команд для "ручного ассемблера" и старые-добрые MCS51, MCS48, Z80, I8080 (в старых кладовках валяющиеся).
Ну и архивными копиями старого софта под ДОС не брезговать.
Мало ли чего нас еще из "нежданчиков" ожидает.
Весьма хорошо архивируются для резервного восстановления/переноса портабле версии ардуиноIDE 1.8.9 и 1.8.19
Вот вот. Самое время. Валяется целая куча ВЕ31, ВЕ51, ВЕ39, Z80, 580ВМ80 похищенных в своё время ещё предками. Так толком и не освоенных. Мне стыдно.BOB51 писал(а):Рекомендую вспомнить работу с разграфленными под линеечку (собственными лапками да карандашиком) листочками, нарисованными от руки таблицами команд для "ручного ассемблера" и старые-добрые MCS51, MCS48, Z80, I8080 (в старых кладовках валяющиеся).
Для 51 особо проблем нет (если со встроенным ПЗУ)...
А вот с внешним - там заморочек заметно больше.
Надо и со схемотехникой и с железом сопровождения (программатор для ПЗУшек и эмулятор ПЗУ) иметь под руками...
Да и жреть по питанию такая конструкция по нынешний меркам весьма крокодилисто.
Однако при продолжении проблем с "ссакциями" (как внешними так и со стороны "внутренних дурней") вполне может сгодиться " на "безрыбье"".
Хотя... Возможно братцы с Китая да Северной Кореи нам помогут.
(Правда там иероглифы учить...
)

А насчет освоения - не нужно печалиться!
В каждой эпохе свои предпочтения и необходимости изучения, связанные с практическим применением.
Что просто "для беглого ознакомления", а что и фундаментально изучать надо.
Элементная база меняется с геометрической прогрессией - все детально знать - мозги взррвутся.
На сегодня надо скорее " изучение по прециденту" применять.

А вот с внешним - там заморочек заметно больше.
Надо и со схемотехникой и с железом сопровождения (программатор для ПЗУшек и эмулятор ПЗУ) иметь под руками...
Да и жреть по питанию такая конструкция по нынешний меркам весьма крокодилисто.
Однако при продолжении проблем с "ссакциями" (как внешними так и со стороны "внутренних дурней") вполне может сгодиться " на "безрыбье"".
Хотя... Возможно братцы с Китая да Северной Кореи нам помогут.
(Правда там иероглифы учить...
А насчет освоения - не нужно печалиться!
В каждой эпохе свои предпочтения и необходимости изучения, связанные с практическим применением.
Что просто "для беглого ознакомления", а что и фундаментально изучать надо.
Элементная база меняется с геометрической прогрессией - все детально знать - мозги взррвутся.
На сегодня надо скорее " изучение по прециденту" применять.
[uquote="serg_svd",url="/forum/viewtopic.php?p=4764200#p4764200"]Значит у Вас какая-то из библиотек не соответствует стандарту С99 .....[/uquote]
Нашел я таки откуда выскакивает
Warning: linked C library does not conform to C99; avrdude may not work as expected
Только вот устранить пока можно только "шаманизмом"... цепочкой манипуляций при открытии проекта...
Вероятная причина - у меня в обновлениях платформ от MCUdude появилась аврдуде 8... и какого то х... по умолчанию запуск программатора иногда на нее перескакивает... Поточнее надо б статистику собрать, да весьма нудно-долго (на сегодня в моих краях с эляктричеством нестабильно)...
Помимо прочего рекомендуется временные файлы предыдущего "мусора" в случае с эксплуатацией портабле версий поудалять.
Размещение этого мусора ищем в скрытых папках по этому пути:
удаляются все arduino_хххххххх_ххххххххх
Воть пока вкратце все, что пособирал...

Нашел я таки откуда выскакивает
Warning: linked C library does not conform to C99; avrdude may not work as expected
Только вот устранить пока можно только "шаманизмом"... цепочкой манипуляций при открытии проекта...
Вероятная причина - у меня в обновлениях платформ от MCUdude появилась аврдуде 8... и какого то х... по умолчанию запуск программатора иногда на нее перескакивает... Поточнее надо б статистику собрать, да весьма нудно-долго (на сегодня в моих краях с эляктричеством нестабильно)...
Помимо прочего рекомендуется временные файлы предыдущего "мусора" в случае с эксплуатацией портабле версий поудалять.
Размещение этого мусора ищем в скрытых папках по этому пути:
Код: Выделить всё
C:\Users\comp\AppData\Local\Temp\arduino_build_845037Воть пока вкратце все, что пособирал...
Окончание разборок с надоедливым сообщением
по завершении операций загрузки в МК платформы lgt8fx версии 2.0.7 для портабле версий ардуиноIDE 1.8.9 и/или
1.8.19...
Речь о довольно бессистемном выбросе таких сообщений как для режима загрузки через программатор/загрузки бутлоадера, так и при загрузке через СОМ порт (USB-COM переходник).
Причем при компиляции-проверке (без загрузки в МК) данное сообщение никогда не появляется.
При включенных опциях подробного вывода сообщений по компиляции/загрузке было обнаружено, что сообщению об ошибке обычно предшествует ошибочный вызов avrdude более старшей версии (данная версия появилась в составе обновлений платформ от MCUdude)...
Каким то образом происходит перидическая случайная подстановка этих "чужих адресов", что выглядит вот таким образом:
в данном случае сама IDE на диске D, а вместо MegaCoreX может выскочить любая из обновленных платформ от MCUdude, имеющая в составе avrdude\8.0-arduino.1
....
Собственно кардинальным лечением после плясок шамана стало изменение содержимого в файле по адресу
в фрагменте
сделать замену на
Осталась только еще одна "нервность" - двойной вызов и исполнение аврдуде при операции загрузки бутлоадера - но там х/з... может для LGT так и надо - в принципе "работает - не тронь"...

Код: Выделить всё
Warning: linked C library does not conform to C99; avrdude may not work as expected1.8.19...
Речь о довольно бессистемном выбросе таких сообщений как для режима загрузки через программатор/загрузки бутлоадера, так и при загрузке через СОМ порт (USB-COM переходник).
Причем при компиляции-проверке (без загрузки в МК) данное сообщение никогда не появляется.
При включенных опциях подробного вывода сообщений по компиляции/загрузке было обнаружено, что сообщению об ошибке обычно предшествует ошибочный вызов avrdude более старшей версии (данная версия появилась в составе обновлений платформ от MCUdude)...
Каким то образом происходит перидическая случайная подстановка этих "чужих адресов", что выглядит вот таким образом:
Код: Выделить всё
D:\Arduino\portable\packages\MegaCoreX\tools\avrdude\8.0-arduino.1/bin/avrdude -CD:\Arduino\portable\packages\MegaCoreX\tools\avrdude\8.0-arduino.1/etc/avrdude.conf -v -patmega328p -carduino -PCOM5 -b57600 -D -Uflash:w:C:\Users\asus\AppData\Local\Temp\arduino_build_604424/blinklgt.ino.hex:i
Warning: linked C library does not conform to C99; avrdude may not work as expected....
Собственно кардинальным лечением после плясок шамана стало изменение содержимого в файле по адресу
Код: Выделить всё
диск:\Arduino\portable\packages\lgt8fx\hardware\avr\2.0.7\platform.txtКод: Выделить всё
# AVR Uploader/Programmers tools
# ------------------------------
tools.avrdude.path={runtime.tools.avrdude.path}
tools.avrdude.cmd.path={path}/bin/avrdude
tools.avrdude.config.path={path}/etc/avrdude.confКод: Выделить всё
tools.avrdude.path={runtime.tools.avrdude-6.3.0-arduino17.path}
Новогод скоро...
Задумка сделать несколько проектов АВРкиных замигаек под ассемблером, под адуринкой и под Си в атмелстудии...
На одном и том же МК (тинька 2313 и тинька 13 планируются).
А задача одна и та же - программный ШИМ с мультиплексированным выходом х4 плюс собственно для замигаек там ГСЧ...
Интересно - чего в сравнении результатов будет?
Вот собственно под ассемблером для Аттини2313 вариант:
схема макета
https://img.radiokot.ru/files/20529/3xtvmrbi8a.GIF
и сам проект следующее буду под адуринку неспешно мудрить - задача та же, макет тот же, платформа ATTinyCore-2.0.0... поглядим, что будет...

Кыстати...
раздумья гложуть...
в системах команд есть косвенное обращение к регистрам, к ячейкам памяти по содержимому находящихся в регистр - указателях данных...
НО... что то не попадалось команд косвенного обращения к битам - есть только прямоуказываемый в команде номер бита.
А вот есть ли МК, система команд у которого имеет именно косвенное обращение к отдельному биту (адрес бита не явно задан, а находится в регистре, указанном в команде)...??...
К примеру (для АВРок) для модификации бита n регистра M используется не
SBI M,n
а
SBI M,Rx где адрес n содержится в регистре Rx...

Задумка сделать несколько проектов АВРкиных замигаек под ассемблером, под адуринкой и под Си в атмелстудии...
На одном и том же МК (тинька 2313 и тинька 13 планируются).
А задача одна и та же - программный ШИМ с мультиплексированным выходом х4 плюс собственно для замигаек там ГСЧ...
Интересно - чего в сравнении результатов будет?
Вот собственно под ассемблером для Аттини2313 вариант:
схема макета
https://img.radiokot.ru/files/20529/3xtvmrbi8a.GIF
и сам проект следующее буду под адуринку неспешно мудрить - задача та же, макет тот же, платформа ATTinyCore-2.0.0... поглядим, что будет...
Кыстати...
раздумья гложуть...
в системах команд есть косвенное обращение к регистрам, к ячейкам памяти по содержимому находящихся в регистр - указателях данных...
НО... что то не попадалось команд косвенного обращения к битам - есть только прямоуказываемый в команде номер бита.
А вот есть ли МК, система команд у которого имеет именно косвенное обращение к отдельному биту (адрес бита не явно задан, а находится в регистре, указанном в команде)...??...
К примеру (для АВРок) для модификации бита n регистра M используется не
SBI M,n
а
SBI M,Rx где адрес n содержится в регистре Rx...
Спеклася аналогия (выше выложенной под ассемблером) замигайки, выполненная в ардуиноIDE... версия IDE 1.8.9 или 1.8.19,
платформа ATTinyCore-2.0.0...
Собственно скрин настроек платформы и результата после "экспорта бинарного файла":
https://img.radiokot.ru/files/20529/3y0ntc7nlv.jpg
и сам проект А вот получится ли повторить под Си в АВРстудии 4.19....
Я такое еще не пробовал (может и не получится - я с Си только в рамках адуринки пока дружу)...

платформа ATTinyCore-2.0.0...
Собственно скрин настроек платформы и результата после "экспорта бинарного файла":
https://img.radiokot.ru/files/20529/3y0ntc7nlv.jpg
и сам проект А вот получится ли повторить под Си в АВРстудии 4.19....
Я такое еще не пробовал (может и не получится - я с Си только в рамках адуринки пока дружу)...
А вот и вариант программы под СИ в АВРстудио 4.19...
Схема та же и программа та же, но... есть "некоторые различия"... Вобшчемс... смотрим и сравниваемссс....

Схема та же и программа та же, но... есть "некоторые различия"... Вобшчемс... смотрим и сравниваемссс....
Для Полосатый
(https://radiokot.ru/forum/viewtopic.php ... 3#p4774803)
Минимальная демка ардуино нанки для ШИМ:
иначе ассемблерные вставки ...
Затраты на serial только для демо режима (вывод в монитор порта).

(https://radiokot.ru/forum/viewtopic.php ... 3#p4774803)
Минимальная демка ардуино нанки для ШИМ:
Спойлер
Код: Выделить всё
#define hasm0 1
#define hasm2 0b01000000
union {
uint64_t bigdat;
struct {
byte vdat0;
byte vdat1;
byte vdat2;
byte vdat3;
byte vdat4;
byte vdat5;
byte vdat6;
byte vdat7; } lowdat;
} recodum;
void rhas();
//----------------------------------------------------
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
rhas();
Serial.print(recodum.lowdat.vdat0, BIN);Serial.print(recodum.lowdat.vdat1, BIN);
Serial.print(recodum.lowdat.vdat2, BIN);Serial.print(recodum.lowdat.vdat3, BIN);
Serial.print(recodum.lowdat.vdat4, BIN);Serial.print(recodum.lowdat.vdat5, BIN);
Serial.print(recodum.lowdat.vdat6, BIN);Serial.println(recodum.lowdat.vdat7, BIN);
//delay(200);
}
//----------------------------------------------------
void rhas()
{
byte tmpa,tmpb;
if(recodum.bigdat == 0){recodum.bigdat = UINT64_MAX;}
tmpa = recodum.lowdat.vdat0 & hasm0;
if(tmpa){tmpa = 0xFF;}
tmpb = recodum.lowdat.vdat2 & hasm2;
if(tmpb){tmpb = 0xFF;}
tmpa = tmpa ^ tmpb;
recodum.bigdat = recodum.bigdat >> 1;
if(tmpa){bitWrite(recodum.lowdat.vdat7, 7, 1);}
else {bitWrite(recodum.lowdat.vdat7, 7, 0);}
}Затраты на serial только для демо режима (вывод в монитор порта).
Спасибо.
Мне удалось сделать быстрее - до 30 кГц, но с большим джиттером. CLC сильно дрыгается и меняется длительность полупериодов.
Надо на один пин выводить случайные данные (могут быть любыми), а на другой - модифицированно-частотно модулированные (МЧМ), потому как нужно их сделать квазипеременными (без постоянной составляющей). Там всего пара строчек - if'ов.
На очереди работа с портами вместо digitalRead&Write и хотел использовать micros вместо delayMicroseconds, но нужно ждать этого микроса и ничего не делать (остановка программы).
Мне удалось сделать быстрее - до 30 кГц, но с большим джиттером. CLC сильно дрыгается и меняется длительность полупериодов.
Надо на один пин выводить случайные данные (могут быть любыми), а на другой - модифицированно-частотно модулированные (МЧМ), потому как нужно их сделать квазипеременными (без постоянной составляющей). Там всего пара строчек - if'ов.
Спойлер
Код: Выделить всё
// Set up potentiometer pin
#define POT_PIN A3
// Set up clock out pin
#define CLC_OUT 9
// Set up free pin (для ловли наводок)
#define FREE_PIN A1
// Set up random out pin (выход данных)
#define RANDOM_OUT 10
// Set up MFM out pin (выход МЧМ)
#define MFM_OUT 2
int RND = 0; // текущий бит данных
int RND_OLD = 0; // предыдущий бит данных
int POT = 5; // примерно полпериода в микросекундах
int MFM = 0; // текущий бит МЧМ
unsigned int arr[100]; // массив случайных чисел
int i=0;
int j=0;
void setup() {
// put your setup code here, to run once:
// Set ADC mode
// Регистр настройки мультиплексора
ADMUX = 0b01000011; // 0B0100011 - опорное Uпит (первые 01), 10 bit (3-й 0), A3 (последние 0011)
// Регистр статуса и контроля
ADCSRA = 0b11110011; // CLK/8 - ускоряем АЦП - в 8 раз ниже частоты процессора (32/8=4МГц)
// Set up pins as input
pinMode(POT_PIN, INPUT);
pinMode(FREE_PIN, INPUT);
// Set up pins as outputs
pinMode(CLC_OUT, OUTPUT);
pinMode(RANDOM_OUT, OUTPUT);
pinMode(MFM_OUT, OUTPUT);
digitalWrite(MFM_OUT, MFM);
randomSeed(analogRead(FREE_PIN));
// для пинов 9 и 10 (таймер1) - для 10 кГц вроде не обязательно
// TCCR1A = 0b00000001; // 8bit
// TCCR1B = 0b00001001; // x1 fast pwm - 62.5 кГц - для UNO и 125 кГц - для LGT8F328P
// Serial.begin (9600);
}
// Main loop - put your main code here, to run repeatedly:
void loop() { // до 30 кГц без задержек на random и ускорением чтения потенциометра
for(i = 0; i < 100; i++){ // в массиве будет 100 элементов //
arr[i] = random(65536); // заполним массив случайными числами // Чтобы потом в цикле не вносить задержек
}
while(true){ // бесконечный цикл
// RND = random (2); // 0 или 1, вносит задержку примерно 40 мкс
digitalWrite(CLC_OUT, HIGH); // переключаем СLC на HIGH - тактовая частота, желателен меандр
RND = bitRead(arr[i], j); // чтение битов массива
digitalWrite(RANDOM_OUT, RND); // вывод случайных данных на 10-й пин
if (RND < 1 && RND_OLD < 1) digitalWrite(MFM_OUT, !digitalRead(MFM_OUT)); // смена логического уровня МФМ // в начале бита данных, если второй 0 подряд
j=j+1; //
if(j > 15) { // последовательное чтение
j = 0; // битов из массива
i=i+1;
} // (быстрее, чем random (2))
if(i > 99) i = 0; //
// POT = analogRead(POT_PIN); // чтение потенциометра
// POT = map(POT, 20, 1000, 1, 512); // масштабируем до диапазона 1 ... 512
// POT = constrain(POT, 1, 512); // ограничиваем диапазон, чтобы исключить выбросы
delayMicroseconds(POT+15); // 30 кГц, большой джиттер (+15 мкс - проверял стабильность)
digitalWrite(CLC_OUT, LOW); // переключаем СLC на LOW - тактовая частота, желателен меандр
if (RND > 0) digitalWrite(MFM_OUT, !digitalRead(MFM_OUT)); // переход уровня МФМ при 1 данных по спаду CLC - в середине бита, т.е. CLC должен быть меандром
RND_OLD = RND;
POT = analogRead(POT_PIN); // читаю при CLC=LOW, чтобы приблизить к меандру
// POT = map(POT, 20, 1000, 1, 512); // Тоже отнимают много времени
// POT = constrain(POT, 1, 512); // поэтому пока отключил
delayMicroseconds(POT+10); // 30 кГц, большой джиттер (+10 мкс - проверял стабильность)
// Serial.print (POT); Serial.print("\t");
// Serial.print (PAUSE); Serial.print("\t");
// Serial.print (FREE); Serial.print("\t");
// Serial.println (RND);
} // закрыли while
} // закрыли loop
(Аль Котоне, кот ещё тот, Cattus Sapiens)Усы и хвост - мои документы.
Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
Serial сам и ресурсы и время занимает.
Даже ежли не используется, но есть loop там проходит опрос.
Собственно для спецприменений в которых требуется высокоскоростной "лаподрыг" при АВРках предпочтителен ассемблер и специально под ту задачу выполненный МК периферии (отдельный "малолапый" МК).
А "жирному" МК оставляем вычисления и прочую "интеллектуальную" работу.
Единственно подогнать под алгоритм задачи программу под ассемблером дело таки достаточно долгое (в сравнении с тем же СИ(или иным ЯВУ)). Зато и результат гораздо удачнее может получиться. Плюс перебор возможных вариантов решения исходного алгоритма.
Я в случае адуинки для "высокоскоростных" протоколов микро LAN и "умных светиков" готовые библиотеки использую.
Остальное особо проблем не представляет и для типовой нанки с 16МГц штатного исполнения.
Как вариант LGT китайские - но там только "в рамках ардуино "референса"" - их даташиты я лишь бегло в компе просматривал, делать полную распечатку с проработкой пока смысла нет.

кыстати...
Поскольку Т0 в ардуино трогать нельзя - системный таймер (максимум второй машинный "тик" в 1 mS на нем делается)
У АВРки есть таймер Т1... У того таймера режим фазочстотнокорректного ШИМ (по OCR1A или по ICR1...
А в довесок аппаратно управляемые выводы OC1A/OC1B...
Вот и используйте это в качестве источника управляемого ШМИ сигнала.
Понятно, что также после такого использования будут ограничения (по analogWrite() на выводах D9 и D10 к примеру)...

Даже ежли не используется, но есть loop там проходит опрос.
Собственно для спецприменений в которых требуется высокоскоростной "лаподрыг" при АВРках предпочтителен ассемблер и специально под ту задачу выполненный МК периферии (отдельный "малолапый" МК).
А "жирному" МК оставляем вычисления и прочую "интеллектуальную" работу.
Единственно подогнать под алгоритм задачи программу под ассемблером дело таки достаточно долгое (в сравнении с тем же СИ(или иным ЯВУ)). Зато и результат гораздо удачнее может получиться. Плюс перебор возможных вариантов решения исходного алгоритма.
Я в случае адуинки для "высокоскоростных" протоколов микро LAN и "умных светиков" готовые библиотеки использую.
Остальное особо проблем не представляет и для типовой нанки с 16МГц штатного исполнения.
Как вариант LGT китайские - но там только "в рамках ардуино "референса"" - их даташиты я лишь бегло в компе просматривал, делать полную распечатку с проработкой пока смысла нет.
кыстати...
Поскольку Т0 в ардуино трогать нельзя - системный таймер (максимум второй машинный "тик" в 1 mS на нем делается)
У АВРки есть таймер Т1... У того таймера режим фазочстотнокорректного ШИМ (по OCR1A или по ICR1...
А в довесок аппаратно управляемые выводы OC1A/OC1B...
Вот и используйте это в качестве источника управляемого ШМИ сигнала.
Понятно, что также после такого использования будут ограничения (по analogWrite() на выводах D9 и D10 к примеру)...
Последний раз редактировалось BOB51 Чт дек 25, 2025 19:21:22, всего редактировалось 1 раз.
У меняу как раз китайский (внутренние 32 МГц). Та же бегущая строка явно шустрее бежит.
Сейчас надо сбегать отправить авитошный заказ, а потом попробую соорудить цикл с микросом, чтобы крутился до заданного времени.
Если не получится, то сделаю макет с такой частотой, а потом буду допиливать.
Сейчас надо сбегать отправить авитошный заказ, а потом попробую соорудить цикл с микросом, чтобы крутился до заданного времени.
Если не получится, то сделаю макет с такой частотой, а потом буду допиливать.
(Аль Котоне, кот ещё тот, Cattus Sapiens)Усы и хвост - мои документы.
Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
За LGTгную начинку читатки вломки (хош в основном та же мега328) - обход "референса" там потребует заметно большего знания даташита, чем по отношению к "чистокорвной" АВР меге328.

Бегущая строка на любом МК одинаково бегать должна (при корректной программе).
Развертка жестко задается, а вот вопрос перезагрузки данных - дело творческое.

УПС...
А это случаем не попытка сделать дубль прожки для управления WS2812?
Так под них в адуринке аж две библиотеки готовые имеются:
Adafruit_NeoPixel и Adafruit_NeoMatrix - устанавливаем и пользуемся.

Бегущая строка на любом МК одинаково бегать должна (при корректной программе).
Развертка жестко задается, а вот вопрос перезагрузки данных - дело творческое.
УПС...
А это случаем не попытка сделать дубль прожки для управления WS2812?
Так под них в адуринке аж две библиотеки готовые имеются:
Adafruit_NeoPixel и Adafruit_NeoMatrix - устанавливаем и пользуемся.


