Используем LGT8F328P вместо атмеги
Posted: 21 Apr 2022, 19:29
После аццкого подъема цен на микропроцессоры я таки решил посмотреть в сторону китайских клонов 328й атмеги.
Внезапно, но это не просто клон, а улучшенная версия. Список отличий есть в сети и я не буду на нем заострять внимание. Тут больше буду писать про то, как задействовать этот контроллер вместо 328й атмеги.
Вначале в ардуино IDE надо установить ядро. Для этого заходим в настройки среды (Файл->Настройки) и добавляем следующий путь в поле "Дополнительные ссылки для Менеджера плат":
https://raw.githubusercontent.com/dbuez ... index.json
Далее выбираем Инструменты->Плата->Менеджер плат, в поиске пишем lgt8f, выбираем ядро и устанавливаем.
Вся прорцедура так же описана с картинками тут: https://github.com/dbuezas/lgt8fx
Нюансы начались сразу же
Ядро поддерживает платы с установленным кварцем на 32MHz. Либо позволяет выбрать внутреннее тактирование. Мне с али приехали платы с установленным кварцем на 16МГц. Естественно если выбрать 32МГц при прошивке то все тайминги будут некоректные. И компорт работать тоже не будет.
Лечится либо переключением на внутреннее тактирование. Либо использованием внешнего тактирования но с указанием прескалера. При этом в настройках платы надо выбрать Clock равным 16МГц и внешнее тактирование, а в начале setup() указать прескалер
ADC имеет разрядность 12бит вместо привычных 10бит в атмеге. Соответственно максимальное значение которое он возвращает - 4096 а не 1024. Для совместимости в коде можно использовать такую конструкцию
Внезапно, но это не просто клон, а улучшенная версия. Список отличий есть в сети и я не буду на нем заострять внимание. Тут больше буду писать про то, как задействовать этот контроллер вместо 328й атмеги.
Вначале в ардуино IDE надо установить ядро. Для этого заходим в настройки среды (Файл->Настройки) и добавляем следующий путь в поле "Дополнительные ссылки для Менеджера плат":
https://raw.githubusercontent.com/dbuez ... index.json
Далее выбираем Инструменты->Плата->Менеджер плат, в поиске пишем lgt8f, выбираем ядро и устанавливаем.
Вся прорцедура так же описана с картинками тут: https://github.com/dbuezas/lgt8fx
Нюансы начались сразу же

Лечится либо переключением на внутреннее тактирование. Либо использованием внешнего тактирования но с указанием прескалера. При этом в настройках платы надо выбрать Clock равным 16МГц и внешнее тактирование, а в начале setup() указать прескалер
Code: Select all
void setup() {
clock_prescale_set(clock_div_1);
...............
}
Code: Select all
int val = analogRead();
#ifdef __LGT8F__
val >>= 2;
#endif