Logik, Там как минимум в бутлоадере настраивается PMX0=0x47, т.е. ремапится сериал и выход 1-го таймера. Но вдруг не включился. Кстати я с ошибкой эту строчку в первый раз написал, уже исправил.
#include <avr/io.h>
#include <util/delay.h>
void setup()
{
cli();
PMX0 |= (1<<7); PMX0|= (1<<1);
sei();
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
Serial.println("High");
delay(1000); // wait for a second
Serial.println("Low");
delay(1000); // wait for a second
}
sketch_jun03a:7:1: error: 'PMX0' was not declared in this scope
Не знает оно PMX0. Я кстати, тоже не знаю. Не нашел в даташите.
Работу с сириалом напрямую, не через либы, я на следующем этапе пробовать буду, если это не заработает.
Logik, не может не знать :) Переставляй всё с ноля. Аддон какой использовал? Выбор lgtf328P в корпусе Ssop20 только у буэзаса есть https://github.com/dbuezas/lgt8fx
#include <avr/io.h>
#include <util/delay.h>
#define PMX0 (*((volatile unsigned char *)0xEE))
void setup()
{
cli();
PMX0 |= (1<<7); PMX0|= (1<<1);
sei();
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
Serial.println("High");
delay(1000); // wait for a second
Serial.println("Low");
delay(1000); // wait for a second
}
Я так понимаю, исходная загадка про нерабочий пин 8 дето в той же области памяти МК лежит. Ну и пусть пока лежит.. Хотя... Для любителей по разгадывать подсказка, все три PMX0, PMX1 и PMX2 при старте сетапа равны 0.
Пожалуйста если не сложно отправьте пример работы с прерыванием 3 таймера по совпадению. Без использования выводов таймера. То есть чтоб пины PCINT18 и PCINT17 могли работать отдельно.
Всем доброго времени суток.
Так получилось, что у меня начался очередной удалённый проект (в Киеве) и я бы хотел попробовать его реализовать на LGT8F328P.
Проект относительно мелкий, но я под него переразвожу платы.
В планах три дизайна плат с одинаковым пиноутом гребёнок на процессорах
1) LGT8F328P
2) AT mega 8 / AT mega 48 / AT mega 88 / AT mega 88 / AT mega 168 / AT mega 328
3) AT mega 328 PA
Заказываться буду в ближайшие пару дней, пока на Али распродажа.
Если кому интересен данный вариант дизайна, то просьба заранее сообщить… Как придёт в Киев там его соберут и можно будет отправить желающим Новой почтой…
Моя цель - поиск единомышленников, ну и получить совет - как сделать лучше.
Так как получить профит с голых плат в кол-во меньше 50шт - просто невозможно
(детали штучно и ручная сборка в разы дороже конвейера).
Почему я взялся за переделку?
Что мне не нравится в Arduino Nano v3 и на его клонах от WAVGAT
1) Нет возможности поставить скоростной кварц, совместимый с высокоскоростными переходниками USB-232 (скорости 115200,460800 и 921600)
Решение – отказаться от безкварцевого ноунейма (похожего CH340G) – поставив внешнюю плату с нормальным CH340G (пиноут гребёнки от популярной платы) и PPL (ics501m)
11059200 x2 = 22118400
14745600 x2 = 29491200
18432000 x2 = 36864000
14745600 x3 = 44236800
2) Нет импульсного стабилизатора на плате. А подсветка дисплея греет линейный.
Решение – отказаться от линейного 5в стабилизатора. Заложить место под mini360 или mini560. При необходимости это даст возможность реализовать и самоподхват включения и самоотключение.
3) Мне нужен конвертер уровней на SPI до 3,3в
Решение – заложить линейный стабилизатор 3v3 и конвертер уровней 74LVC125. Вывести 5v SPI на гребенку (пиноут от micro sd card module) и 3v3 SPI на гребенку (пиноут от adxl345). Заложить коннектор 3v3 SPI на дисплей 12864B11.
4) Хотелось бы что бы плату можно было крепить на одну гребенку (а не на две). В идеале прямо на дисплей 1602. И LED платы на SPI висит – неудобно.
Решение – заложить основную гребёнку с пиноутом от дисплея 1602. Что бы управлять подсветкой заложить NPN транзистор на ШИМ. За одно и перенести на него же LED платы.
5) пункты 3 и 4 дают возможность использовать плату как I2C или RS232 драйвер дисплея.
Дисплеи на гребенке / разъемах – 1602 и 12864B11
Дисплеи которые можно подключить проводами - SSD1331, SSD1306, Nokia 5110 module и т.д.
Отличие от не оригинальной Nano v3
Нет 6ти пинового SPI – но есть SPI на гребёнке. Т.е. если очень надо, то перепрошиваться придётся проводами.
Нет ноунеймового безкварцевого USB TTL на плате (похожего CH340G). Но есть гребёнка совместимая с популярной платой CH340G. Я заливаю своим бут блоком. При необходимости можно и ардуиновский зацепить с внешним конденсатором от CH340G на резет.
-Порты здесь рассчитаны в основном на 30мА нагрузки. Но есть некоторые у которых ток по умолчанию лишь 12 мА, но через регистр HDR (high-current push-pull) можно включить буффер, и максимальная нагрузка на них возрастает до 80мА. Но таких портов немного, (PE5) (PE4) (PD2) (PD1) (PD6) (PD5)
Как включить через регистр HDR (high-current push-pull) буффер для максимальной нагрузки до 80мА?
Дайте, пожалуйста, линк на русский даташит. Линк с єтого топика нерабочий.
На Али появились новые вариации плат с мк lgt8f328p:
С разъёмом USB-C
RF-Nano
И плата с 48-ногим МК и USB-C
Цены особо не привлекательны, так что просто как новость для поддержания темы :)
И ещё любопытная штука - программатор. Судя по всему это не родной программер, а просто ардуино-прошивальщик с официальной страницы https://github.com/LGTMCU/LarduinoISP
Конечно, конечно. Значит программа у меня версии 1.8.13, дополнение для работы с WeMos XI Alpha 8F328P-U брал вот здесь https://github.com/LGTMCU/Larduino_HSP Установил драйвер чипа USB и дальше всё по инструкции, получилось именно так, как и у вас показано
Программа (любая) нормально компилируется, но при попытке её записать идёт сообщение об ошибке:
System wide configuration file is "C:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
avrdude: can't open config file "C:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf": No such file or directory
avrdude: error reading system wide configuration file "C:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard
Это какие-то глубоко системные вещи и я в них увы не разбираюсь. Если знаете, то подскажите пожалуйста, что у меня там не так.
Electrobit, в принципе ваша проблема не имеет никакого отношения к данной теме. У вас бардак в профиле винды. Видимо глюкануло при каком то апдейте. Кстати говорите, что ставили родной https://github.com/LGTMCU/Larduino_HSP, а картинка от аддона Давида Буэзоса https://github.com/dbuezas/lgt8fx В принципе его, конечно, и надо ставить, т.к. родной уже не совместим с последними версиями IDE. В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
Благодарю за совет, наверно так и сделаю раз делать ничего.
В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
Благодарю за совет, наверно так и сделаю раз делать ничего.
ну как нечего, поставить portable версию нужного релиза, настроить, она в этот каталог не лезет: C:\Users\User\AppData\Local\Arduino15
Из старых неопубликованных материалов - DDS генератор синуса с регулировкой частоты и амплитуды на МК, с минимумом дополнительных компонентов, нужна только кнопка и переменный резистор.
Кнопка ступенчато переключает частоты от 20Гц до 20кГц по экспоненте, всего 70 градаций. Резистор подаёт референсное напряжение на ЦАП, т.к. ЦАП у мк внутри резисторный, то амплитуда без проблем регулируется от нуля и до Vcc. Но у этого ЦАП есть существенный минус -у него высокоомный выход, поэтому если нагрузка будет низкоомная, то сигнал просядет. В идеале надо вешать ОУ на выход, но это уже существенное усложнение конструкции, идеология была как раз сделать из говна и палок. Кнопка нужна с переключающимися контактами, что б реализовать бездребезговую коммутацию с помощью программного RS Триггера. Массив dx_table содержит 70 значений для частот от 20 Гц до 20 кГц, сначала шаг по 5 герц, после 100Гц шаг по 20Гц, после 200Гц шаг по 50 Гц, и после 1кГц шаг по 500Гц. В принципе можно сделать любое кол-во градаций на любые нужные частоты. Расчёт DDS реализован полностью на аппаратном ускорителе вычислений (uDSC), который содержит этот МК, благодаря чему удалось сделать 32-битный аккумулятор фазы и высокую скорость расчёта семплов, всего за 6 тактов мк, в результате получился очень высокий семлрейт, ~2,666 MSamples/sec при 16МГц тактовой МК.. Правда, как уже написал выше, весь кайф от скорости портит высокоомный ЦАП. При нагрузке меньше пары мегаом на высоких частотах уже начинает искривляться синус. Так что данный "прибор" рассматривается исключительно как игрушка, и вариант использования ускорителя вычислений. (Кстати в инете вообще ни слуху ни духу что кто-то, кроме меня его использовал) DDS цикл в программе не имеет выхода, поэтому, что бы была возможность изменять частоту я сделал хитрость - кнопка весит на прерывании, войдя в которое подменяется адрес возврата в стеке, и вернувшись из прерывания счётчик программ уже находится на адресе вне замкнутой петли. Скетч компилился в Arduino IDE 1.8.14 если что..
/*Генерация DDS синуса через ускоритель вычислений (uDSC) (С) dimax 2021 */
const uint16_t dx_table[]={
194,216,237,256,274,291,306,336,363,388,411,433,475,513,548,582,613,686,751,811,
867,920,970,1017,1062,1106,1148,1188,1227,1265,1301,1337,1372,1680,1940,2169,2376,
2567,2744,2910,3068,3218,3361,3498,3630,3757,3881,4000,4116,4229,4339,4446,4550,
4653,4753,4851,4947,5041,5134,5225,5314,5402,5488,5573,5657,5740,5821,5901,5981,
6059,6136
};
const PROGMEM __attribute__ ((aligned (0x100))) uint8_t sinewave[]= {
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c
};
uint16_t dx;
int main(){
static int8_t index_mass=32; // 1кГц по умолчанию
static boolean count_direct=true; //бит направления
static uint8_t state=1;
CLKPR = 1<<PMCE;
CLKPR = 1<<0; // F_CPU 16МГц
MCUSR=1<<SWDD;// отключить шину SWD (нужно только для ssop20)
MCUSR=1<<SWDD;// отключить шину SWD (нужно только для ssop20)
PORTC|=(1<<PC0)|(1<<PC1); //PC0 (A0) вход-подтяжка
PCMSK1=(1<<PCINT8)|(1<<PCINT9); // выбор входа прерывания - PC0 (A0)
DACON= (1<<DACEN)|(1<<DAOE)|(1<<DAVS0);
while(1) {
if ( state==1 && ((PINC&3)==2)) {state=2; }
else if ( state==2 && ((PINC&3)==1)) {
state=1;
if (count_direct==true){ index_mass <70? index_mass++ : count_direct =false; }
if (count_direct==false){ index_mass >0? index_mass-- : count_direct =true; }
}
dx=dx_table[index_mass]; dds();
}//end while(1)
} //end main
static inline void dds(){
asm volatile(
"cli;" "\n\t"
"ldi r18,0xff;" "\n\t" // R18 = 0xFF
"in r18, 0x1b;" "\n\t" //PCIFR->R18
"out 0x1b, r18;" "\n\t" //R18->PCIFR (PCIFR=PCIFR) отчисттить флаг прерывания, если он есть
"ldi r19,0x02;" "\n\t" // R19 <- (1<<PCIE1)
"sts 0x0068, r19;" "\n\t" // PCICR=R19 включить прерывание
"ldi r20, 0xC0;" "\n\t" // config byte DSUEN
"out 0x00, r20;" "\n\t" // DCSR= 1<<DSUEN
"out 0x10, %[dx];" "\n\t" // DSDX = dx
"out 0x11, %[dx];" "\n\t" // DSDY = dx
"ldi r20, 0x46;" "\n\t" // r20= код операции XMACUU используется в цикле
"ldi r26, 0xA1;" "\n\t" // r26= адрес ЦАП используется в цикле
"ldi r27, 0x00;" "\n\t" // r27=0 адрес ЦАП используется в цикле
"sei;" "\n\t"
"start:" "\n\t" //
"out 0x01, r20;" "\n\t" //1такт Выполнить операцию DSIR (0x46) (DA = DA + DX * DY)
"in r28,0x39;" "\n\t" //1такт DSAH выгрузить из аккумулятора старшее слово в r29r28
"mov r30, r29;" "\n\t" //1такт скопировать старший байт 32бит аккумулятора
"ld r21, Z;" "\n\t" //1такт загрузить нужный байт из массива в r24 Z= &wave[];
"st X, r21;" "\n\t" //1такт послать r21 по адресу ЦАПа
"rjmp start;" "\n\t" //1такт уход в цикл
"nop;" "\n\t"//место возврата из прерывания (пропустить xx команд от начала)
"cli;" "\n\t"
:
:[wave]"z"((uint16_t)sinewave|0x4000), [dx]"r"(dx)
:"r20","r21", "r26" );
}
ISR (PCINT1_vect,ISR_NAKED){
asm volatile(
"pop r0;" "\n\t" //вытащить из стека адрес возврата -2 байта
"pop r0;" "\n\t" //в Z регистре уже лежит адрес DDS функции
"adiw r30, 0x1C;" "\n\t" //сложить его со смещением в функции, что-бы
"push r30;" "\n\t" // подменить адрес возврата из прерывания
"push r31;" "\n\t" // а вернуться на команду nop функции dds,
"clr r0;" "\n\t"
"sts 0x68,r0" "\n\t" // (PCICR=0; сразу отключить прерывание)
"reti" "\n\t"
: : "z"(dds) : );
}
А я в 328-м с ШИМ "горбатился" для вывода анадогового синуса. )))
Только ОУ жизненно необходим, 2МОм на выходе не вариант. Что-то типа LM7301.
И кнопка с переключением и 70 нажатий... Я бы енкодер втулил. Тоже на прерываниях.
//на прерывании, войдя в которое подменяется адрес возврата в стеке, и вернувшись из прерывания счётчик программ уже находится на адресе вне замкнутой петли.
))) Лютый фокус! В раздел для новичков поместить! Для выноса мозга ))))
Учитывая что DDS намного быстрей DAC, думаю можно и проще.
Раз есть излишек производительности, в развитие проекта добавить ввод с АЦП и ДПФ. Сделать анализатор АЧХ.
Я эту программу ещё в 2018 написал, но с недоделками забросил. А тут вот намедни вспомнил, и довёл всё до ума. В принципе написано было из спортивного интереса -проверить две идеи -DDS на ускорителе и возврат из прерывания в произвольное место функции, откуда произошёл вызов. То что по первой идее не было примеров ещё можно понять, т.к. чип не сильно распространённый, а вот почему второе никто не делал -странно. Ну или я не нашёл. С реализацией второго есть нюансы, что -б избежать неконтролируемого переполнения стека нельзя выпрыгивать из прерывания куда заблагорассудится, но в данной программе всё под контролем, выйти из замкнутого ассемблерного цикла в прерывание можно только в участке из 6 команд, а возврат будет точно на 7-ю. Поэтому стеку совершенно ничего не угрожает :)
То что по первой идее не было примеров ещё можно понять, т.к. чип не сильно распространённый, а вот почему второе никто не делал -странно.
ничего странного, помнишь как много шума и не только наделал знаменитый вирус "Чернобыль", а ведь миллионы программистов знали, как перевести процессор на нулевой уровень, (одной командой) но не писали таких зловредов осознанно!
а вот почему второе никто не делал -странно. Ну или я не нашёл.
Та делают. Это называется вытесняющая многозадачность. Таймер тикнул, поток прервался, адрес сохранили и при возврате подменили на сохраненный ранее адрес другого потока.
Я эту программу ещё в 2018 написал, но с недоделками забросил.
Ну раз делиться проектами выходного дня, то вот мой
После экспериментов с программатором из ардуинки выяснил,
что приложив ручки прошивку программатора можно
1) собрать на arduino-1.8.13
2) для кварца 18.432МГц (бут и прошивки)
3) со скоростью 115200
4) вернуть на место вырезанную индикацию
5) впихнуть в корпус к USB хабу вместе с двумя ch340g
и после этого программатор остается рабочим
(были опасения, что поломается...)
а так как для его создания использовали
одинадцатый пример из IDE = ArduinoISP.ino
то сменой адаптера и прошивки можно одним и тем же программатором
шить как atmega328 так и LGT8FX8D
Если самим лень крутить настройки IDE, собирая готовые куски кода, то могу выложить собранный вариант прошивок...
Если чуть ещё допилить то только адаптера
(по замкнутому пину - определять адаптер)
Если в эту плату запаять ATMega328P она станет полноценной Arduino Nano R3?
нет.
Зачем?
Платка покупалась для transistor tester из соседней темы. Тогда я ничего не знал о клонах WAVGAT. Скетч тестера на этой плате не запускается, помигал светодиодами и теперь она уже 3 год лежит без толку на полке.
Покупать оригинальный Arduino Nano за 1000+ жаба душит. Вот и подумалось, что может ATMega328P на этой плате взлетит.
То что здесь CH430A вместо FTDI232 я знаю. А какие еще коренные различия?
ок. завтра попробую.
//PMX0 |= (1<<7); PMX1|= (1<<1);
Думаешь порт ремапится на другие выводы, а в аддоне прошляпили тему.. возможно.
Logik, Там как минимум в бутлоадере настраивается PMX0=0x47, т.е. ремапится сериал и выход 1-го таймера. Но вдруг не включился. Кстати я с ошибкой эту строчку в первый раз написал, уже исправил.
Пробую.
Logik, не может не знать :) Переставляй всё с ноля. Аддон какой использовал? Выбор lgtf328P в корпусе Ssop20 только у буэзаса есть https://github.com/dbuezas/lgt8fx
Не, переставлять не буду. Проект в работе, нафиг мне эти приключения. Выбора по корпусам в моем адоне нет. Дай адрес PMX0, попробую.
ПС. Нашел в том адоне , #define PMX0 (*((volatile unsigned char *)0xEE))
Logik, 91 страница русского даташита
спасибо, нашел уже ;) Сча освободится - попробую.
Помогло.
Оставлю страждущим скетч.
Я так понимаю, исходная загадка про нерабочий пин 8 дето в той же области памяти МК лежит. Ну и пусть пока лежит.. Хотя... Для любителей по разгадывать подсказка, все три PMX0, PMX1 и PMX2 при старте сетапа равны 0.
Пожалуйста если не сложно отправьте пример работы с прерыванием 3 таймера по совпадению. Без использования выводов таймера. То есть чтоб пины PCINT18 и PCINT17 могли работать отдельно.
Всем доброго времени суток.
Так получилось, что у меня начался очередной удалённый проект (в Киеве) и я бы хотел попробовать его реализовать на LGT8F328P.
Проект относительно мелкий, но я под него переразвожу платы.
В планах три дизайна плат с одинаковым пиноутом гребёнок на процессорах
1) LGT8F328P
2) AT mega 8 / AT mega 48 / AT mega 88 / AT mega 88 / AT mega 168 / AT mega 328
3) AT mega 328 PA
Заказываться буду в ближайшие пару дней, пока на Али распродажа.
Если кому интересен данный вариант дизайна, то просьба заранее сообщить… Как придёт в Киев там его соберут и можно будет отправить желающим Новой почтой…
Моя цель - поиск единомышленников, ну и получить совет - как сделать лучше.
Так как получить профит с голых плат в кол-во меньше 50шт - просто невозможно
(детали штучно и ручная сборка в разы дороже конвейера).
Вот линк на предварительный вариант дизайна.
http://www.gorinich.uz/A1/My_LGT8F328P_board.pdf
Почему я взялся за переделку?
Что мне не нравится в Arduino Nano v3 и на его клонах от WAVGAT
1) Нет возможности поставить скоростной кварц, совместимый с высокоскоростными переходниками USB-232 (скорости 115200,460800 и 921600)
Решение – отказаться от безкварцевого ноунейма (похожего CH340G) – поставив внешнюю плату с нормальным CH340G (пиноут гребёнки от популярной платы) и PPL (ics501m)
11059200 x2 = 22118400
14745600 x2 = 29491200
18432000 x2 = 36864000
14745600 x3 = 44236800
2) Нет импульсного стабилизатора на плате. А подсветка дисплея греет линейный.
Решение – отказаться от линейного 5в стабилизатора. Заложить место под mini360 или mini560. При необходимости это даст возможность реализовать и самоподхват включения и самоотключение.
3) Мне нужен конвертер уровней на SPI до 3,3в
Решение – заложить линейный стабилизатор 3v3 и конвертер уровней 74LVC125. Вывести 5v SPI на гребенку (пиноут от micro sd card module) и 3v3 SPI на гребенку (пиноут от adxl345). Заложить коннектор 3v3 SPI на дисплей 12864B11.
4) Хотелось бы что бы плату можно было крепить на одну гребенку (а не на две). В идеале прямо на дисплей 1602. И LED платы на SPI висит – неудобно.
Решение – заложить основную гребёнку с пиноутом от дисплея 1602. Что бы управлять подсветкой заложить NPN транзистор на ШИМ. За одно и перенести на него же LED платы.
5) пункты 3 и 4 дают возможность использовать плату как I2C или RS232 драйвер дисплея.
Дисплеи на гребенке / разъемах – 1602 и 12864B11
Дисплеи которые можно подключить проводами - SSD1331, SSD1306, Nokia 5110 module и т.д.
Отличие от не оригинальной Nano v3
Нет 6ти пинового SPI – но есть SPI на гребёнке. Т.е. если очень надо, то перепрошиваться придётся проводами.
Нет ноунеймового безкварцевого USB TTL на плате (похожего CH340G). Но есть гребёнка совместимая с популярной платой CH340G. Я заливаю своим бут блоком. При необходимости можно и ардуиновский зацепить с внешним конденсатором от CH340G на резет.
Карамба! Почему-то ссылка на русскую версию даташита не работает! Если есть у кого-нибудь скачанная, поделитесь, пожалуйста, на почту vkbr_wm@mail.ru
Благодарю заранее )
Всем привет!
LGT8F328P Pro Mini SSOP20.
-Порты здесь рассчитаны в основном на 30мА нагрузки. Но есть некоторые у которых ток по умолчанию лишь 12 мА, но через регистр HDR (high-current push-pull) можно включить буффер, и максимальная нагрузка на них возрастает до 80мА. Но таких портов немного, (PE5) (PE4) (PD2) (PD1) (PD6) (PD5)
Как включить через регистр HDR (high-current push-pull) буффер для максимальной нагрузки до 80мА?
Дайте, пожалуйста, линк на русский даташит. Линк с єтого топика нерабочий.
Спасибо.
https://2150692.ru/files/lgt8f88_168_328p_rus%20.pdf
Как результат поиска "lgt8f328p datasheet на русском"
Ссылки на даташиты, указанные в первом посте, не работают, файл не найден. Обновите пожалуйста.
На Али появились новые вариации плат с мк lgt8f328p:
С разъёмом USB-C
RF-Nano
И плата с 48-ногим МК и USB-C
Цены особо не привлекательны, так что просто как новость для поддержания темы :)
И ещё любопытная штука - программатор. Судя по всему это не родной программер, а просто ардуино-прошивальщик с официальной страницы https://github.com/LGTMCU/LarduinoISP
Доброго времени суток. Я недавно купил https://roboshop.spb.ru/arduino/wemos-xi-alpha-8f328p-u- аналогичную плату, типа WeMos XI Alpha 8F328P-U
Плата подключается, но почему-то в неё не грузится скетч. Пишет ошибку про какой-то avrdude.conf
Не подскажите в чём проблема?
Electrobit, надо приводить текст ошибки полностью, а так же указать используемый аддон и версию ide. Должно быть так:
Electrobit, надо ...
Конечно, конечно. Значит программа у меня версии 1.8.13, дополнение для работы с WeMos XI Alpha 8F328P-U брал вот здесь https://github.com/LGTMCU/Larduino_HSP Установил драйвер чипа USB и дальше всё по инструкции, получилось именно так, как и у вас показано
Программа (любая) нормально компилируется, но при попытке её записать идёт сообщение об ошибке:
Electrobit, в принципе ваша проблема не имеет никакого отношения к данной теме. У вас бардак в профиле винды. Видимо глюкануло при каком то апдейте. Кстати говорите, что ставили родной https://github.com/LGTMCU/Larduino_HSP, а картинка от аддона Давида Буэзоса https://github.com/dbuezas/lgt8fx В принципе его, конечно, и надо ставить, т.к. родной уже не совместим с последними версиями IDE. В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
Благодарю за совет, наверно так и сделаю раз делать ничего.
Запускал DES на lgt8f328p. Выполняется быстрей атмеги328 на 8% при всем аналогичном.
В общем надо всё поудалять из профиля C:\Users\User\AppData\Local\Arduino15\ и поставить аддон заново. А лучше совсем всё удалить , т.е. и основную папку с ардуино ide. А то кто знает, какие там ещё проблемы всплывут.
Благодарю за совет, наверно так и сделаю раз делать ничего.
ну как нечего, поставить portable версию нужного релиза, настроить, она в этот каталог не лезет: C:\Users\User\AppData\Local\Arduino15
Уже переустановил все по новой. Проблема с путями ушла, теперь бьюсь о проблему с загрузкой скетча в плату. Проблема вроде как известная и уже обсуждалась на этих форумах http://arduino.ru/forum/apparatnye-voprosy/pomogite-zapustit-wemos-xi-0
Из старых неопубликованных материалов - DDS генератор синуса с регулировкой частоты и амплитуды на МК, с минимумом дополнительных компонентов, нужна только кнопка и переменный резистор.
Кнопка ступенчато переключает частоты от 20Гц до 20кГц по экспоненте, всего 70 градаций. Резистор подаёт референсное напряжение на ЦАП, т.к. ЦАП у мк внутри резисторный, то амплитуда без проблем регулируется от нуля и до Vcc. Но у этого ЦАП есть существенный минус -у него высокоомный выход, поэтому если нагрузка будет низкоомная, то сигнал просядет. В идеале надо вешать ОУ на выход, но это уже существенное усложнение конструкции, идеология была как раз сделать из говна и палок. Кнопка нужна с переключающимися контактами, что б реализовать бездребезговую коммутацию с помощью программного RS Триггера. Массив dx_table содержит 70 значений для частот от 20 Гц до 20 кГц, сначала шаг по 5 герц, после 100Гц шаг по 20Гц, после 200Гц шаг по 50 Гц, и после 1кГц шаг по 500Гц. В принципе можно сделать любое кол-во градаций на любые нужные частоты. Расчёт DDS реализован полностью на аппаратном ускорителе вычислений (uDSC), который содержит этот МК, благодаря чему удалось сделать 32-битный аккумулятор фазы и высокую скорость расчёта семплов, всего за 6 тактов мк, в результате получился очень высокий семлрейт, ~2,666 MSamples/sec при 16МГц тактовой МК.. Правда, как уже написал выше, весь кайф от скорости портит высокоомный ЦАП. При нагрузке меньше пары мегаом на высоких частотах уже начинает искривляться синус. Так что данный "прибор" рассматривается исключительно как игрушка, и вариант использования ускорителя вычислений. (Кстати в инете вообще ни слуху ни духу что кто-то, кроме меня его использовал) DDS цикл в программе не имеет выхода, поэтому, что бы была возможность изменять частоту я сделал хитрость - кнопка весит на прерывании, войдя в которое подменяется адрес возврата в стеке, и вернувшись из прерывания счётчик программ уже находится на адресе вне замкнутой петли. Скетч компилился в Arduino IDE 1.8.14 если что..
Прикольно.
И кнопка с переключением и 70 нажатий... Я бы енкодер втулил. Тоже на прерываниях.
//на прерывании, войдя в которое подменяется адрес возврата в стеке, и вернувшись из прерывания счётчик программ уже находится на адресе вне замкнутой петли.
))) Лютый фокус! В раздел для новичков поместить! Для выноса мозга ))))
Учитывая что DDS намного быстрей DAC, думаю можно и проще.
Раз есть излишек производительности, в развитие проекта добавить ввод с АЦП и ДПФ. Сделать анализатор АЧХ.
Можно по четверти таблицы синус генерить.
с 85 строки чистое хакерство )))
с 85 строки чистое хакерство )))
а с 87 строки грязное хакерство )))
с 85 строки чистое хакерство )))
а с 87 строки грязное хакерство )))
да ладно, обычное дело, команды на ходу меняют, а тут только адреса...
ну менять команды по ходу их исполнения - древняя традиция.
Где-то была тема, чел спросил как завершить цикл, надо подсказать!
123
123
Согласен. )
Первые шаги великого программиста!
Только это в микрофон обычно говорится.
новый функционал форума. Поддержка распознавания речи. Тестирует.
То что по первой идее не было примеров ещё можно понять, т.к. чип не сильно распространённый, а вот почему второе никто не делал -странно.
ничего странного, помнишь как много шума и не только наделал знаменитый вирус "Чернобыль", а ведь миллионы программистов знали, как перевести процессор на нулевой уровень, (одной командой) но не писали таких зловредов осознанно!
Та делают. Это называется вытесняющая многозадачность. Таймер тикнул, поток прервался, адрес сохранили и при возврате подменили на сохраненный ранее адрес другого потока.
Я эту программу ещё в 2018 написал, но с недоделками забросил.
Ну раз делиться проектами выходного дня, то вот мой
После экспериментов с программатором из ардуинки выяснил,
что приложив ручки прошивку программатора можно
1) собрать на arduino-1.8.13
2) для кварца 18.432МГц (бут и прошивки)
3) со скоростью 115200
4) вернуть на место вырезанную индикацию
5) впихнуть в корпус к USB хабу вместе с двумя ch340g
и после этого программатор остается рабочим
(были опасения, что поломается...)
а так как для его создания использовали
одинадцатый пример из IDE = ArduinoISP.ino
то сменой адаптера и прошивки можно одним и тем же программатором
шить как atmega328 так и LGT8FX8D
Если самим лень крутить настройки IDE, собирая готовые куски кода, то могу выложить собранный вариант прошивок...
Если чуть ещё допилить то только адаптера
(по замкнутому пину - определять адаптер)
Если в эту плату запаять ATMega328P она станет полноценной Arduino Nano R3?
Если в эту плату запаять ATMega328P она станет полноценной Arduino Nano R3?
нет.
Зачем?
Если в эту плату запаять ATMega328P она станет полноценной Arduino Nano R3?
нет.
Зачем?
Платка покупалась для transistor tester из соседней темы. Тогда я ничего не знал о клонах WAVGAT. Скетч тестера на этой плате не запускается, помигал светодиодами и теперь она уже 3 год лежит без толку на полке.
Покупать оригинальный Arduino Nano за 1000+ жаба душит. Вот и подумалось, что может ATMega328P на этой плате взлетит.
То что здесь CH430A вместо FTDI232 я знаю. А какие еще коренные различия?
Покупать оригинальный Arduino Nano за 1000+ жаба душит. Вот и подумалось, что может ATMega328P на этой плате взлетит.
А что, 328я мега в наличии? Зачем тогда плата? Используй "голый камень"...
А если не в наличии - то "овчинка выделки не стОит".
Ramses2, есть вариант транзистортестера для lgt, только он не arduino-friendly. https://github.com/DurandA/transistor-tester-lgt328p
Нужно ручками настроить под требуемый дисплей и WinAvr что бы скомпилить.
"Это нереально.")))
Тут такие тупые вопросы, а вот вдруг...)
какие еще коренные различия?
как минимум напряжение питания, вся разводка платы под 3.3в
Господа форумчане! Я здесь недавно, поэтому прошу не закидывать тапками.
Перечитал тему несколько раз, перепробовал всё, что можно, ставил Аддон, менял, редактировал файлы,но так и не смог завести этот таймер Т3.
Если у кого-то работает, ткните носом, пожалуйста, может что-то упустил...
Господа форумчане! Я здесь недавно, поэтому прошу не закидывать тапками.
Перечитал тему несколько раз, перепробовал всё, что можно, ставил Аддон, менял, редактировал файлы,но так и не смог завести этот таймер Т3.
Если у кого-то работает, ткните носом, пожалуйста, может что-то упустил...
у меня работает, пример выкладывал
Вроде бы завёл таймер Т3
С использованием регистра сравнения ICR3 и WGM3 = 12 работает как и другие таймеры корректно.
я так понял строки 17 и 18 важны?