UR5FFR

Радиолюбительские конструкции и программы
It is currently 19 May 2022, 18:16

All times are UTC + 2 hours [ DST ]




Post new topic Reply to topic  [ 3 posts ] 
Author Message
PostPosted: 21 Apr 2022, 19:29 
Offline
Site Admin

Joined: 21 Apr 2012, 22:00
Posts: 1707
Location: Odessa
Позывной: UR5FFR
После аццкого подъема цен на микропроцессоры я таки решил посмотреть в сторону китайских клонов 328й атмеги.
Внезапно, но это не просто клон, а улучшенная версия. Список отличий есть в сети и я не буду на нем заострять внимание. Тут больше буду писать про то, как задействовать этот контроллер вместо 328й атмеги.

Вначале в ардуино IDE надо установить ядро. Для этого заходим в настройки среды (Файл->Настройки) и добавляем следующий путь в поле "Дополнительные ссылки для Менеджера плат":
https://raw.githubusercontent.com/dbuez ... index.json

Далее выбираем Инструменты->Плата->Менеджер плат, в поиске пишем lgt8f, выбираем ядро и устанавливаем.
Вся прорцедура так же описана с картинками тут: https://github.com/dbuezas/lgt8fx

Нюансы начались сразу же :) Ядро поддерживает платы с установленным кварцем на 32MHz. Либо позволяет выбрать внутреннее тактирование. Мне с али приехали платы с установленным кварцем на 16МГц. Естественно если выбрать 32МГц при прошивке то все тайминги будут некоректные. И компорт работать тоже не будет.
Лечится либо переключением на внутреннее тактирование. Либо использованием внешнего тактирования но с указанием прескалера. При этом в настройках платы надо выбрать Clock равным 16МГц и внешнее тактирование, а в начале setup() указать прескалер
Code:
void setup() {
  clock_prescale_set(clock_div_1);
  ...............
}

ADC имеет разрядность 12бит вместо привычных 10бит в атмеге. Соответственно максимальное значение которое он возвращает - 4096 а не 1024. Для совместимости в коде можно использовать такую конструкцию
Code:
  int val = analogRead();
  #ifdef __LGT8F__
    val >>= 2;
  #endif


Top
 Profile  
 
PostPosted: 30 Apr 2022, 15:01 
Offline
Site Admin

Joined: 21 Apr 2012, 22:00
Posts: 1707
Location: Odessa
Позывной: UR5FFR
LGT8F имеет внутрение референсы для ADC. Но в переключении в DEFAULT присутствует баг. Правится добавлением строки ADCSRD = 0x00;

Code:
  analogReference(INTERNAL4V096);
  int new_value = analogRead(pin);
  analogReference(DEFAULT);
  ADCSRD = 0x00;


Top
 Profile  
 
PostPosted: 01 May 2022, 18:05 
Offline
Site Admin

Joined: 21 Apr 2012, 22:00
Posts: 1707
Location: Odessa
Позывной: UR5FFR
В Visual Studio Code ставим Platformio и создаем для проекта конфиг с платформой lgt8f. Не забываем добавить параметр FCPU и прописать там правильное значение. В итоге в platformio.ini будет что-то такое

Code:
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
lib_extra_dirs = С:\........\Arduino\Libraries

[env:lgt8f]
platform = lgt8f
framework = arduino
board = LGT8F328P
board_build.f_cpu = 16000000
lib_extra_dirs = С:\........\Arduino\Libraries


lib_extra_dirs прописываем руками путь к библиотекам ардуины иначе не найдет


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC + 2 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group