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

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Я вот нашел старую картинку, измерял на делителе от батареи. Красные линии - плюс минус пол процента от среднего.

PS Что-то неудачно картинка разместилась. Если на словах: Atmega328 - реально только 8 разрядов (до 200 кГц). LGT  328P- реально 12 разрядов - до 3000 кГц. 

Что-то у меня гораздо печальнее получается.

Это почти 5%

Измеряется 3v3, референс внутренний 4,096.

А с батарейкой и впрямь получше.

OK0
Offline
Зарегистрирован: 06.03.2020

"А с батарейкой и впрямь получше." Я правильно оценил, +- 0,2 % от "среднего"?

Какая частота (делитель)  АЦП? Какая плата? Какой чип? Если голый - какие и как конденсаторы (индуктивности)? На голом чипе сопротивление  VCC - AVCC, GND - AGND  измеряли? Очень интересно. Заранее спасибо.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Strangeman пишет:

Заказал ... отдельно контроллеры ... буду посмотреть.

Я смотрю, на мировом розничном рынке голых LGT8F328P заметное оживление, число продаж достигло впечатляющей цифры 8 (Восемь). Ваша работа? В любом случае - как получите - отпишитесь пожалуйста. Кстати взрывной рост продаж сопроводился обвалом цен до 66 руб 28 коп.

Я невероятно зол, открыл спор и забрал у китайца всю уплаченную сумму за контроллеры и пересылку - этот балбес прислал QFP32. Что б его до конца дней понос изводил.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

"А с батарейкой и впрямь получше." Я правильно оценил, +- 0,2 % от "среднего"?

Какая частота (делитель)  АЦП? Какая плата? Какой чип? Если голый - какие и как конденсаторы (индуктивности)? На голом чипе сопротивление  VCC - AVCC, GND - AGND  измеряли? Очень интересно. Заранее спасибо.

Делитель на 128, т.е. 125кГц. Фото платы BTE18-04 прилагаю. Чип без маркировки, пишут: "Микросхема LGT8F328P LQFP32 MiniEVB заменяет чип rduino NANO V3.0 HT42B534". Сопротивление не измерял, т.к. прислали не то. На 32х лапом нечего измерять :(

Я потом ещё повозился с батарейкой, получил 0,5% абсолютной точности, что нефигово, но батарейка дохлая, плывёт. Потом проверю более досконально. Задолбал меня ht42b534-1 на этой плате - всё время отваливается порт. Открыл/закрыл - всё, пока питание не передёрнешь, связи нет. Почитал документацию, возможно, он в спячку впадает. Как исправить не разобрался пока.

 

OK0
Offline
Зарегистрирован: 06.03.2020

Strangeman пишет:

Я невероятно зол...

Да, я в курсе, на мировом розничном рынке (который скукожился взад до общего объема сделок - 6 штук) присутствуют только два русскоязычных матерящихся покупателя. Очевидно, что вы один из них...

Сочувствую...

А то, что на 32х-ногом нет аналоговых - я, честно говоря, забыл.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Да, я в курсе, на мировом розничном рынке (который скукожился взад до общего объема сделок - 6 штук) присутствуют только два русскоязычных матерящихся покупателя. Очевидно, что вы один из них...

Сочувствую...

Жаль. Я старый и тупеющий, STM так и не освоил, ESP8266 оказался изрядным хламом. AVRки давно знаю, а тут переферия побогаче.

Strangeman
Offline
Зарегистрирован: 28.11.2014

Ещё один повод выматериться.

-------------------

EOL Notification

Holtek hereby formally gives End Of Life (EOL) notification that the HT42B534-1 will be phased out of production with a latest purchase date of January 9, 2020.

The following shows the phase out schedule for the HT42B534-1 and the cross references between the phased out device and the replacement device.

-------------------

Значит, подробностей уже не будет, поддержки не будет.

В отличие от тех же FTDI, с которыми я могу нативно работать из командной строки в Линукс, эти - вещь в себе, такой и останется. Есть FIFO по 128 байт, есть EEPROM, есть возможность менять VID:PID, но как это всё делать - нифига не понятно. "вот вам наша программка под Windows, будьте счастливы. И то я её пока не отыскал.

OK0
Offline
Зарегистрирован: 06.03.2020

У меня тоже HT42B534-1 и на платах, и отдельным модулем. Один отвалился буквально, в смысле его  USB разъем отвалился. Остальные глючили под  Win8. На  10-ке нареканий нет, так что я на драйвер грешил.

Кстати, прикольно. Когда увидел, что количество покупателей на пресловутом мировом розничном рынке выросло за неделю на треть (это вы и неизвестный нам (пока) соотечественник), решил, что всё, скоро мировые запасы иссякнут. Надо брать! Заказал еще жменю 48х и ... один с 32 ногами. Интересно, - у продавца появилось 5 принципиально разных вариантов комплектации заказа. Посмотрим... Когда первый раз заказывал, написал ему "Внимание, мне 32 не нужны". Он так и  не прочитал. Но мне повезло. Получил 48-е.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

У меня тоже HT42B534-1 и на платах, и отдельным модулем. Один отвалился буквально, в смысле его  USB разъем отвалился. Остальные глючили под  Win8. На  10-ке нареканий нет, так что я на драйвер грешил.

Кстати, прикольно. Когда увидел, что количество покупателей на пресловутом мировом розничном рынке выросло за неделю на треть (это вы и неизвестный нам (пока) соотечественник), решил, что всё, скоро мировые запасы иссякнут. Надо брать! Заказал еще жменю 48х и ... один с 32 ногами. Интересно, - у продавца появилось 5 принципиально разных вариантов комплектации заказа. Посмотрим... Когда первый раз заказывал, написал ему "Внимание, мне 32 не нужны". Он так и  не прочитал. Но мне повезло. Получил 48-е.

Так это Вы счастливчик, получивший 48е?

Только что отпаял у HT42B534-1 RX и TX. Соединил и безо всяких проблем ловлю эхо, открываю и закрываю порт. Сейчас ещё из другого терминала поробую.

Немного непонятно, но работает.

echo "test" > /dev/ttyACM0

cat < /dev/ttyACM0

est

echo "44444444" > /dev/ttyACM0

cat < /dev/ttyACM0
444444

Но не отваливается.

Я 5 комплектаций не нашел, у меня всё те же 2 отображаются.

Здесь? https://aliexpress.ru/item/32821636647.html

OK0
Offline
Зарегистрирован: 06.03.2020

Да, я тот самый, единственный в мире счастливчик. Не то, чо бы я этим горжусь, но что-то лестное для меня в этом есть (смайлик).

"Здесь?" - ну да, это он и есть - пресловутый мировой розничный рынок. Я не про 5 комплектаций писал, а про пять вариантов поведения продавца:

- прислать все 48-е

- прислать все 32-е

- прислать как заказывал: один 32-ой, остальные 48-е

- зеркальный вариант: один 48-ой, остальные 32-е.

- произвольный набор 48-х и 32-х

Я 32-ой заказал, что бы продавец вспомнил, что у него два разных  мешка есть, и задумался... 

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0, а Вы по SWD не прошивали эти контроллеры? Кстати, я так и не понял, почему их нельзя шить STLink или Jlink.

OK0
Offline
Зарегистрирован: 06.03.2020

Strangeman, вам с взрослыми пацанами общаться надо (не со мной), я двух знаю - dimax и dbuezas с компанией. На мой непросвещенный вкус dimax много круче, а dbuezas много общительней.

salut_max
Offline
Зарегистрирован: 26.02.2021

Привет. как по мне так лучше такие заказы у одного продавца разносить по времени и разным заказам спор открыть по разным заказам проще. К тому же они редко читают то что мы им пишем до оплаты товара. 

Strangeman
Offline
Зарегистрирован: 28.11.2014

А нифигово так в итоге с усреднением и нормальной батарейкой получилось.

+-1 бит. при 3762.

OK0
Offline
Зарегистрирован: 06.03.2020

Супер!

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Супер!

Калибровочный регистр грубоват, но это уже придирки, поправка в программе не займёт ни много памяти ни много тактов.

OK0
Offline
Зарегистрирован: 06.03.2020

Strangeman пишет:

Так это Вы счастливчик, получивший 48е?

Да уже двукратный.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Strangeman пишет:

Так это Вы счастливчик, получивший 48е?

Да уже двукратный.

Я просил поддержку Али "пнуть" продавана. Мне обещали, что обязательно пнут.

Может во второй раз и мне повезёт, а пока остаётся только завидовать.

big_alex
Offline
Зарегистрирован: 31.10.2015

Здравствуйте!

Имею lgt8f328p ssop20, необходимо задействовать 6 аналоговых входов, пробую сделать это так:

/*ПРОГРАММА ДЛЯ ИЗМЕРЕНИЯ ТОКА И НАПРЯЖЕНИЯ
Контроллер - LGT8F328P SSOP20
RES  -  1 - 20 - ADC5/SCL
PD2  -  2 - 19 - ADC4/SDA
PD3  -  3 - 18 - ADC1
VCC  -  4 - 17 - ADC0
GND  -  5 - 16 - ADC7
OSC1 -  6 - 15 - ADC6
OSC2 -  7 - 14 - PB5
RXD  -  8 - 13 - PB4
TXD  -  9 - 12 - PB3
PD7  - 10 - 11 - PB1
*/
#include <WDT.h>
#define PUBLISH_DELAY   1000           // Публикация данных каждые 1000 миллисекунд
int IPinA = A5;                        // Аналоговый вход для измерения тока фазы А
int IPinB = A4;                        // Аналоговый вход для измерения тока фазы B
int IPinC = A1;                        // Аналоговый вход для измерения тока фазы C
int UPinA = A0;                        // Аналоговый вход для измерения напряжения фазы А
int UPinB = A7;                        // Аналоговый вход для измерения напряжения фазы B
int UPinC = A6;                        // Аналоговый вход для измерения напряжения фазы C
double IA = 0.0, IA1 = 0.0, IA2 = 0.0; // текущее и суммарное значение тока фазы А
double IB = 0.0, IB1 = 0.0, IB2 = 0.0; // текущее и суммарное значение тока фазы B
double IC = 0.0, IC1 = 0.0, IC2 = 0.0; // текущее и суммарное значение тока фазы C
double UA = 0.0, UA1 = 0.0, UA2 = 0.0; // текущее и суммарное значение напряжения фазы А
double UB = 0.0, UB1 = 0.0, UB2 = 0.0; // текущее и суммарное значение напряжения фазы B
double UC = 0.0, UC1 = 0.0, UC2 = 0.0; // текущее и суммарное значение напряжения фазы C
//float kIA = 0.19875;                   // коэффициент измерения тока A, следует уточнит по факту
float kIA = 1.0;                   // коэффициент измерения тока A, следует уточнит по факту
float kIB = 1.0;                   // коэффициент измерения тока B, следует уточнит по факту
float kIC = 1.0;                   // коэффициент измерения тока C, следует уточнит по факту
float kUA = 1.0;                   // коэффициент измерения напряжения A, следует уточнит по факту
float kUB = 1.0;                   // коэффициент измерения напряжения B, следует уточнит по факту
float kUC = 1.0;                   // коэффициент измерения напряжения C, следует уточнит по факту

long previousMillis;
unsigned long count = 0, count1 = 0;
unsigned long t1 = 0;

//Процедура измерения
  void MesureData() {
  unsigned long dt = (unsigned long)(millis() - t1);
  IA1 = kIA * (analogRead(IPinA) - 512);  //мгновенное значение тока фазы А,А
  IA2 += pow(IA1, 2);
  IB1 = kIB * (analogRead(IPinB) - 512);  //мгновенное значение тока фазы B,А
  IB2 += pow(IB1, 2);
  IC1 = kIC * (analogRead(IPinC) - 512);  //мгновенное значение тока фазы C,А
  IC2 += pow(IC1, 2);
  UA1 = kUA * (analogRead(UPinA) - 512);  //мгновенное значение напряжения фазы А,V
  UA2 += pow(UA1, 2);
  UB1 = kUB * (analogRead(UPinB) - 512);  //мгновенное значение напряжения фазы B,V
  UB2 += pow(UB1, 2);
  UC1 = kUC * (analogRead(UPinC) - 512);  //мгновенное значение напряжения фазы C,V
  UC2 += pow(UC1, 2);
  if ((dt > 500) and (count > 0)) {
    IA = sqrt(IA2 / count);    //среднеквадратичное значение тока фазы А,А
    IB = sqrt(IB2 / count);    //среднеквадратичное значение тока фазы B,А
    IC = sqrt(IC2 / count);    //среднеквадратичное значение тока фазы C,А
  	UA = sqrt(UA2 / count);    //среднеквадратичное значение напряжения фазы А,V
    UB = sqrt(UB2 / count);    //среднеквадратичное значение напряжения фазы B,V
    UC = sqrt(UC2 / count);    //среднеквадратичное значение напряжения фазы C,V
    count = 0;
    IA2 = 0.0;
    IB2 = 0.0;
    IC2 = 0.0;
  	UA2 = 0.0;
    UB2 = 0.0;
    UC2 = 0.0;
    t1 = millis();
  }
  count++;
  }

void setup() {
  // Настраиваем АЦП
  analogReference(DEFAULT);
  pinMode(IPinA, INPUT);
  pinMode(IPinB, INPUT);
  pinMode(IPinC, INPUT);
  pinMode(UPinA, INPUT);
  pinMode(UPinB, INPUT);
  pinMode(UPinC, INPUT);
  pinMode(13, OUTPUT);

// setup serial communication
   Serial.begin(115200);

  previousMillis = millis();
  wdt_enable(WTO_4S);
}

void loop() {

  MesureData();
  // it's time to send new data?
  if (millis() - previousMillis > PUBLISH_DELAY) {
	digitalWrite(13, HIGH);
	Serial.println (DataToSerial());
	digitalWrite(13, LOW);
    previousMillis = millis();
  }
  wdt_reset();
 }

//Формируем JSON строку данных для отправки ее в UART
String DataToSerial() {
  String s = "UA:" + String(UA,1)+", "+
  "UB:" + String(UB,1)+", "+ "UC:" + String(UC,1)+", "+
  "IA:" + String(IA,1)+", "+ "IB:" + String(IB,1)+", "+
  "IC:" + String(IC,1);
  return s;
}

но результат не тот что хотелось (без датчиков). Замыкая вывод на землю, нуля нет нигде.

21:46:41.096 -> UA:443.4, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.9, IC:301.1
21:46:42.101 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.6, IC:301.0
21:46:43.120 -> UA:443.2, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.4, IC:300.8
21:46:44.055 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.7, IC:301.0
21:46:45.059 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.9, IC:301.1
21:46:46.063 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.7, IC:300.9
21:46:47.068 -> UA:443.1, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.8, IC:300.7
21:46:48.072 -> UA:443.4, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.9, IC:301.1
21:46:49.076 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.7, IB:200.3, IC:300.9
21:46:50.080 -> UA:443.4, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.6, IC:300.9
21:46:51.084 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.8, IC:300.8
21:46:52.042 -> UA:443.5, UB:3552.0, UC:3552.0, IA:1944.5, IB:200.1, IC:301.1
21:46:53.045 -> UA:443.4, UB:3552.0, UC:3552.0, IA:1944.6, IB:199.9, IC:301.1
21:46:54.047 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.5, IC:300.9
21:46:55.051 -> UA:443.3, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.6, IC:301.0
21:46:56.054 -> UA:443.4, UB:3552.0, UC:3552.0, IA:1944.5, IB:199.9, IC:301.2
21:46:57.057 -> UA:443.1, UB:3552.0, UC:3552.0, IA:1944.7, IB:200.1, IC:300.9
21:46:58.007 -> UA:443.2, UB:3552.0, UC:3552.0, IA:1944.4, IB:200.7, IC:300.6

Можно как то это реализовать?

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

Для начала выкиньте из кода все лишнее, оставьте только печать "сырых" данных. Подключите ко входам потенциометры и посмотрите на реакцию.

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

big_alex пишет:

но результат не тот что хотелось (без датчиков). Замыкая вывод на землю, нуля нет нигде.

А должен быть? Вы из ноля вычитаете 512, за счёт чего в результате должен быть ноль?   Кстати пол-шкалы на этом МК будет 2032, а не 512. 

OK0
Offline
Зарегистрирован: 06.03.2020

Немного в сторону. А разве analogRead() из этого ядра можно использовать для измерения мгновенного значения переменного напряжения?

Logik
Offline
Зарегистрирован: 05.08.2014

В чем причина сомнений?

OK0
Offline
Зарегистрирован: 06.03.2020

dimax пишет:

… функция analogRead в этом аддоне навороченная, и делает калибровку смещения АЦП (страница 251 русского даташита)….

Домосед пишет:
в analogRead() два замера с переключением входной полярности внутреннего компаратора, с последующим "усреднением" и компенсации смещения …

PS Наконец-то дошло... два измерения - это про смещение. А напряжение измеряется один раз. Так? Вопрос снимается...

 

big_alex
Offline
Зарегистрирован: 31.10.2015

Спасибо, пример от AVR поэтому 512 и на входе делитель должен быть, питание пополам.

Это я не доглядел.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0, Вы уже эти 48 лапые проверяли? Я только сегодня получил посылку, пока соберу отладочную плату...

Если Ваши рабочие - поверю китайцу, что и мои рабочие, поставлю ему 5 звёзд. Он мне прислал, таки, во второй раз QFP48.

Запаял в такую же переходную плату, как у Вас, но тяжко :( 2е очков и лупа...

OK0
Offline
Зарегистрирован: 06.03.2020

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

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

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

 

 

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

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

Да, надо бы купить, а то сломал лупу наголовную.

А так 2+4+ХЗ сколько лупа настольная. А ведь когда-то видел макрировку на 0805 невооруженным глазом.

А платка и впрямь интересная. Знал бы - заказал бы таких для макетирования.

PS все GND и и все VCC замкнуты, так что аналоговую часть не фильтрануть. Но поле ESP8266, и даже после AVR, ADC весьма приятен.

OK0
Offline
Зарегистрирован: 06.03.2020

Strangeman пишет:

все GND и и все VCC замкнуты, так что аналоговую часть не фильтрануть. Но поле ESP8266, и даже после AVR, ADC весьма приятен.

Понял, спасибо.

Strangeman
Offline
Зарегистрирован: 28.11.2014

У него что, действительно всего 2 входа внешнего прерывания?

Даже у ATTiny13 их 6.

nik182
Offline
Зарегистрирован: 04.05.2015

Средствами ардуины 2. А так существенно больше, только надо уметь готовить средствами AVR.

OK0
Offline
Зарегистрирован: 06.03.2020

Strangeman пишет:

У него что, действительно всего 2 входа внешнего прерывания?

Даже у ATTiny13 их 6.

Я конечно далеко не профессионал, мягко говоря, но...  Так вроде, 40 "входов внешнего прерывания" - по изменению на пине порта. Из них 4 могут быть настроены индивидуально, по "фронту" или "по "спаду": int0, int1,  вход  timer1  и  вход timer3.  Для входа  timer3, прерываний на порт E и порт F - поддержки в аддоне  пока нет, но можно поправить аддон, выше писал как. И примеры приводил...

Strangeman
Offline
Зарегистрирован: 28.11.2014

nik182 пишет:

Средствами ардуины 2. А так существенно больше, только надо уметь готовить средствами AVR.

Ардуино то каким боком? Я смотрю документацию и вижу, что прерывания заведены только на PD2 (INT0) и PD3 (INT1).

Если документация врёт - подскажите, как готовить правильно, куда ещё какие прерывания заведены?

Кстати, если бы там было PCINT - можно было бы подумать, что забыли указать в распиновке, но INT и предполагает обслуживание единичного вывода.

Strangeman
Offline
Зарегистрирован: 28.11.2014

OK0 пишет:

Strangeman пишет:

У него что, действительно всего 2 входа внешнего прерывания?

Даже у ATTiny13 их 6.

Я конечно далеко не профессионал, мягко говоря, но...  Так вроде, 40 "входов внешнего прерывания" - по изменению на пине порта. Из них 4 могут быть настроены индивидуально, по "фронту" или "по "спаду": int0, int1,  вход  timer1  и  вход timer3.  Для входа  timer3, прерываний на порт E и порт F - поддержки в аддоне  пока нет, но можно поправить аддон, выше писал как. И примеры приводил...

Да я без аддонов проживу, мне бы описано было. Может невнимателен был, пошел перечитывать даташит.

Strangeman
Offline
Зарегистрирован: 28.11.2014

Ага, в английской версии 1.1, в которой ещё не описан LQFP48 действительно на распиновке в наличии PCINT и в таблице прерываний всё есть.

Где взять для LQFP48?

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

Strangeman,да и в русской всё описано. 9 и 10 пункты -дана исчерпывающая информация..

Strangeman
Offline
Зарегистрирован: 28.11.2014

dimax пишет:
Strangeman,да и в русской всё описано. 9 и 10 пункты -дана исчерпывающая информация..

Спасибо, поторопился, не увидев в пинауте.