Обзор клона меги328 -LGT8F328P

at111
Offline
Зарегистрирован: 06.10.2017

Спасибо всем УВАЖАЕМЫМ ФОРУМЧАНАМ за восстановление фиолетовой LGT8F328P!!!

Записал прошивальщик на UNO и потом прошил скетч на плату. Блинк обычный. Как по видео Ув.Асиличенко о прошивке про мини версии.

Причем при записи нужно обязательно переподключать сам программатор (UNO) в комп. Иначе писать не хочет.

Кондер ставил, а вот сопротивление нет. Так прошилось.

После блинка попробовал прошить сам загрузчик.

ИДЕ ругнулось на адреса, но загрузчик прошило.

Ещё раз СПАСИБО всем за науку!!! А то уж думал выкидывать контроллер!

alexmk
Offline
Зарегистрирован: 27.05.2022

Я правильно понял, исходя из информации на предыдущей странице, что имея две lgt-шки(в форм-факторе нано, зелёные), одну можно превратить в программатор просто влив в неё LGTISP.hex от братца Яна, к примеру таким вот образом:

1avrdude -p atmega328p -b 57600 -c arduino -P COM3 -U flash:w:LGTISP.hex

А затем, соединив соответствующие пины, прошить уже вторую, изменив командную строку на:

1avrdude -p atmega328p -b 57600(115200?) -c stk500v1 -P COM3 -U flash:w:my-firmware.hex

Или я слишком наивен и не всё так просто? Знающие и опытные, подскажите, пожалуйста.

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

alexmk пишет:

Я правильно понял, исходя из информации на предыдущей странице, что имея две lgt-шки(в форм-факторе нано, зелёные), одну можно превратить в программатор просто влив в неё LGTISP.hex от братца Яна, к примеру таким вот образом:

1avrdude -p atmega328p -b 57600 -c arduino -P COM3 -U flash:w:LGTISP.hex

А затем, соединив соответствующие пины, прошить уже вторую, изменив командную строку на:

1avrdude -p atmega328p -b 57600(115200?) -c stk500v1 -P COM3 -U flash:w:my-firmware.hex

Или я слишком наивен и не всё так просто? Знающие и опытные, подскажите, пожалуйста.

да, но можно и UNO или nano, только хэкс будет другой, это не отменяет установки поддержки этих плат, далее выбирать придётся нужную вам плату

demoss
Offline
Зарегистрирован: 03.12.2019

Подскажите пожалуйста, а как в коде вызвать ресет программы?

Хочу отработать в коде по прерыванию, кладу контроллер в сон, но он из него по прерыванию с ноги d2 начинает вроде просыпаться и зависает на WK

01switch (Pstate) {
02   case 1:
03     Pstate = 0;
04     Serial.println("timer"); //спать
05     delay(100);
06     digitalWrite(PUpin, LOW);
07     radio.powerDown();
08     pinMode(PUpin, INPUT);
09     digitalWrite(A3, LOW);
10     delay(150);
11     digitalWrite(A3, HIGH);
12     delay(500);
13     digitalWrite(A3, LOW);
14     delay(150);
15     digitalWrite(A3, HIGH);
16     delay(1000);
17     attachInterrupt(0, wkp, HIGH);
18     PMU.sleep(PM_POFFS1, SLEEP_FOREVER);
19     break;
20 }
void wkp() {    //проснись
 // Serial.print("WKPstart");
//pinMode(PUpin, OUTPUT);
 // digitalWrite(PUpin, HIGH);
 // digitalWrite(A3, LOW);
 // delay(150);
//  digitalWrite(A3, HIGH);
  detachInterrupt(0);
}
demoss
Offline
Зарегистрирован: 03.12.2019

Сам спросил - сам отвечу)

01  switch (Pstate) {
02    case 1:
03      Pstate = 0;
04      Serial.println("timer"); //спать
05      delay(100);
06      LDOCR_reg = LDOCR;
07      CLKPR_reg = CLKPR;
08      MCUSR_reg = MCUSR;
09      SREG_reg = SREG;
10      digitalWrite(PUpin, LOW);
11      radio.powerDown();
12      pinMode(PUpin, INPUT);
13      digitalWrite(A3, LOW);
14      delay(150);
15      digitalWrite(A3, HIGH);
16      delay(500);
17      digitalWrite(A3, LOW);
18      delay(150);
19      digitalWrite(A3, HIGH);
20      delay(1000);
21      attachInterrupt(0, wkp, HIGH);
22      PMU.sleep(PM_POFFS1, SLEEP_FOREVER);
23      break;
24  }
25 
26void wkp() {    //проснись
27  detachInterrupt(0);
28  LDOCR = 0x80;
29  LDOCR = LDOCR_reg;
30  CLKPR = 0x80;
31  CLKPR = CLKPR_reg;
32  MCUSR = 0x80;
33  MCUSR = MCUSR_reg;
34  SREG = SREG_reg;
35  Serial.print("WKPstart");
36  pinMode(PUpin, OUTPUT);
37  digitalWrite(PUpin, HIGH);
38  digitalWrite(A3, LOW);
39  delay(150);
40  digitalWrite(A3, HIGH);
41  radio.powerUp(); //начать работу
42  radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
43}

 

MartynovElectric
Offline
Зарегистрирован: 08.06.2022

Прочитал эту ветку, но так и не смог настроить ШИМ на D2 (F2).  Сильно хочется высокотоковый выход.

Тему уже создал отдельно:   https://arduino.ru/forum/programmirovanie/lgt8f328p-nastroika-shim-na-pd2int0oc3b#comment-656948

Можно здесь ответить, можно там. Вот кусочек кода:

01void SHIMWrite(byte val)
02{
03  DDRF |= (1<<PF2) | (1<<PF1);
04  OCR3AH = 0x00;          // Важно, вначале необходимо загрузить верхний регистр!!!
05  OCR3AL = val;          // затем нижний, Нельзя как для Atmega328 -  OCR3A = topValue;
06  OCR3BH = 0x00;
07  OCR3BL = val;
08  TCCR3A |= (1 <<COM3A0) | (1 << COM3B0) | (1 << WGM31) | (1 << WGM30);     // ПИН D2
09  TCCR3B = (1 << WGM33) | (1 << WGM32) | 5;   // Режим СТС WGM3[3:0]=4 или 12
10}
11 
12SHIMWrite(100);

Меняет не скважность, а часту и то только на TX (что не нужно).

Ramses2
Offline
Зарегистрирован: 08.12.2020

demoss пишет:

dimax пишет:

DENNIS, Если выбрать как нано, то будет работать на 4 МГц, всё правильно. Ставь аддон https://github.com/dbuezas/lgt8fx

Подскажите, а сон случайно не изучали на этой плате и режимы его?

Пытался разобраться и столкнулся со следующим: (1) битовые маски режимов не совпадают, (2) из режима power save по прерыванию от clock2 не выходит ни в обычном режиме (как вроде должна выходит мега328) ни в асинхронном режиме  на частоте кварца 12 МГц.

Все попытки писать на чистом Си и следуя даташиту не привели к успеху. Засыпает намертво. Варианты использования модуля PMU не предлагать! Не подходит.

Если знаете как, перейдем в личку.

ЗЫ: Для себя, подписчиков и просто читателей темы причесываю перевод даташит на сабж с индексацией по заголовкам. Если не терпится, выложу обработанный примерно на 40% вариант. Остальное переведено, но находится некоей "каше" китайского с английским и плохо проиндексировано.

ЗЗЫ: На английском

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013
MartynovElectric, по поводу режима PWM в другой теме уже написали вам, выбирайте нужный режим, ставьте корректно WGM биты.
У вас в скетче 15-й режим, про него в datasheet прямо так и написано "Когда WGM3 равен 15: сигнал OC3A переключается во время сравнения, а OC3B выключается" Т.е. работает именно так, как вы его запрограммировали. Самые удобные режимы где TOP=ICR3, тогда регистром ICR задаёте частоту, регистрами OCR скважность. 
 
По поводу "Важно, вначале необходимо загрузить верхний регистр!!! Затем нижний, Нельзя как для Atmega328 -  OCR3A = topValue;"
ставьте корректно аддон Давида, там нет такой проблемы. Недавно ж про это же писали, сообщение #559
totalab
Offline
Зарегистрирован: 09.06.2022

Всем привет, столкнулся с проблемой в tone(pin, frequency, duration), при попытке проиграть мелодию, она сжовывается, ощущение что duration игнорируется, кто нибудь сталкивался?

tm-svc
Offline
Зарегистрирован: 27.04.2022

OK0 пишет:

Проверял  http://arduino.ru/forum/apparatnye-voprosy/obzor-klona-megi328-lgt8f328p?page=7#comment-591258

Плата... редкий случай, у родных пенатов  есть интереснее, но дороже 

Очки ... Это вторые...

 

 

Сделал самодельный переходник. Пришлось у отца очки напрокат взять, чтобы припаять этот чип... но вроде получилось. Буду проверять

tm-svc
Offline
Зарегистрирован: 27.04.2022

Хотел фото прилепить, но чёт не разобрался, как...

MartynovElectric
Offline
Зарегистрирован: 08.06.2022

dimax, Спасибо! теперь всё понятно )))

olegue
Offline
Зарегистрирован: 23.09.2020

может быть у кого -то получилось запустить библиотеку sdfat на этой плате?

vklimk
Offline
Зарегистрирован: 13.08.2022

Добрый день. Ищу помощи.

Мне необходимо записать eeprom программатором через SWD-интерфейс (я использую lgt8f328p без бутлодера).

Программатор я сделал из ардуинки lgt8f328p с помощью скетча LGTISP (https://github.com/SuperUserNameMan/LGTISP). И использую avrdude.

Тестовую программу я написал на C и скомпилировал avr-gcc. Программа успешно записывается в lgt8f328p через программатор и работает, как положено. А, вот, eeprom не хочет записываться - при верификации записанного пишет о несовпадении уже с первого байта.

Может быть, кто-то сталкивался? Или подскажет другой способ заливки eeprom без загрузчика?

01vk@debian:~/lgt8f/tests$ avrdude -v -p m328p -c stk500v1 -P /dev/ttyUSB0 -U eeprom:w:_eep:r
02 
03avrdude: Version 6.3-20171130
04         Copyright (c) 2000-2005 Brian Dean, <a href="http://www.bdmicro.com/" title="http://www.bdmicro.com/" rel="nofollow">http://www.bdmicro.com/</a>
05         Copyright (c) 2007-2014 Joerg Wunsch
06 
07         System wide configuration file is "/etc/avrdude.conf"
08         User configuration file is "/home/vk/.avrduderc"
09         User configuration file does not exist or is not a regular file, skipping
10 
11         Using Port                    : /dev/ttyUSB0
12         Using Programmer              : stk500v1
13         AVR Part                      : ATmega328P
14         Chip Erase delay              : 9000 us
15         PAGEL                         : PD7
16         BS2                           : PC2
17         RESET disposition             : dedicated
18         RETRY pulse                   : SCK
19         serial program mode           : yes
20         parallel program mode         : yes
21         Timeout                       : 200
22         StabDelay                     : 100
23         CmdexeDelay                   : 25
24         SyncLoops                     : 32
25         ByteDelay                     : 0
26         PollIndex                     : 3
27         PollValue                     : 0x53
28         Memory Detail                 :
29 
30                                  Block Poll               Page                       Polled
31           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
32           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
33           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
34           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
35           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
36           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
37           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
38           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
39           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
40           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
41 
42         Programmer Type : STK500
43         Description     : Atmel STK500 Version 1.x firmware
44         Hardware Version: 3
45         Firmware Version: 5.1
46         Topcard         : Unknown
47         Vtarget         : 0.0 V
48         Varef           : 0.0 V
49         Oscillator      : Off
50         SCK period      : 0.1 us
51 
52avrdude: AVR device initialized and ready to accept instructions
53 
54Reading | ################################################## | 100% 0.01s
55 
56avrdude: Device signature = 0x1e950f (probably m328p)
57avrdude: safemode: lfuse reads as FF
58avrdude: safemode: hfuse reads as FF
59avrdude: safemode: efuse reads as FF
60avrdude: reading input file "_eep"
61avrdude: writing eeprom (1 bytes):
62 
63Writing | ################################################## | 100% 0.43s
64 
65avrdude: 1 bytes of eeprom written
66avrdude: verifying eeprom memory against _eep:
67avrdude: load data eeprom data from input file _eep:
68avrdude: input file _eep contains 1 bytes
69avrdude: reading on-chip eeprom data:
70 
71Reading | ################################################## | 100% 0.01s
72 
73avrdude: verifying ...
74avrdude: verification error, first mismatch at byte 0x0000
75         0xff != 0x20
76avrdude: verification error; content mismatch
77 
78avrdude: safemode: lfuse reads as FF
79avrdude: safemode: hfuse reads as FF
80avrdude: safemode: efuse reads as FF
81avrdude: safemode: Fuses OK (E:FF, H:FF, L:FF)
82 
83avrdude done.  Thank you.

 

Neon_1
Offline
Зарегистрирован: 20.08.2022

подскажите как добавить в файл pins_arduino.h поддержку выводов 7 (PB6) и 8 (PB7) ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Neon_1, они всегда поддерживались, ничего не надо добавлять. Если тактирование не от кварца - должно работать.

Neon_1
Offline
Зарегистрирован: 20.08.2022

dimax пишет:

Neon_1, они всегда поддерживались, ничего не надо добавлять. Если тактирование не от кварца - должно работать.

а какие цифры использовать? 27 и 28 не работают...хотя с блинком не проверял, у меня к этим пинам подключена max7219 и после прошивки они просто висят в воздухе

и может есть где-то чип со подписанными выводами , как у атмег? пока нашел только готовые платы

 

проверил 27 и 28 блинком - не работает

апдейт - 36 на LGT8F328 - PB7,  42 на LGT8F328 - PB6

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Neon_1, в описании ног аддона есть все дефайны..  https://github.com/dbuezas/lgt8fx/blob/master/lgt8f/variants/standard/pi...

Neon_1
Offline
Зарегистрирован: 20.08.2022

dimax пишет:

Neon_1, в описании ног аддона есть все дефайны..  https://github.com/dbuezas/lgt8fx/blob/master/lgt8f/variants/standard/pi...

 

спасибо, этот файл смотрел

PB6 и PB7 есть только в #if defined(__LGT8FX8P48__)

если правильно понимаю , то это только для LGT8FX8P48

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Neon_1, а вот оно чё. Ну тогда как вариант можно попробовать дописать нужные определения в те секции массивов имён портов и бит, что относятся к (__LGT8FX8P__)

После 343 строки вставить
PB, /* 28 */
PB, /* 29 */
После 397 строки вставить
_BV(6), /* 28, port B6 */
_BV(7), /* 29, port B7 */
 
Хотя формально арду-пины 28 и 29 заняты (строки 203..209), но подозреваю что одно другому мешать не будет.
 
Neon_1
Offline
Зарегистрирован: 20.08.2022

спасибо, попробую

блинк работает с 36 и 42, а вот max7219 пока не хочет, ставлю lgt8f328 вместо atmega328, дорожки уже разведены

Neon_1
Offline
Зарегистрирован: 20.08.2022

dimax пишет:

После 343 строки вставить
PB, /* 28 */
PB, /* 29 */
После 397 строки вставить
_BV(6), /* 28, port B6 */
_BV(7), /* 29, port B7 */

спасибо большое, заработало, сам бы не разобрался :)

vklimk
Offline
Зарегистрирован: 13.08.2022

Находил ли кто-то информацию о внутреннем сопротивлении выходов этого МК? Или, например, электрические характеристики, как для атмеги (в ее даташите в разделе 31.8.8 Pin Driver Strength)?

В документации на lgt8t328p я нашел только, что ток портов ввода-вывода то ли 12мА, то ли 30мА (мне так и не стало понятно сколько, все же...). И для нескольких линий можно установить режим до 80мА.

kvn234
Offline
Зарегистрирован: 29.09.2022

Подскажите по SPI для LGT8T328p.

Есть проверенная на ATMega328p функция:

01void SPI_MasterTransmit(char Data)
02{
03    SPDR = Data;
04    while(!(SPSR & (1<<SPIF)));//для LGT8T328p не работает
05    _delay_us(2);//кастыль для LGT8T328p
06     
07    //строб перезаписи в вых. регистры
08    PORT|=(1 << ST_CP);
09    asm volatile("nop");
10    asm volatile("nop");
11    PORT&=~(1 << ST_CP);
12}

ATMega328P

LGT8F328P (без костыля)

while(!(SPSR & (1<<SPIF))); Не ждет окончания передачи. ​Пришлось ставить задержку, чтобы строб передать по окончанию передачи.

Подскажите как поправить код для LGT8F328P

Upper
Offline
Зарегистрирован: 23.06.2020

kvn234 пишет:

Подскажите как поправить код для LGT8F328P

В файле SPI.h для LGT, функция transfer не использует флаг SPIF для _LGT8FX8P_
Почему сделано именно так пока не разобрался

01inline static uint8_t transfer(uint8_t data) {
02    uint8_t rcvd;
03    SPDR = data;
04    asm volatile("nop");
05#if defined(__LGT8FX8P__)
06    while((SPFR & _BV(RDEMPT)));
07    rcvd = SPDR;
08    SPFR = _BV(RDEMPT) | _BV(WREMPT);
09#else
10    while(!(SPSR & _BV(SPIF)));
11    rcvd = SPDR;
12#endif
13    return rcvd;
14  }

 

kvn234
Offline
Зарегистрирован: 29.09.2022

RDEMPT - флаг пустого буфера (данные не получены).

while((SPFR & _BV(RDEMPT))) - Получается ждем приема байта.

А как определить конец передачи из сдвигового регистра (не опустошение буфера)?

PS Немного затупил. 

Флаг приема выставляется и после окончания передачи.

kvn234
Offline
Зарегистрирован: 29.09.2022

Проверил. 

01void SPI_MasterTransmit(char data)
02{
03    SPDR = data;
04     
05    asm volatile("nop");
06#if defined(__LGT8FX8P__)
07    while((SPFR & _BV(RDEMPT)));
08     
09    SPFR = _BV(RDEMPT) | _BV(WREMPT);
10#else
11    while(!(SPSR & _BV(SPIF)));
12     
13#endif
14     
15    //строб перезаписи в вых. регистры
16    PORT|=(1 << ST_CP);
17    asm volatile("nop");
18    asm volatile("nop");
19    PORT&=~(1 << ST_CP);
20}

Работает корректно.

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

3-й бит CLK какой-то кривой

kvn234
Offline
Зарегистрирован: 29.09.2022

3-й бит CLK - это с конца?

Возможно не корректно измерил Logic

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ua6em пишет:

3-й бит CLK какой-то кривой

Он же округляет до ближайшего целого периода. Соответственно, округления случаются как в одну, так и в другую сторону.

kvn234
Offline
Зарегистрирован: 29.09.2022

Простой китайский 8 канальный 24МГц. 

Нормальных Российских за такую цену не нашел.

Electrobit
Offline
Зарегистрирован: 19.09.2021

kvn234

Electrobit
Offline
Зарегистрирован: 19.09.2021

Нормальных Российских за такую цену не нашел.

А какие есть ненормальные российские ЛА?

kvn234
Offline
Зарегистрирован: 29.09.2022

Про Российские я пошутил. 

Не при нашей жизни.

Electrobit
Offline
Зарегистрирован: 19.09.2021

Понял.

olegue
Offline
Зарегистрирован: 23.09.2020

подскажите плиз почему данный МК нельзя прошить через SPI?

Hans_Schwarz_true
Offline
Зарегистрирован: 18.10.2022

подскажите пожалуйста как на этой поделке использовать одновременно сдвоенные пины поключил по картинке экран от simens a55 соединил пины экрана перемычками которые попадают на сдвоенный пин (8-9 , 10-11)  и ничего не заработало 1625840365553_bulletin2KPOLN91DrakFq_54JhrffdEKl3_24xxji_9FiBn

Hans_Schwarz_true
Offline
Зарегистрирован: 18.10.2022

3 раза одно и то же отправило и как это теперь удалить

Hans_Schwarz_true
Offline
Зарегистрирован: 18.10.2022

и это 

kvn234
Offline
Зарегистрирован: 29.09.2022

Всем привет.

Нужна высокоскоростная ШИМ для ЗУ. Подскажите ссылку. 

Как я  понимаю нужно  использовать PLL.

Buldakov
Offline
Зарегистрирован: 17.01.2016

В 107 посте было написано, как затактироваться таймером 1 на частоте 64 мГц.

Тактирование таймера1 от 64 МГц
#include "lgtx8p.h"
TCKSR|=1<<F2XEN;
TCKSR|=1<<TC2XS1;

Попробовал это сделать и похоже тактирование при этом происходит на RC внутреннем генераторе. По блок схеме умножение на 2 вроде доступно только для внутреннего генератора?

То есть как я правильно понял если на плате стоит внешний кварц на 16 мгц то таймер 1 может работать максимум на 16 мгц а сам процессор на 32 мгц?

Neon_1
Offline
Зарегистрирован: 20.08.2022

dimax пишет:

Neon_1, а вот оно чё. Ну тогда как вариант можно попробовать дописать нужные определения в те секции массивов имён портов и бит, что относятся к (__LGT8FX8P__)

После 343 строки вставить
PB, /* 28 */
PB, /* 29 */
После 397 строки вставить
_BV(6), /* 28, port B6 */
_BV(7), /* 29, port B7 */
 
Хотя формально арду-пины 28 и 29 заняты (строки 203..209), но подозреваю что одно другому мешать не будет.
 

сегодня решил прошить LGT8... но плат этих в ардуино не оказалось, как то сами удалились, поставил снова , но теперь опять порты PB6 и PB7 не работают, хотя файл pins_arduino.h откорректирован

поставил предыдущую версию платы - работает

kvn234
Offline
Зарегистрирован: 29.09.2022

В русском даташите (стр.251)есть описание калибровки АЦП.

Смещение процедуры калибровки:  
1. Установить модуль VDS, выбранный источник входного сигнала 
аналогового VDS мощность (AVCC)  
2. Выбор АЦП опорного напряжения в аналоговый источник питания 
(AVCC)  
3. ADCSRC [СПН] = 0, АЦП чтение 4 / 5VDO канала  Преобразованное 
значение записывается как PVAL  
4. ADCSRC [SPN] = 1, АЦП считывает канал 4 / 5VDO, бит записи с 
преобразованной величиной NVAL  
5. Сохраняет значение (NVAL - PVAL) >> 1 - регистр OFR0  
6. ADCSRC [SPN]  = 1, АЦП считывает канал 1 / 5VDO, результат 
преобразования записывается как NVAL  
7. ADCSRC [SPN] = 0, АЦП читает канал 1 / 5VDO, бит записи результата 
преобразования PVAL  
8. Будет ли значение (NVAL - PVAL) >> 1  Сохранить в регистр OFR1  
9. Установите ADCSRC [OFEN] = 1, чтобы включить функцию компенсации 
смещения.

Если кто делал, напишите насколько она повышает точность измерений АЦП и если не жалко исходник.

Andry Smart
Offline
Зарегистрирован: 06.09.2016

А кто то знает сопротивление внутренней подтяжки?

Слыхал, что у Атмега 30к. А у ЛГТшки меньше. Но нигде не могу найти значение.

gena
Offline
Зарегистрирован: 04.11.2012

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

grass
Offline
Зарегистрирован: 08.04.2018

Здравствуйте ув. ФорумчАне! Помогите  подружить библиотеку TFT_ST7735( https://github.com/Bodmer/TFT_ST7735?ysclid=m0sadjgopy189183293) и соответсвенно дисплей 1.77 синий и 1.8 красный с 328P-LQFP32. Весь функционал вышеуказанной библиотеки прекрасно работает на близнеце 328P-LQFP32  по распиновкне Ардуино Нано с резистивными делителями. Т.е чистота эксперимента по аппаратной и программной части соблюдается. При работе 328P-LQFP32 с примерами из папки TFT_ST7735 белый экран с мерцанием, иногда появляются или артефакты или небольшие части изображения из скетча примеров.  И еще, с LQFP32 работает скетч TFTPong.ino из папки C:\Program Files (x86)\Arduino\libraries\TFT\examples\Arduino,  пины соответственно поправлены для библиотеки TFT_ST7735. 

rx6kr@mail.ru
Offline
Зарегистрирован: 08.12.2020

Всем доброго времени суток!
Столкнулся с проблемой по аналоговым портам LGT8F328P Pro Mini.
Заливал скетч с записью  pinMode(A4, INPUT_PULLUP);          // подключаем фоторезистор к А4

В результате 1-2 платы из десяти отказали. На всех аналоговых портах напряжение 0.1 вольта.
Перепрошивка без PULLUP положительного результата не дает.
Подпайка к аналоговым портам подтягивающего резистора 15 кОм результата не дает, на портах остается низкое напряжение. Впечатление такое что PULLUP пробивает аналоговые порты.

Кто сталкивался с такой проблемой и как ее решить?

 
geniv82
Offline
Зарегистрирован: 21.02.2019

Здравствуйте, проблема с работой кода на LGT8F328P, точнее полная не работа кода. Пример "Adafruit ILI9341 graphicstest" нормально работает на arduino nano. При компиляции и заливки этого примера в LGT8F328P на ILI9341 белый экран. На базе примера Adafruit нарисовал картинку, которая на  arduino работает, а на LGT8F328P не работает. Плату для LGT8F328P установил, другой проект - часы из дисплея покупателя на ней работает. Что посоветуете? Оставить плату для мигания светодиодом, или есть варианты? Просто arduino тратить только для показа картинки жалко. В коде после каждой палки вывожу в монитор - в мониторе программа работает, а на ILI9341 белый экран. Уровни согласованы. Пробовал питать всё от 3,3 V - бесполезно. В нете похожей проблемы не нашёл. Год назад делал осциллограф на ардуино (так, игрушка) эта плата работала не как надо.

01#include "SPI.h"
02#include "Adafruit_GFX.h"
03#include "Adafruit_ILI9341.h"
04 
05#define TFT_CS   10
06#define TFT_DC    9
07#define TFT_RST   8
08//#define TFT_MOSI 11  // Data out
09//#define TFT_SCLK 13  // Clock out
10//#define TFT_MISO 12  // Data in
11 
12//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO);
13Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
14 
15void setup() {
16 Serial.begin(9600);
17  Serial.println("ILI9341 Test!");
18   
19   tft.begin();
20   tft.setRotation(3); //поворот экрана
21   tft.fillScreen(ILI9341_BLACK); //заливка экрана можно цвет в RGB (0x0000) - чёрный, (0xFFFF) - белый
22Serial.println("ILI9341_BLACK 1!");
23int             w, i, i2, x, y,
24                z = tft.width(),
25                h = tft.height(),
26               cx = tft.width()  / 2 - 1,
27               cy = tft.height() / 2 - 1;
28 
29  for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, z, h);
30  for(x=0; x<z; x+=5) tft.drawFastVLine(x, 0, z, h);
31 Serial.println("ILI9341 2!");
32delay(200);
33     
34w = min(tft.width(), tft.height());
35 
36  for(i=0; i<w; i+=6) {
37    i2 = i / 2;
38    tft.drawRoundRect(cx-i2, cy-i2, i, i, i/6, tft.color565(i, 0, 0));
39  }
40Serial.println("ILI9341 3!");
41delay(400);
42 
43  tft.setCursor(140,13);
44  tft.setTextColor(ILI9341_CYAN);
45  tft.setTextSize(6);
46  tft.println("|");
47 
48  tft.setCursor(140,46);
49  tft.setTextColor(ILI9341_CYAN);
50  tft.setTextSize(6);
51  tft.println("|");
52 
53delay(200);
54 
55  tft.setCursor(153,13);
56  tft.setTextColor(ILI9341_CYAN);
57  tft.setTextSize(6);
58  tft.println(">");
59 
60delay(200);
61 
62  tft.setCursor(153,46);
63  tft.setTextColor(ILI9341_CYAN);
64  tft.setTextSize(6);
65  tft.println(">");
66 
67delay(200);
68  
69  tft.setCursor(123,26);
70  tft.setTextColor(ILI9341_CYAN);
71  tft.setTextSize(7);
72  tft.println(">");
73Serial.println("ILI9341 4!");
74delay(200);
75 
76  tft.setCursor(53,100);
77  //tft.setTextColor(ILI9341_BLUE);
78  tft.setTextColor(0x81ff);
79  tft.setTextSize(4);
80  tft.println("Bluetooth");
81Serial.println("ILI9341 5!");
82delay(100);
83   
84  tft.setCursor(53,140);
85  tft.setTextColor(ILI9341_GREEN);
86  tft.setTextSize(4);
87  tft.println("ACTIVATED");
88Serial.println("ILI9341 6!");
89delay(100);
90 
91  tft.setCursor(97,195);
92  tft.setTextColor(ILI9341_CYAN);
93  tft.setTextSize(3);
94  tft.println("XFW-M18");
95  Serial.println("ILI9341 ВСЁ!");
96}
97 
98void loop() {
99}