Значит у Вас какая-то из библиотек не соответствует стандарту С99. Или же некая функция написана в стандарте С99, а компилятор не умеет. И для того, чтобы найти, надо покопаться в коде. У меня ничего подобного не наблюдается. Но я то в LGT8 пока только один Blink и шил то. А у Вас наверное там код посерьёзнее?
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Скорее последствия изготовления программатора на IDE версии 1.8.9, а работа с прошивкой платок LGT на IDE версии 1.8.19. У меня обе версии установлены и допускают независимую работу. Позже ещё разок соберу макет для перепроверки, как настроение будет.
Причем тут "запрещенная реклама"??? Простейший вопрос в скачивании дистрибутива ардуино IDE (без разницы какой из версий) да доступ к онлайн хелпу (с версии 2.х.х эта функция стала "он лайн"). Доступ к обновлению платформ... Ранее таки было "свободно- бесплатное". Проблемы пошли недели две -три назад... Причем случайно обнаружил - попытка переустановки "с нуля" ардуиноIDE и\или обновления через менеджер платформ для версий 1.8.9 и 1.8.19. Да и из 2.3.6 уже справочки с сайта недоступны. Хотя... Я предполагал очередную "прихватизацию" (чтоб простолюбителям проблемы создавать - "...уж слишком моного вумных появилось...")... С другой стороны - переживемс и этот "эксцесс" - не в первый раз уже...
То, что не заблокировали нам в качестве санкций, блокируем мы в качестве безопасности. Вдруг вы на том сайте начнете ВСУ финансировать?! А так - нет доступа, и все за вас спокойны...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Собственно ничего нового - единственно надо к подобной ситуации заранее готовиться. О чем ранее уже не раз говаривалось (те же микрощип да атмел в не столь далеком прошлом)... Нынче стоит присмотреться к группе ARM микроконтроллеров и особо к средствам разработки для ESP8266/ESP32 (наверняка будут следующими в группе "подссакционных")... Жаль только "отечественного софта/IDE" да еще и свободно - бесплатного пока не наблюдается... Кстати... Рекомендую вспомнить работу с разграфленными под линеечку (собственными лапками да карандашиком) листочками, нарисованными от руки таблицами команд для "ручного ассемблера" и старые-добрые MCS51, MCS48, Z80, I8080 (в старых кладовках валяющиеся). Ну и архивными копиями старого софта под ДОС не брезговать. Мало ли чего нас еще из "нежданчиков" ожидает. Весьма хорошо архивируются для резервного восстановления/переноса портабле версии ардуиноIDE 1.8.9 и 1.8.19
Рекомендую вспомнить работу с разграфленными под линеечку (собственными лапками да карандашиком) листочками, нарисованными от руки таблицами команд для "ручного ассемблера" и старые-добрые MCS51, MCS48, Z80, I8080 (в старых кладовках валяющиеся).
Вот вот. Самое время. Валяется целая куча ВЕ31, ВЕ51, ВЕ39, Z80, 580ВМ80 похищенных в своё время ещё предками. Так толком и не освоенных. Мне стыдно.
Для 51 особо проблем нет (если со встроенным ПЗУ)... А вот с внешним - там заморочек заметно больше. Надо и со схемотехникой и с железом сопровождения (программатор для ПЗУшек и эмулятор ПЗУ) иметь под руками... Да и жреть по питанию такая конструкция по нынешний меркам весьма крокодилисто. Однако при продолжении проблем с "ссакциями" (как внешними так и со стороны "внутренних дурней") вполне может сгодиться " на "безрыбье"". Хотя... Возможно братцы с Китая да Северной Кореи нам помогут. (Правда там иероглифы учить... ) А насчет освоения - не нужно печалиться! В каждой эпохе свои предпочтения и необходимости изучения, связанные с практическим применением. Что просто "для беглого ознакомления", а что и фундаментально изучать надо. Элементная база меняется с геометрической прогрессией - все детально знать - мозги взррвутся. На сегодня надо скорее " изучение по прециденту" применять.
Значит у Вас какая-то из библиотек не соответствует стандарту С99 .....
Нашел я таки откуда выскакивает Warning: linked C library does not conform to C99; avrdude may not work as expected Только вот устранить пока можно только "шаманизмом"... цепочкой манипуляций при открытии проекта... Вероятная причина - у меня в обновлениях платформ от MCUdude появилась аврдуде 8... и какого то х... по умолчанию запуск программатора иногда на нее перескакивает... Поточнее надо б статистику собрать, да весьма нудно-долго (на сегодня в моих краях с эляктричеством нестабильно)... Помимо прочего рекомендуется временные файлы предыдущего "мусора" в случае с эксплуатацией портабле версий поудалять. Размещение этого мусора ищем в скрытых папках по этому пути:
Warning: linked C library does not conform to C99; avrdude may not work as expected
по завершении операций загрузки в МК платформы lgt8fx версии 2.0.7 для портабле версий ардуиноIDE 1.8.9 и/или 1.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
в данном случае сама IDE на диске D, а вместо MegaCoreX может выскочить любая из обновленных платформ от MCUdude, имеющая в составе avrdude\8.0-arduino.1 .... Собственно кардинальным лечением после плясок шамана стало изменение содержимого в файле по адресу
Осталась только еще одна "нервность" - двойной вызов и исполнение аврдуде при операции загрузки бутлоадера - но там х/з... может для LGT так и надо - в принципе "работает - не тронь"...
Новогод скоро... Задумка сделать несколько проектов АВРкиных замигаек под ассемблером, под адуринкой и под Си в атмелстудии... На одном и том же МК (тинька 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.... Я такое еще не пробовал (может и не получится - я с Си только в рамках адуринки пока дружу)...
Карма: 22
Рейтинг сообщений: 94
Зарегистрирован: Чт мар 26, 2009 04:35:04 Сообщений: 3120 Откуда: Москва
Рейтинг сообщения:0
Спасибо.
Мне удалось сделать быстрее - до 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); // ограничиваем диапазон, чтобы исключить выбросы
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); // поэтому пока отключил
На очереди работа с портами вместо digitalRead&Write и хотел использовать micros вместо delayMicroseconds, но нужно ждать этого микроса и ничего не делать (остановка программы).
_________________ (Аль Котоне,кот ещё тот,Cattus Sapiens) Усы и хвост - мои документы. Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
Serial сам и ресурсы и время занимает. Даже ежли не используется, но есть loop там проходит опрос. Собственно для спецприменений в которых требуется высокоскоростной "лаподрыг" при АВРках предпочтителен ассемблер и специально под ту задачу выполненный МК периферии (отдельный "малолапый" МК). А "жирному" МК оставляем вычисления и прочую "интеллектуальную" работу. Единственно подогнать под алгоритм задачи программу под ассемблером дело таки достаточно долгое (в сравнении с тем же СИ(или иным ЯВУ)). Зато и результат гораздо удачнее может получиться. Плюс перебор возможных вариантов решения исходного алгоритма. Я в случае адуинки для "высокоскоростных" протоколов микро LAN и "умных светиков" готовые библиотеки использую. Остальное особо проблем не представляет и для типовой нанки с 16МГц штатного исполнения. Как вариант LGT китайские - но там только "в рамках ардуино "референса"" - их даташиты я лишь бегло в компе просматривал, делать полную распечатку с проработкой пока смысла нет. кыстати... Поскольку Т0 в ардуино трогать нельзя - системный таймер (максимум второй машинный "тик" в 1 mS на нем делается) У АВРки есть таймер Т1... У того таймера режим фазочстотнокорректного ШИМ (по OCR1A или по ICR1... А в довесок аппаратно управляемые выводы OC1A/OC1B... Вот и используйте это в качестве источника управляемого ШМИ сигнала. Понятно, что также после такого использования будут ограничения (по analogWrite() на выводах D9 и D10 к примеру)...
Последний раз редактировалось BOB51 Чт дек 25, 2025 19:21:22, всего редактировалось 1 раз.
Карма: 22
Рейтинг сообщений: 94
Зарегистрирован: Чт мар 26, 2009 04:35:04 Сообщений: 3120 Откуда: Москва
Рейтинг сообщения:0
У меняу как раз китайский (внутренние 32 МГц). Та же бегущая строка явно шустрее бежит.
Сейчас надо сбегать отправить авитошный заказ, а потом попробую соорудить цикл с микросом, чтобы крутился до заданного времени. Если не получится, то сделаю макет с такой частотой, а потом буду допиливать.
_________________ (Аль Котоне,кот ещё тот,Cattus Sapiens) Усы и хвост - мои документы. Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
За LGTгную начинку читатки вломки (хош в основном та же мега328) - обход "референса" там потребует заметно большего знания даташита, чем по отношению к "чистокорвной" АВР меге328. Бегущая строка на любом МК одинаково бегать должна (при корректной программе). Развертка жестко задается, а вот вопрос перезагрузки данных - дело творческое. УПС... А это случаем не попытка сделать дубль прожки для управления WS2812? Так под них в адуринке аж две библиотеки готовые имеются: Adafruit_NeoPixel и Adafruit_NeoMatrix - устанавливаем и пользуемся.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения