Ошибка компиляции для платы lgt8f328

Hi :

I am tring to get battery info by IP5306_I2C , but something going wrong :

Arduino IED 1.8.15 and VSCODE
board esp8266 and. LGT8F328P the same compile error
/Users/xiaoning/Documents/Arduino/libraries/IP5306/IP5306.cpp: In member function ‘uint8_t IP5306::writeBytes(uint8_t, uint8_t, uint8_t*, uint8_t)’:
/Users/xiaoning/Documents/Arduino/libraries/IP5306/IP5306.cpp:13:38: error: ‘I2C_ERROR_OK’ was not declared in this scope
return Wire.endTransmission() == I2C_ERROR_OK;

but ESP32 is OK

so , I think #define I2C_ERROR_OK can solve this issue

Первая прошивка


Итак, разобрались со средой разработки, теперь можно загрузить прошивку. Рекомендую загрузить пустую прошивку, чтобы убедиться, что все драйвера установились и плата вообще прошивается. Также лучше делать это с новой или заведомо рабочей платой.

1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

  • Неисправен USB кабель.
  • Неисправен USB порт компьютера.
  • Неисправен USB порт Arduino.
  • Попробуйте другой компьютер, чтобы исключить часть проблем из списка.
  • Попробуйте другую плату, чтобы исключить часть проблем из списка.
  • На плате Arduino сгорел диод по питанию USB.
  • Плата Arduino сгорела полностью из-за неправильного подключения питания или короткого замыкания

2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Кабель должен быть data-кабелем, а не “зарядным”.
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб.
  • Не установлены драйверы для Arduino.

3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, отличный от COM1. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер CH341.
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику

4. Выбираем свою плату. Если это Arduino Nano, выбираем в ИнструментыПлатаArduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.

  • [Для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем ИнструментыПроцессорATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p.

Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.

Ошибки компиляции


Возникает на этапе компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать.
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека <название файла>, и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

Частые ошибки в коде, приводящие к ошибке компиляции


  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

Ошибки загрузки


Возникают на этапе, когда программа успешно скомпилирована и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения


Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет критических ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс Flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов. Подробнее в этом уроке.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Подробнее в этом уроке.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу.
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь.
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

Hi,
I can not compile anything. Although fully complied with all the conditions specified in the file readme. The installation path is correct. All is correct, but I have error
«C:UsersKonstyantynAppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5/bin/avr-gcc» -c -g -Os -Wall -Wextra -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_LARDU_328E -DARDUINO_ARCH_AVR «-ID:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8f» «-ID:KonstyantynDocumentsArduinohardwareLGTavrvariantslgt8fx8p» «D:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8fwiring_analog.c» -o «C:UsersKONSTY1AppDataLocalTemparduino_build_105324corewiring_analog.c.o»
«C:UsersKonstyantynAppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5/bin/avr-gcc» -c -g -Os -Wall -Wextra -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_LARDU_328E -DARDUINO_ARCH_AVR «-ID:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8f» «-ID:KonstyantynDocumentsArduinohardwareLGTavrvariantslgt8fx8p» «D:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8fhooks.c» -o «C:UsersKONSTY1AppDataLocalTemparduino_build_105324corehooks.c.o»
«C:UsersKonstyantynAppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5/bin/avr-gcc» -c -g -Os -Wall -Wextra -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_LARDU_328E -DARDUINO_ARCH_AVR «-ID:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8f» «-ID:KonstyantynDocumentsArduinohardwareLGTavrvariantslgt8fx8p» «D:KonstyantynDocumentsArduinohardwareLGTavrcoreslgt8fwiring_pulse.c» -o «C:UsersKONSTY~1AppDataLocalTemparduino_build_105324corewiring_pulse.c.o»
cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

exit status 1
Ошибка компиляции для платы LGT8F328P-LQFP32 MiniEVB.

In this case, I just tried to compile one of the examples for your board.
Will there be any help from your side?

ua6em

ua6em аватар

Offline

Зарегистрирован: 17.08.2016

Блинк на третьем таймере:
Скетч:

// Пример использования Таймера 3  (Блинк на таймере) для платы WAVGAT
// (с) UA6EM на основе заимствований на arduino.ru у DIMAX и ЕвгенийП
// используется библиотека ЕвгенийП  "ConstTimers.h"

#include "lgtx8p.h"

#ifndef CONSTANTS
  #include "ConstTimers.h"
  // Параметры для работы таймера/счётчика №3 на частоте 1Гц
  //
  constexpr uint8_t timerBits3 = getPrescalerBits(1, 1);
  constexpr uint16_t timerTicks3 = getTimerTicks(1, 1);
  //
#endif

void setup() {

   #ifdef CONSTANTS
    TCCR3B = 4;
    OCR3A = 62500; 
   #else
    TCCR3B =1<<WGM32 |timerBits3; // Режим СТС WGM3[3:0]=4 или 12
    
    if(timerTicks3 > 255){
    uint8_t r3ah = timerTicks3 / 256; 
    OCR3AH = r3ah;
    uint8_t r3al = timerTicks3 % 256;
    OCR3AL = r3al;
    }else{
    OCR3AH = 0x00;
    uint8_t al = timerTicks3;
    OCR3AL = al;
    }   
  #endif
 DDRF = 1<<2 | 1<<1;   // Разрешаем вывод в порты D1 и D2 
 TCCR3A=1<<COM3A0 | 1<<COM3B0;  // ПИН D2 + TXI

 pinMode(13,OUTPUT);
 //Serial.begin(115200);
 
 }// end-Setup

void loop(){
  digitalWrite(13,!digitalRead(2));
//  Serial.println(timerBits3);
   } // END

Библиотека:

#ifndef  CONSTTIMERS_H
#define CONSTTIMERS_H

///////////////////////////////////////////////////////////////////////////////
//
//  Недобиблиотека вычисления битов конфигурации делителя частоты и 
//  количества тиков таймера по заданной частоте.
//
//  Предназначена для использования с микроконтроллером ATmega328P 
//  (например, в Ардуино или в AVR-студии). Модификация для других 
//  микроконтроллеров возможна и несложна, как будет показано ниже.
//
//  Основная особенность: ВСЕ ВЫЧИСЛЕНИЯ ПРОИСХОДЯТ ВО ВРЕМЯ КОМПИЛЯЦИИ. 
//  В РЕЗУЛЬТИРУЮЩИЙ КОД НЕ ПОПАДАЕТ НИ ОДНОГО БАЙТА НИ КОДА, НИ ДАННЫХ.
//
//    замечание о точности: 
//      гарантировать точность произвольной частоты невозможно, т.к. требуемый период 
//      может элементарно не являться делителем тактовой частоты микроконтроллера или 
//      его, может быть, невозможно подобрать имеющимися делителями частоты. 
//      Недобиблиотека ВСЕГДА выдаёт наилучший из возможных результатов для заданной частоты
//      на заданном таймере. Но при этом нет никакой возможности узнать насколько хорош
//      результат и какова погрешность. Если требуется инструмент для «зрячего» выбора
//      частот, следует взять «калькулятор таймеров» (их много, например, есть и у автора).
//    конец замечания о точности.
//
//  ИСПОЛЬЗОВАНИЕ
//
//  Для использования необходимо включить файл «ConstTimers.h» и определить константы с 
//  модификатором constexpr для нужных конфигурационных битов и количества тиков, которым 
//  присвоить значения, возвращаемые функциям getPrescalerBits и getTimerTicks соответсвенно. 
//  Обе функции принимают два параметра – номер таймера и требуемую частоту. Функция 
//  getPrescalerBits возвращает результат типа uint8_t. Функция getTimerTicks возвращает результат 
//  типа uint16_t, т.к. таймер может быть 16-битным, для 8-битных таймеров значение не превышает 255.
//
//  Например:
//
//    #include <ConstTimers.h>
//    //
//    // Параметры для работы таймера/счётчика №2 на частоте 1кГц
//    //
//    constexpr uint8_t timerBits2 = getPrescalerBits(2, 1000);
//    constexpr uint8_t timerTicks2 = getTimerTicks(2, 1000);
//    //
//    // Параметры для работы таймера/счётчика №1 на частоте 500Гц
//    //
//    constexpr uint8_t timerBits1 = getPrescalerBits(1, 500);
//     constexpr uint16_t timerTicks1 = getTimerTicks(1, 500);
//    .............
//    //
//    // Конфигурация таймеров
//    // таймер №2
//    TCCR2B = timerBits2;
//    OCR2A = timerTicks2;
//    // таймер №1
//    TCCR1B = timerBits1;
//    OCR1B = timerTicks1;
//
//Результат работы будет точно такой же, как если написать константы вместо вызовов функций:
//
//  TCCR2B = 4;
//  OCR2A = 250;
//  TCCR1B = 1;
//  OCR1B = 32000;
//
// Ни на один байт код не изменится.
//
//  КОФИГУРАЦИЯ:
//
//  1. расчёт производится для текущей тактовой частоты микроконтроллера. Если нужно 
//    считать для какой-то другой частоты, измените константу ниже:
//
#define FCPU  F_CPU
//
//  2. ниже приведён массив конфигурации таймеров. Количество элементов массива 
//    соответсвует количеству таймеров. Нулевой элемент описывает нулевой таймер, 
//    первый элемент – первый таймер и т.д. Если требуется расширить недобиблиотеку для других 
//    микроконтроллеров, нужно изменить именно этот массив и больше изменять ничего не надо.
//
//  В массиве для каждого таймера указано:
//    1) разрядность таймера в виде максимально возможного значения количества тиков 
//      (для 8-разрадных таймеров – 0xFF, для 16-разрядных – 0xFFFF.
//    2) указатель на массив делителей частоты. Делители начинаются с 1 (делитель 0 писать не нужно)
//    3) количество делителей частоты у данного таймера.
//
struct STimerParameters {
  const uint32_t maxValue;
  const int * prescalers;
  const uint8_t totalPrescalers;
};

constexpr  int prescalers01[] = {1, 8, 64, 256, 1024 };
constexpr  int  prescalers2[] = {1, 8, 32, 64, 128, 256, 1024 };

constexpr STimerParameters timerParameters[3] = {
  {0x000000FFul, prescalers01, sizeof(prescalers01) / sizeof(prescalers01[0])},
  {0x0000FFFFul, prescalers01, sizeof(prescalers01) / sizeof(prescalers01[0])},
  {0x000000FFul, prescalers2, sizeof(prescalers2) / sizeof(prescalers2[0])},
};
constexpr int8_t totalTimers = sizeof(timerParameters) / sizeof(timerParameters[0]);
//
//
// ЛИЦЕНЗИЯ
//
// Данный код поставляется по лицензии ПНХ.
//
// 1. Вы можете свободно использовать или не использовать его в коммерческих, 
//    некоммерческих, и любых иных, не запрещённых законом, целях.
//
// 2. Автор не несёт решительно никакой ответственности за любые положительные
//    или отрицательные результаты использования или неиспользования данного кода.
//
// 3. Если Вам таки хочется сделать автору предъяву, то Вы знаете, куда
//    Вам следует обратиться. А если не знаете, то см. название лицензии.
//
// 4. Если данный код вдруг Вам пригодился (как учебник или ещё как что) и Вам
//    почему-либо (ну, приболели, может) захотелось отблагодарить автора рублём,
//    то это всегда пожалуйста – WebMoney, кошелёк № R626206676373
//
// 5. Возникновение или невозникновение у Вас желаний, обозначенных в п.4 
//     настоящей лицензии никак не связано с п.1, который действует безусловно 
//     и независимо от п.4.
//
// 6. Если данный код нужен Вам с какой-либо другой лицензией, например, с
//     сопровождением или Вы нуждаетесь во внесении изменений, свяжитесь с автором
//     на предмет заключения договора гражданско-правового характера.
//
///////////////////////////////////////////////////////////////////////////////

constexpr uint32_t getPeriod(const uint32_t frequency) {
  return (FCPU + frequency / 2) / frequency;
}

constexpr uint16_t prValue(const int8_t prescalerId, const int8_t nTimer) {
  return timerParameters[nTimer].prescalers[prescalerId];
}

constexpr uint32_t getDesiredTicks(const uint32_t frequency, const int8_t prescalerId, const int8_t nTimer) {
  return (getPeriod(frequency) + prValue(prescalerId, nTimer) / 2) / prValue(prescalerId, nTimer);
}

constexpr uint32_t correctTicks(uint32_t dTicks, const uint32_t maxValue) {
  return dTicks > maxValue ? maxValue : dTicks;
}

constexpr uint32_t getTicks(const uint32_t frequency, const int8_t prescalerId, const int8_t nTimer) {
  return prescalerId >= timerParameters[nTimer].totalPrescalers ? 0x1FFFFFFF :
  correctTicks(getDesiredTicks(frequency, prescalerId, nTimer), timerParameters[nTimer].maxValue);
}

constexpr uint32_t getBits(const int8_t prescalerId, const int8_t nTimer) {
  return prescalerId >= timerParameters[nTimer].totalPrescalers ? timerParameters[nTimer].totalPrescalers : prescalerId + 1;
}


constexpr int32_t absError(const uint32_t frequency, const int8_t prescalerId, const int8_t nTimer) {
  return abs(prescalerId >= timerParameters[nTimer].totalPrescalers ? 0x1FFFFFFF :
    static_cast<int32_t>(getTicks(frequency, prescalerId, nTimer) * prValue(prescalerId, nTimer)) -
    static_cast<int32_t>(getPeriod(frequency)));
}

constexpr uint8_t getPrescalerId(const uint32_t error, const uint32_t newError, const uint8_t prId, const uint8_t candidate, const uint32_t frequency, const int8_t nTimer) {
  return
  (prId >= timerParameters[nTimer].totalPrescalers) ? candidate
  : getPrescalerId(newError, absError(frequency, prId+1, nTimer), prId+1, (error <= newError) ? candidate : prId, frequency, nTimer);
}

constexpr uint16_t getTimerTicks(const int8_t nTimer, const uint32_t freq) {
  return getTicks(freq, getPrescalerId(0x1FFFFFul, absError(freq, 0, nTimer), 0, 0, freq, nTimer), nTimer);
}

constexpr uint8_t getPrescalerBits(const int8_t nTimer, const uint32_t freq) {
  return getBits(getPrescalerId(0x1FFFFFul, absError(freq, 0, nTimer), 0, 0, freq, nTimer), nTimer);
}

#endif  //  CONSTTIMERS_H

  • #1

Доброго времени суток!!
Столкнулся с проблемой.
Записал скетч на плату (Arduino nano V3.0, на чипе WAVGAT AVGA328P AU1738, а на другой микросхеме WCH CH340G), Arduino IDE — пишет Загрузка завершена ( тобишь, скетч загружен на плату), подключаю светодиоды, и просто белым горят все диоды ( проверил, подключен управляющий контакт именно к DI в начале ленты ( ну не лента а Гирлянда WS2811) на кнопку вообще 0 реакции!!. Может Ардуино ИДЕ не поддерживает эту плату??(( или в чем может быть проблема??

Wan-Derer

  • #2

@EugeniUP, В IDE надо подсунуть ядро для этого МК. Как это сделать описано в карточке товара, там где ты её покупал.
Вероятность что запустится — примерно 0.1%

  • #3

@EugeniUP, В IDE надо подсунуть ядро для этого МК. Как это сделать описано в карточке товара, там где ты её покупал.
Вероятность что запустится — примерно 0.1%

Ура товарищи ПОБЕДА)) Работает!! Нашел библиотеки и софт для WAVGAT UNO R3 ; NANO V3.0 ; и Pro mini.
Если у кого-то будет такая же проблема, поделюсь файлами, а там дальше все просто.WAVGAT.jpg

kostyamat

  • #4

Ура товарищи ПОБЕДА)) Работает!! Нашел библиотеки и софт для WAVGAT UNO R3 ; NANO V3.0 ; и Pro mini.
Если у кого-то будет такая же проблема, поделюсь файлами, а там дальше все просто.Посмотреть вложение 7399

Та какая там победа? Это только начало, у вас с этой платкой просто ещё до секса не дошло, только цветочно+конфетный период в разгаре.
Ардуино кор, для этой «прелести» корявый до ужаса, как и сама плата.
Хотя чип, сам по себе, и не плохой, покруче оригинала будет.
Ардуино кор лучше этот использовать https://github.com/dbuezas/lgt8fx
А сами платы такие брать

  • LGT8F328P.png

    152.4 KB
    Просмотры: 65

  • #5

Заказал на али простую nano 3 , но прислали сиё устройство WAVGAT NANO 3. В IDE дрова и библиотеке установил Blink на ней заработал. Заливаю прошивку БУДИЛЬНИК-РАССВЕТ Выодит «class EEPROMClass’ has no member named ‘update’».
Если выбрано в IDE WAVGAT NANO 3 то в программе где стоят строки EEPROM.update , update-неактивно, если в IDE поставить стандартную nano 3 то строки с EEPROM.update активируются. Возможноли доточить данный скетч для WAVGAT ? подскажите где копать и куда ? или только не ней Blink и будет работать

  • Screenshot_12.jpg

    94.5 KB
    Просмотры: 120

  • Screenshot_13.jpg

    95.2 KB
    Просмотры: 91

kostyamat

  • #6

Заказал на али простую nano 3 , но прислали сиё устройство WAVGAT NANO 3. В IDE дрова и библиотеке установил Blink на ней заработал. Заливаю прошивку БУДИЛЬНИК-РАССВЕТ Выодит «class EEPROMClass’ has no member named ‘update’».
Если выбрано в IDE WAVGAT NANO 3 то в программе где стоят строки EEPROM.update , update-неактивно, если в IDE поставить стандартную nano 3 то строки с EEPROM.update активируются. Возможноли доточить данный скетч для WAVGAT ? подскажите где копать и куда ? или только не ней Blink и будет работать

В теме 4 сообщения до вас. Неужели так сложно прочитать?

  • #7

В теме 4 сообщения до вас. Неужели так сложно прочитать?

Все четыре прочитал. Для данной платы в IDE все библиотеки и софт установил. Но при компиляции скетча на эту плату выводит ошибку

kostyamat

  • #8

Какие библиотеки установили? Какую ошибку выдает? Лог компиляции скиньте

  • #9

Какие библиотеки установили? Какую ошибку выдает? Лог компиляции скиньте

Библиотеки ставил какие с проектом шли, а также какие для платы предлагали.

Arduino: 1.8.10 (Windows 7), Плата:»WAVGAT NANO 3.0″
Внимание: platform.txt из ядра ‘Arduino AVR Boards’ содержит устаревшие recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{build.path}/{archive_file}» «{object_file}», автоматически преобразовано в recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{archive_file_path}» «{object_file}». Ожидайте обновления ядра.
E:SISTEMDownloadsБУДИЛЬНИК-РАССВЕТDawn-Clock-masterfirmwaredawn_clock_v1.1tmpdawn_clock_v1.1dawn_clock_v1.1.ino: In function ‘void encoderTick()’:
dawn_clock_v1.1:299:14: error: ‘class EEPROMClass’ has no member named ‘update’
dawn_clock_v1.1:300:14: error: ‘class EEPROMClass’ has no member named ‘update’
dawn_clock_v1.1:333:14: error: ‘class EEPROMClass’ has no member named ‘update’
Несколько библиотек найдено для «GyverEncoder.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesGyverEncoder
Несколько библиотек найдено для «GyverTM1637.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesGyverTM1637
Несколько библиотек найдено для «CyberLib.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesCyberLib
Несколько библиотек найдено для «Wire.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesWire
Несколько библиотек найдено для «RTClib.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesRTClib
Несколько библиотек найдено для «EEPROM.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesE2PROM
Несколько библиотек найдено для «GyverTimer.h»
Используется: E:SISTEMDownloadsarduino-1.8.10-windows_2020arduino-1.8.10librariesGyverTimer
exit status 1
‘class EEPROMClass’ has no member named ‘update’

kostyamat

  • #10

Замените все вызовы EEPROM.update() на EEPROM.write() должно откомпилироваться

  • #11

Теперь просто «Ошибка компиляции для платы WAVGAT NANO 3.0.»
и лог ооочень длинный
А что это вначале лога устаревшее, может изза этого ошибка?
«Внимание: platform.txt из ядра ‘Arduino AVR Boards’ содержит устаревшие recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{build.path}/{archive_file}» «{object_file}», автоматически преобразовано в recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{archive_file_path}» «{object_file}». Ожидайте обновления ядра.
C:Program Files (x86)111ArduinolibrariesGyverTM1637GyverTM1637.cpp: In member function ‘void GyverTM1637::display(uint8_t*)’:»

«

  • 10.5 KB
    Просмотры: 24

  • #12

Такое ощущение что эта программа на вавгате не заработает. У вавгата какоето несварение на библиотеки от AlexGyvera

kostyamat

  • #13

Такое ощущение что эта программа на вавгате не заработает. У вавгата какоето несварение на библиотеки от AlexGyvera

Гайвер пишет хорошо, но очень уж неаккуратно. О чем и говорит лог. К примеру: функция ожидает значения типа int, а получает byte, или возврат значения из функции типа void. Компилятор под avr такого уже «насмотрелся» и поэтому матерится, но автоматически исправляет некоторые ошибки. А для этой платы он ещё «молодой и жизни не видел». Вот поэтому такое.

Ещё раз, рекомендую удалить все, что у вас установлено под эту плату, и поставить ЭТОТ кор https://github.com/dbuezas/lgt8fx все остальное, что гуляет в сети, будет выносить вам мозг (хотя и этот кор ещё не идеален, но стремится к этому). Ставьте кор через json, он будет вовремя обновляться.
И таки включите вывод полного лога компиляции. Возможно что то, что валит компиляцию, как раз и не видно. Потому как ошибки выше, относящиеся к экрану, хоть и ошибки — но это скорее предупреждения. Если бы компилятор не знал как их исправить, он бы завалился б на первой же. А так матерится, но идёт дальше.

Изменено: 17 Янв 2020

  • #14

@kostyamat,
Спасибки большое!!! По крайней мере компилируется. и не ругается. Подскажи а частоту какую ставить. плата вавгата на 12MHz.Screenshot_14.jpg

kostyamat

  • #15

Подскажи а частоту какую ставить. плата вавгата на 12MHz

Честно говоря — я не знаю. Именно такой платы у мен не было. Кварц не стандартный. Попробуйте поставить 16МГц.

Вообще-то, этот чип очень даже неплох, в некоторых случаях он даже на много круче оригинала. Исходя из того, что энтузиасты активно делают под него кор, и на данный момент он вполне работоспособен, то брать платы на LGT8F328 можно, лично у меня есть парочка и я очень доволен ими.
Но брать рекомендую только такие как ниже, а вот Вавгат рекомендовать не могу. Там много ошибок как в схемотехнике, так и кварц тот-же странный.
Кстати, а кварц точно к микроконтроллеру подключен, а не к микросхеме UART-USB моста? Потому, как сам контроллер вообще без кварца вполне работоспособен, при чем даже на частоте 32МГц. Присмотритесь. Если кварц для моста, — ставьте любую частоту, хоть все 32МГц.

  • LGT8F328P.png

    152.4 KB
    Просмотры: 21

Изменено: 19 Янв 2020

  • #16

Кварца стоит 2 на контроллер, и на UART . Заливал блинк, при установке внешней частоты что 8м, 16м что 32м мигание идет вместо 1сек около 3сек. При установке внутренней частоты, блинк работает чётко и 8м и на 32м.
Залил прошивку будильник-рассвет, и компелировась и заливалась быстро и без ошибок. При внутренней частоте 32м, 16м работает немного глючно -подвисает, на дисплее цифры непонятные проскакивают, мигает периодически. Постабильнее работает при частоте 4м и 2м но тоже не без греха.

kostyamat

  • #17

@Ploki30, эту проблему обсуждали на форуме arduino.ru. Дело в том, что на Вавгат есть ошибка в схемотехнике. Там какая-то нога микроконтроллера висит в воздухе, а должна быть подтянута к питанию. Как результат, часть выводов выдает 3.3в вместо ожидаемых 5-ти. Некоторая периферия, рассчитанная на подключение к обычным ардуинам, и ожидающая уровень единицы близкой к 5 вольтам, работает со сбоями. Какая нога и т.п. не подскажу, не углублялся в тему.
К тому же, если помните, у вас были предупреждения об ошибках как раз с экраном. Компилятор то их исправил (на свое усмотрение), но как он это сделал, именно для этой платы, никому не известно. Вполне возможно, что для атмега он исправляет так, что все это остаётся работоспособным, а для LGT — косячит, и результат менее предсказуем.

Изменено: 20 Янв 2020

  • #18

@kostyamat, Всётаки больше проблема не изза платы вавгат, а или прошивки или библиотек, на обыкновенной собранной схеме на плате NANO, на экране будильника-рассвета, периодически вылетает билеберда .

kostyamat

  • #19

@Ploki30, вполне возможно. Я уже говорил, что скетч написан достаточно неряшливо. У автора была задача видео записать, а не чтобы работало всегда четко. В принципе это не в обиду автору скетча, все таки это у него специфика такая. К тому же, это заставляет людей, которым это нужно, пробовать себя в программировании, дабы прошивку подправить, или под себя чего-то доделать.

  • #20

Всем доброго времени суток! Помогите пожалуйста. Хочу сделать Ambilight подсветку. Но столкнулся с проблемой: не могу откомпилировать скетч. Все время ругается на библиотеку от Гайвера.
Несколько библиотек найдено для «FastLED.h»
Используется: C:Program
exit status 1
Ошибка компиляции для платы WAVGAT UNO R3.

Плата Wavgat Uno R3

  • 37.4 KB
    Просмотры: 12

  • #21

Не знаю, что там у Вас с LG8 не получается с EEPROM. Берите модуль часов с EEPROM на борту. Меняйте хоть на 256 килобитную и в путь. Она на той же шине будет висеть. И еще в нее можно все текстовые константы загнать и считывать при необходимости. А уж 32 Мгц тактовой хватит для производительности. Заодно и место во флеше освободите под программу.

Задаете массивчик временный, например char rdata[32]; в него считываете данные из EEPROM. Потом выводите куда там надо. На дисплей, в UART. Перед следующим использованием почистить.

}

char rdata[32];

readEEPROM(0x50, 0, rdata, 20);   - грузим с внешней EEPROM
Serial.println((char*)rdata);             - Выводим в UART
memset(rdata, 0, sizeof(rdata));    -Чистим память под массив


Сама функция
void readEEPROM(int deviceaddress, unsigned int eeaddress, unsigned char* data, unsigned int num_chars) {
  unsigned char i = -1;
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress >> 8));   // MSB
  Wire.write((int)(eeaddress & 0xFF)); // LSB
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress, num_chars);

  while (Wire.available()) data[i++] = Wire.read();



}

Далее вместо стандартной analogRead() используйте вот эту:

unsigned int analogRead_C(byte channel){
  ADMUX = channel; // ADC pin
  ADCSRA |= 1<<ADEN;
  ADCSRA |= 1<<ADSC;
  while(!(ADCSRA & (1<<ADIF)));
  ADCSRA |= 1<<ADIF;
  byte low  = ADCL;
  byte high = ADCH;
  ADCSRA &= ~(1 << ADEN);  // отключаем АЦП, для уменьшения энергопотребления
  return (high << 8) | low;
}

Там для оптимизации кода непаханное поле. Того глядишь еще и места полно останется свободного.

Изменено: 30 Янв 2020

  • #22

Здравствуйте.
Купил «китайскую» Arduino nano.
Драйвера установились нормально.
Прошил «Blink». Прошивка прошла успешно. Диод заморгал. Но частота моргания в 4 раза меньше, чем заданно.
Например при указании времени горения 10 секунд, светодиод горит 40 секунд.
Подскажите пожалуйста, из-за чего такое происходит и как с этим бороться?2.png

У меня arduina такая
IMG_20200130_201100.jpg
на верхнем кварце написано x 0z, на нижнем — Z0L. На какую частоту они рассчитаны я не нашел.

А как в arduino ide изменить частоту?
При выборе типа процессора предлагает 3 варианта и в них не указывается рабочая частота:
1580409774953.png

Так же при выборе платы только один вариант Arduino nano и рабочая частота не указана.

Скетч взят из примеров. Называется «Blink»
В нем изменял только время задержки.
1580410716442.png

  • 1580409656280.png

    65.5 KB
    Просмотры: 26

  • #24

@Ploki30, Чтобы эта плата адекватно работала в АВР COre надо пересобрать ее загрузчик на 16 Мгц внутреннего генератора.

  • #25

@yuryboyko, Возле кварца белым по черному написано 12 Мгц. Если дороги с кварца идут на камешек, то поменяйте на 16 Мгц. Тайминги встанут на место. Но скорее всего он на камень идет.

  1. При выполнении данного кода

    #include <DHT_U.h>

    // тип датчика DHT
    #define DHTTYPE DHT11

    DHT11
    int pinDHT11=9;

    int pinSoilMoisture=A0;

    int pinTMP36=A1;

    int pinPhotoresistor=A2;

    DHT dht(pinDHT11, DHTTYPE);

    void setup()
    {
    Serial.begin(9600);
    dht.begin();
    }

    void loop()
    {
    float h = dht.readHumidity();
    if (isnan(h))
    {
    Serial.println(«Failed to read from DHT»);
    }
    else
    {
    Serial.print(«HumidityDHT11= «); Serial.print(h);Serial.println(» %»);
    }
    int val0=analogRead(pinSoilMoisture);
    Serial.print(«SoilMoisture= «); Serial.println(val0);

    int val1=analogRead(pinTMP36);
    int mV=val1*1000/1024;
    int t=(mV500)/10;
    Serial.print(«TempTMP36= «); Serial.print(h);Serial.println(» C»);
    int val2=analogRead(pinPhotoresistor);
    Serial.print(«Light= «); Serial.println(val2);

    Serial.println( );
    delay(5000);
    }

    выходит ошибка

    Arduino: 1.8.9 (Windows 10), Плата:»WAVGAT UNO R3″

    Внимание: platform.txt из ядра ‘Arduino AVR Boards’ содержит устаревшие recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{build.path}/{archive_file}» «{object_file}», автоматически преобразовано в recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{archive_file_path}» «{object_file}». Ожидайте обновления ядра.
    In file included from C:UsersdosDesktopsketch_apr23asketch_apr23a.ino:1:0:

    C:UsersdosDocumentsArduinolibrariesDHT_sensor_library/DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    compilation terminated.

    exit status 1
    Ошибка компиляции для платы WAVGAT UNO R3.

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»

  2. Скорее всего, в библиотеке есть коды под определённые атмеги , а вавгатовского чипа (lgt8) там нет . Загляни по представленному пути.
    У меня с библиотекой серво на этой плате таже проблема.

  3. marting
    английский понимаете?
    вот вам компилятор пишет:
    Adafruit_Sensor.h: No such file or directory

    Последнее редактирование: 23 апр 2019

  4. барахло от Вавгата лучше не покупать

  5. Фаил библиотеки не находит.

  6. Боком выходит? Или как?Это лохам не даст. Нормальным пацанам пусть попробует не дать!Не всегда.Строки — самая большая условность в жизни. Они есть грань меж бытия и небытия, они существуют параллельно нам, никогда не пересекая нас. Познать строку — познать себя. Позная себя, можно определить грань бытия, грань материального, вечного…Ладно, ладно шучу.

    Дело в том, что как я называю «строка» — на самом деле условность. На данном экране функция setCursor() — определяется по пиксельно сначала ось x, потом y. Почему я говорю строка? Так удобней, да и как это иначе назвать. Например, взяв лист А4 вы увидите на нем, то самое ничего. Вы можете написать на нем, что-либо, например слова в строку. Чем больше шрифт, тем меньше на него поместиться. Как-то так. Да, есть и переменные типа string, которые также я называю «строками», но я указываю, что ето есть переменная. Со столбцами тажа лажа. Ну, ето если я вас, товарищ, правильно понял

    О, новый камрад, превед! Боюсь, что если поставить динамичные аргументы, выйдет небольшая (а возможно и большая лажа) абесню:
    У меня одна строка, которая состоит из кучи других. Перед ней стоит setCursor(), в котором изначально заложено положение первого пикселя, который будет напечатан. Если в процессе мы, товарищ, изменим эти аргументы, то 1-ый пиксель просто сместится и надпись вместе с ним. Разделения не произойдет, т.к. это 1-на строка Если не понятно, я вам могу оформить красочно пару-тройку фотокарточек на эту тему (Канешна в паинте, но энивей), чтобы вы, камрад, точно все понялиТоварищ, а можно с 3-его предложения по-подробней? Слишком обширен ваш словарный запас, оттого понять вас маргинальному пролетариату не представляется возможным, заранее спасибо

    Последнее редактирование модератором: 30 апр 2019

  7. Написано же даже по-русски:

    Жди, пока узкоглазый Ляо сделает тебе библиотеку.
    Есть альтернатива — взять учебник по АВР и накатить знаний. И тогда на дядю Ляо можно положить огромный русский her.

  8. Через менеджер библиотек установил Adafruit Unified Sensor Library.

Hello. I have WAVGAT UNO R3 and it’s not compilling on new versions of Arduino IDE.
Errors:
`Arduino: 1.8.12 (Windows 7), Плата:»WAVGAT UNO R3″

Внимание: platform.txt из ядра ‘Arduino AVR Boards’ содержит устаревшие recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{build.path}/{archive_file}» «{object_file}», автоматически преобразовано в recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{archive_file_path}» «{object_file}». Ожидайте обновления ядра.
ПРЕДУПРЕЖДЕНИЕ: библиотека U8glib должна запускаться на архитектурах avr, sam и может быть несовместима с вашей платой на архитектуре AVR.
W:ArduinohardwareWAV8FAVRcoreslgt8fPrint.cpp: In member function ‘size_t Print::print(const __FlashStringHelper*)’:

W:ArduinohardwareWAV8FAVRcoreslgt8fPrint.cpp:44:23: warning: ‘progmem‘ attribute ignored [-Wattributes]

const char PROGMEM *p = (const char PROGMEM *)ifsh;

librariesHX711_Arduino_LibraryHX711.cpp.o: In function `HX711::~HX711()’:

G:��� ���������ArduinolibrariesHX711_Arduino_Librarysrc/HX711.cpp:224: undefined reference to `operator delete(void*, unsigned int)’

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции для платы WAVGAT UNO R3.

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
`

On other UNO (not WAVGAT) no errors on same sketch.

Некит

Новичок
Сообщения: 8
Зарегистрирован: 26 июн 2017, 19:34
Репутация: 0
Настоящее имя: Некит
Контактная информация:

Re: Помогите с GRBL

Некит писал(а):

Rom327 писал(а):

Некит писал(а):А грбл ее возьмет?

У меня работает… Попробуй этот код:

Принцип понял. Попробую. О результатах отпишусь

Попробовал — ни в какую не выходит. Только по частям принимает. Все так же жрет 1,7гб оперативы и runtime error. НО. Есть одна вещь — у меня джэкод как то не так выглядит, как у Вас. Вы какой прогой генерируете файл? Я пользуюсь ArtCam 2012. Может с ним что?

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 11 май 2018, 16:56

проблема в том, что скорость порта в ПО не совпадает со скоростью порта в ОС.. Зайдите в диспетчер устройств и в настройках сом-порта поставьте 115200. А так-же задайте номер порта адекватный.. 23.. это как-то слишком.. поставьте от 1 до 4

ser_ega

Новичок
Сообщения: 12
Зарегистрирован: 11 май 2018, 15:13
Репутация: 0
Контактная информация:

Re: Помогите с GRBL

Сообщение

ser_ega » 11 май 2018, 19:31

скорость в по ставил разные, а вот в диспетчере стоит 9600.

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 11 май 2018, 19:49

Ну так.. поменять нужно…. по умолчанию GRBL прошивка общается с компом на 115200.. если комп будет принимать на скорости 9600.. естественно ни какой связи не будет.. Номер порта меняется в отдельном окне, которое открывает по нажатию кнопки «дополнительно» в настройках сом-порта

ser_ega

Новичок
Сообщения: 12
Зарегистрирован: 11 май 2018, 15:13
Репутация: 0
Контактная информация:

Re: Помогите с GRBL

Сообщение

ser_ega » 14 май 2018, 08:42

поменял и номер порта и скорость порта.
1. Grbl Controller — постоянно выдает — — > (CTRL-X) No data from COM port after connect. Expecting Grbl version string.
2. UniversalGcodeSender-v1.0.7 — пишет — **** Connected to COM2 @ 115200 baud **** но на команды молчит.
3. Arduino монитор порта, так и выдает кучу квадратиков x⸮x⸮x⸮x⸮x⸮x⸮⸮

ser_ega

Новичок
Сообщения: 12
Зарегистрирован: 11 май 2018, 15:13
Репутация: 0
Контактная информация:

Re: Помогите с GRBL

Сообщение

ser_ega » 14 май 2018, 09:20

Кварцы моей Arduinы оба на 12 Mhz. Это правильно?
В файлах grbl вижу 16 mhz стоит!.

Вложения
IMG_20180514_091640.jpg (7209 просмотров) <a class='original' href='./download/file.php?id=138918&sid=e7cb35a09fc41ca8142dc35d2bb8d388&mode=view' target=_blank>Загрузить оригинал (1.81 МБ)</a>

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 14 май 2018, 10:00

Есть опыт весьма странного поведения системы НовыйПК-Ардуино под сч340… не знаю какая связь, но на современных платах — у которых чипсете 100 и выше, а так-же «комбайнах» — когда в процессор встроены север и юг.. сом-порт появляется, но связи нет.. пока не запаяешь резисторы последовательно D+/D-. Тогда ардуина нормально видится.. но.. если такую плату, подключить к компу 5-10 летней давности.. то винда не может идентифицировать сч430.. пишет незивестное устройство… ставишь вместо резисторов перемычку — и вау-ля.. и сом-порт есть и связь с чипом есть.. У меня есть пара таких плат, от бренда RobotDyn… с надписью «Разработано в России» — кварц 12МГц. Других плат под рукой сейчас нет.. так-что не проверю. Если у тя новый комп, попробуй вместо перемычек по 0 Ом, поставить на 100-220 Ом резисторы… вдруг поможет.. (на плате ардуины, рядом с разъёмом усб.. похоже что эти..)

Аватара пользователя

selenur

Почётный участник
Почётный участник
Сообщения: 4576
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1614
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Помогите с GRBL

Сообщение

selenur » 14 май 2018, 10:41

ser_ega писал(а):Кварцы моей Arduinы оба на 12 Mhz. Это правильно?
В файлах grbl вижу 16 mhz стоит!.

Стандартные ардуино платы используют 16 Мгц кварцы.
В связи с чем в твоем случае ком-порт работает не 115200, а на ~86400

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 14 май 2018, 10:47

либо в автоустановщик не те кварцы зарядили.. либо на чипы бракованные… и на 16Мгц не работает… надо.. хм.. надо проверить эту теорию..

ser_ega

Новичок
Сообщения: 12
Зарегистрирован: 11 май 2018, 15:13
Репутация: 0
Контактная информация:

Re: Помогите с GRBL

Сообщение

ser_ega » 18 май 2018, 11:48

selenur писал(а):

ser_ega писал(а):Кварцы моей Arduinы оба на 12 Mhz. Это правильно?
В файлах grbl вижу 16 mhz стоит!.

Стандартные ардуино платы используют 16 Мгц кварцы.
В связи с чем в твоем случае ком-порт работает не 115200, а на ~86400

Что же делать теперь? такой скорости в чекбоксе не предлагается.

Перепаять кварц поможет?

проанализировал файлы board.txt
вижу разницу
этой файл моей ардиуны, которые скачаны на сайте продавца.

Код: Выделить всё

lardu_328p.name= WAVGAT UNO R3
lardu_328p.upload.tool=avrdude
lardu_328p.upload.protocol=arduino
lardu_328p.upload.maximum_size=29696
lardu_328p.upload.speed=57600
lardu_328p.bootloader.tool=avrdude
lardu_328p.bootloader.high_fuses=0xff
lardu_328p.bootloader.low_fuses=0xff
lardu_328p.bootloader.extended_fuses=0x07
lardu_328p.bootloader.path=lgt8fx8p
lardu_328p.bootloader.file=lgt8fx8poptiboot_lgt8f328p.hex
lardu_328p.bootloader.unlock_bits=0x3f
lardu_328p.bootloader.lock_bits=0x3f
lardu_328p.build.mcu=atmega328p
lardu_328p.build.f_cpu=16000000L
lardu_328p.build.core=lgt8f
lardu_328p.build.variant=lgt8fx8p
lardu_328p.build.board=AVR_LARDU_328E

Код: Выделить всё

uno.name=Arduino/Genuino Uno
uno.vid.0=0x2341
uno.pid.0=0x0043
uno.vid.1=0x2341
uno.pid.1=0x0001
uno.vid.2=0x2A03
uno.pid.2=0x0043
uno.vid.3=0x2341
uno.pid.3=0x0243
uno.upload.tool=avrdude
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.maximum_data_size=2048
uno.upload.speed=115200
uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0xFD
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.board=AVR_UNO
uno.build.core=arduino
uno.build.variant=standard

как вижу о 12Мгц и речи нет, есть шанс что поможет простая перепайка кварца?

Тогда вопрос, почему Arduina работает если залить простейший пример Blink?

Petry40

Новичок
Сообщения: 7
Зарегистрирован: 19 сен 2018, 21:28
Репутация: 0
Настоящее имя: Petro
Контактная информация:

Re: Помогите с GRBL

Сообщение

Petry40 » 19 сен 2018, 21:34

Ребята всем привет ! Помогите я новичек в ардуино ! Купил копию uno r3 wavgat! Но программа для ЧПУ grbl не хочет прошиватся ! Пишет что программа не предназначена для данного контроллера ! Тестовая программа blink работает ! Как быть где достать рабочую grbl для wavgat!

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 19 сен 2018, 21:43

прошивку положили как положено в инструкции? Библиотеки/прошивка должны находиться в домашнем каталоге пользователя..
У меня в подписи линк на инструкцию.. вот содержание:
«
0. Скачать и установить Arduino IDE с сайта http://www.arduino.cc
1. Скачать архив grbl-master с GitHub
2. Извлечь содержимое архива куда удобно
3. В папке содержимого архива, найти папку grbl и скопировать её в библиотеки Arduino IDE (библиотеки лежат в каталоге пользователя (ОС Windows) — C:UsersИмяПользователяDocumentsArduinolibraries

«

Petry40

Новичок
Сообщения: 7
Зарегистрирован: 19 сен 2018, 21:28
Репутация: 0
Настоящее имя: Petro
Контактная информация:

Re: Помогите с GRBL

Сообщение

Petry40 » 19 сен 2018, 22:17

Ошибка компиляции для платы WAVGAT UNO R3 СКЕЧ СЛИШКОМ БОЛЬШОЙ ! Я делал усе так как вы написали …

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 19 сен 2018, 23:10

Ошибку выдаёт, но запись всё равно происходит.. У Вас же 328я мега, а не 168я?

Petry40

Новичок
Сообщения: 7
Зарегистрирован: 19 сен 2018, 21:28
Репутация: 0
Настоящее имя: Petro
Контактная информация:

Re: Помогите с GRBL

Сообщение

Petry40 » 19 сен 2018, 23:19

Mega 328p WAVGAT ,пишет что прошивка занимает 103% , запись не происходит так как на плате дальше мигает диод с тестовой программы! Возможно перед записью нужно как то стирать старые программы или они стираются перед записью?

Petry40

Новичок
Сообщения: 7
Зарегистрирован: 19 сен 2018, 21:28
Репутация: 0
Настоящее имя: Petro
Контактная информация:

Re: Помогите с GRBL

Сообщение

Petry40 » 19 сен 2018, 23:32

Пишет скеч использует 30746 байт а доступно 29696 байт где можно скачать прошивку чуть поменьше ?

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 19 сен 2018, 23:41

хочу спать уже.. опыты со своей ардуиной проведу завтра.. Попробуй разные версии.. от 0,8 до 1.1.. GRBL как-бы затачивался под 328ю мегу.. может китайца глючный контроллер поставила в дуину? :wik: У меня же были «странности» с мега2560, на поиск решения которых ушло полтора дня.. так-что.. не исключено.. :freak:

ser_ega

Новичок
Сообщения: 12
Зарегистрирован: 11 май 2018, 15:13
Репутация: 0
Контактная информация:

Re: Помогите с GRBL

Сообщение

ser_ega » 20 сен 2018, 06:26

Вот и меня таже беда. Купил другую Ардуину теперь работает. Может можна вылечить Wavgat имея вторую рабочую?

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: Помогите с GRBL

Сообщение

iMaks-RS » 20 сен 2018, 08:37

чип перепаять на заведомо исправный.. и потом прошить загрузчиком..

04.11.2020 в 01:47, TDA сказал:

Валкодер современнее;)

Полностью переписав навигацию по меню.

Можно. Не нужно, если двигатели 200 шагов на оборот.

Внимательно проверяем схему, еще возможно контрастность крутим.

image.thumb.png.ccfc45aaf5327526f2c5b437291c2cf7.png

блин, заработало, правда я так и не понял почему. Сначала на дисплей вывелись черные квадраты. Потом снизив контрастность появились сиволы рандомные, типа слетевшей кодировки. Потом после перезагрузки текст меню и прочее. MAGIC/// работаю кстати по старым прошивкам 2.2 и 2.0 , новую компилировать отказался

Внимание: platform.txt из ядра ‘Arduino AVR Boards’ содержит устаревшие recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{build.path}/{archive_file}» «{object_file}», автоматически преобразовано в recipe.ar.pattern=»{compiler.path}{compiler.ar.cmd}» {compiler.ar.flags} {compiler.ar.extra_flags} «{archive_file_path}» «{object_file}». Ожидайте обновления ядра.
C:UsersEvgenyDownloadsArduino_winding_machine_2.4bArduino_winding_machine_2.4b.ino:56:0: warning: «D4» redefined

 #define D4        16

 ^

In file included from C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/pins_arduino.h:36:0,

                 from C:Program Files (x86)ArduinohardwareWAVavrcoreslgt8f/Arduino.h:225,

                 from sketchArduino_winding_machine_2.4b.ino.cpp:1:

C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/../standard/pins_arduino.h:85:0: note: this is the location of the previous definition

 #define D4 4 /* PD4 */

 ^

C:UsersEvgenyDownloadsArduino_winding_machine_2.4bArduino_winding_machine_2.4b.ino:57:0: warning: «D5» redefined

 #define D5        17

 ^

In file included from C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/pins_arduino.h:36:0,

                 from C:Program Files (x86)ArduinohardwareWAVavrcoreslgt8f/Arduino.h:225,

                 from sketchArduino_winding_machine_2.4b.ino.cpp:1:

C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/../standard/pins_arduino.h:86:0: note: this is the location of the previous definition

 #define D5 5 /* PD5 */

 ^

C:UsersEvgenyDownloadsArduino_winding_machine_2.4bArduino_winding_machine_2.4b.ino:58:0: warning: «D6» redefined

 #define D6        18

 ^

In file included from C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/pins_arduino.h:36:0,

                 from C:Program Files (x86)ArduinohardwareWAVavrcoreslgt8f/Arduino.h:225,

                 from sketchArduino_winding_machine_2.4b.ino.cpp:1:

C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/../standard/pins_arduino.h:87:0: note: this is the location of the previous definition

 #define D6 6 /* PD6 */

 ^

C:UsersEvgenyDownloadsArduino_winding_machine_2.4bArduino_winding_machine_2.4b.ino:59:0: warning: «D7» redefined

 #define D7        19

 ^

In file included from C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/pins_arduino.h:36:0,

                 from C:Program Files (x86)ArduinohardwareWAVavrcoreslgt8f/Arduino.h:225,

                 from sketchArduino_winding_machine_2.4b.ino.cpp:1:

C:Program Files (x86)ArduinohardwareWAVavrvariantslgt8fx8p/../standard/pins_arduino.h:88:0: note: this is the location of the previous definition

 #define D7 7 /* PD7 */

 ^

In file included from C:UsersEvgenyDocumentsArduinolibrariesAccelStepper-1.61.0srcAccelStepper.cpp:6:0:

C:UsersEvgenyDocumentsArduinolibrariesAccelStepper-1.61.0srcAccelStepper.cpp: In member function ‘void AccelStepper::runToPosition()’:

C:UsersEvgenyDocumentsArduinolibrariesAccelStepper-1.61.0srcAccelStepper.h:274:22: error: ‘yield’ was not declared in this scope

  #define YIELD yield();

                      ^

C:UsersEvgenyDocumentsArduinolibrariesAccelStepper-1.61.0srcAccelStepper.cpp:616:2: note: in expansion of macro ‘YIELD’

  YIELD; // Let system housekeeping occur

  ^

exit status 1
Ошибка компиляции для платы WAVGAT UNO R3.
 

СОДЕРЖАНИЕ ►

  • Произошла ошибка при загрузке скетча в Ардуино
    • programmer is not responding
    • a function-definition is not allowed arduino ошибка
    • expected initializer before ‘}’ token arduino ошибка
    • ‘что-то’ was not declared in this scope arduino ошибка
    • No such file or directory arduino ошибка
  • Compilation error: Missing FQBN (Fully Qualified Board Name)

Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.

Произошла ошибка при загрузке скетча Ардуино

Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).

avrdude: stk500_recv(): programmer is not responding

Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.

Ошибка: programmer is not responding

Ошибка Ардуино: programmer is not responding

Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».

a function-definition is not allowed here before ‘{‘ token

Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.

Ошибка: a function-definition is not allowed

Ошибка: a function-definition is not allowed here before ‘{‘ token

expected initializer before ‘}’ token   expected ‘;’ before ‘}’ token

Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.

‘что-то’ was not declared in this scope

Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.

Ошибка Ардуино: was not declared in this scope

Ошибка Ардуино: was not declared in this scope

Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.

exit status 1 ошибка компиляции для платы Arduino

Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.

exit status 1 Ошибка компиляции для Arduino Nano

exit status 1 Ошибка компиляции для платы Arduino Nano

Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.

missing fqbn (fully qualified board name)

Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.

Понравилась статья? Поделить с друзьями:
  • Ошибка компиляции microsoft vbscript предполагается наличие идентификатора
  • Ошибка компиляции microsoft vbscript недопустимый знак
  • Ошибка компиляции microsoft vbscript 800a0409
  • Ошибка компиляции microsoft vbscript 800a0408
  • Ошибка компиляции microsoft vbscript 800a03ea