EzR1d3r, вы не это, случайно, хотели залить на LGT8F328P? https://alexgyver.ru/colormusic/
А то больно схожий результат у меня с вашим. Прям один-в-один. И так же проблему с компиляцией решила ссылка на github.
Если да, то как себя ведёт готовый проект? Не пришлось переносить его на Pro mini?
Что вы подразумеваете под "такой же"? Совместимость по распиновке? Совместимость по регистрам?
LGT8F328P это клон (частично) ATmega328P. Камня с бОльшим количеством памяти, но c такой же распиновкой и такими же регистрами нет.
Например есть ATmega640 с 64кб и ATmega1280 с 128кб. Но они отличаются от ATmega328P/LGT8F328P как распиновкой (там даже пинов больше), так и регистрами.
Новость: Из обсуждений скетча-программатора для LGT8F на гитхабе - один из пользователей пишет, что связался с техническим директором производителя, и тот сообщил, что в ближайшее время выпустят новую версию скетча-прошивальщика с поддержкой LGT8F328P.
Таки свершилось. Новая версия скетча-программатора с поддержкой LGT8F328P оказывается вышла 2 месяца назад. https://github.com/LGTMCU/LarduinoISP Кто проверит отпишитесь.
Куплено сих плат на LGT8F328P некоторое количество ввиду расширенного функционала.
WeMos XI Alpha 8F328P-U
Arduino Nano Alpha LGT8F328P
Arduino Pro Mini Alpha LGT8F328P-SSOP20
Качество достойное. По методе dimax проверил качество тактирующих внутренних RC генераторов. Так вот, джиттер не обнаружен. От слова совсем. Частоты (32 мГц) - красная платка +6 кГц, средняя -3 кГц, нижняя - 3 кГц. При касании пальцем небольшой уход вниз частоты от прогрева, с последующим постепенным возвратом. То же с кварцами. Я впечатлен..
На средней зеленой плате экспериментировал с тактированием от кварцев. Я удивлен..
48 и 50 мегагерц. Проверил правда только блинком
//переключения тактирования
#include "lgtx8p.h"
void setup(){
pinMode(13, OUTPUT);
//rc32khz(); // внутренний 32 кгц
quartzHF(); // внешний кварц
CLKPR = 1<<WCE; // разрешить изменение
CLKPR = 1<<CLKOE0 | 0<<DPS0; //делитель = 1 и вывод clk на PBO
}
void loop()
{
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
void quartzHF()
{
PMCR = 1<<PMCE; // разрешить изменение
PMCR |= 1<<OSCMEN; // включить HF quartz
PMCR = 1<<PMCE; // разрешить изменение
PMCR |= 1<<CLKSS; // переключиться на HF quartz
//PMCR = 1<<PMCE; // разрешить изменение
//PMCR &= ~(1<<CLKSS); // отключить RC 32 Mhz
}
void rc32khz()
{
PMCR = 1<<PMCE; // разрешить изменение
PMCR |= 1<<RCKEN; // включить RC 32 kHz
PMCR = 1<<PMCE; // разрешить изменение
PMCR |= 1<<CLKFS; // переключиться на RC 32 kHz
PMCR = 1<<PMCE; // разрешить изменение
PMCR &= ~(1<<CLKSS); // отключить RC 32 Mhz
}
Джиттер конечно есть, он не может не есть ;) Но при наблюдении на осциллографе при бесконечном послесвечении луча на развертке 8 ns на деление не выявлен явно, наблюдалась некоторая флюктуация по показаниям частотомера в пределах десятой доли процента и ниже. Не хуже чем с кварцами.
Домосед, по всей вероятности вашему осциллографу измерить джиттер "не по зубам". Что за прибор то?
Возможно.
Hantek DSO5102P и OWON SDS6062. Щюпы на 100 МГц, но я не верю, оценочно 30-50.
Хотел одно время прикупить RIGOL DS1054Z из gray партии разлоченный, но по отзывам запашок у них был сногшибательный, отвернуло меня. Да и нужна была мне гальваническая развязка по входам. Сейчас есть, Овен еще аккумулятор имеет.
Да кстати c кварцем на 50 МГц DAC работает - синус на выходе стоит как влитой. 11.48 кГц, против 3.683 кГц по дефолту. Кварц беленький такой, на фото верху видно.
Может это из даташита поможет:
"Перед использованием режима DPS2 программное обеспечение
- устанавливает IOCWK для включения требуемого входа IO
- или включает LPRC через регистр DPS2R и настраивает период пробуждения,
- затем включает режим DPS2 через бит DPS2EN в регистре DPS2R.
После настройки программное обеспечение должно
- установить режим спящего режима DPS2 через регистр SMCR,
- а затем выполнить команду SLEEP для перехода в спящий режим."
Вести с кварцевых полей.
Вышеименованная Arduino Nano Alpha LGT8F328P, избранная для опытов, с кварцем на 64 МГц типа HC-49S не завелась. Или надо было вывод на PB0 не включать? Хотя судя по осциллограмме хотела, характерные заломы 3-ей гармоники. А может мне почудилось..
В общем ВЧ кварц на 3 гармонике здесь не подходит. Одногармониковые на 64 МГц мне не попадались на глаза.
С кварцем на 48 мегагерц удалось "оцифровать" вот такой причудливый сигнал 21 Гц c DDS генератора.В общем считаю плата с камнем годные, в хозяйстве пригодятся :)
Домосед, с разгоном этого МК не всё так просто как может показаться. Он действительно без труда запускается на частотах выше штатных 32 МГц, но если тщательно тестировать чтением/записью с флеша, всякими тяжёлыми математическими операциями, то нет-нет да и сбойнёт. Так что разгонять его если и есть смысл, то только в экспериментальных целях.
Одно из достоинств этих мелкоплат то что детали с одной стороны, большинство NANO сделаны с двух сторонним монтажем и не всегда влазят куда надо. Каждый раз приходится довольно долго рыться чтоб найти версии односторонние на алике, повторно у того же продавана брать получается редко, они поднимают цену и даже нет смысла добавлять в избранное
Через телефон эти платки (на этом клоне) программироваться не захотели, возможно они не знают такой VID PID CH340 без кварца, странно зачем надо было делать разные ID микросзем если отличия лишь в букве, очень не грамотное китайское решение.
В целом чипы оказались бесперспективными из-за стремного АЦП, тем более что китаезы обманули с разрядностью, она указана с учетом оверсемплинга. У производителя который так пытается нае.-ть покупателя я ничего брать не буду.
Конечно чипы значительно гибче atmega328, это лично меня сильно манит до сих пор.
В целом чипы оказались бесперспективными из-за ;стремного АЦП, тем более; что китаезы обманули; с разрядностью, она указана с учетом оверсемплинга. У производителя который так пытается нае.-ть покупателя я ничего брать не буду.</p>
Правильно не берите, цены меньше будут. :D
И причем здесь оверсемплинг?
Сегодня занялся изучением ADC LGT8F.. Набросал простенький скетч без analogRead() подал 5 mV на А4 и был удивлен диким смещением оцифровки, причем имеющим плавающее значение. C analogRead() проблем нет :O
Из даташита:
23.2.6. Калибровка смещения АЦП
Из-за изменений в производственном процессе и присущих характеристикам
структуры схемы внутренняя схема компаратора АЦП будет производить разные
уровни ошибки смещения. Поэтому компенсация напряжения смещения имеет
решающее значение для создания высокоточной структуры преобразования АЦП.
АЦП внутри чипа LGT8FX8P поддерживает интерфейс, связанный с
напряжением смещения, который может использоваться для завершения измерения
и калибровки смещения. ..
Смотрю Атмеловский wiring_analog.c
int analogRead(uint8_t pin)
{
uint8_t low, high;
...
// start the conversion
sbi(ADCSRA, ADSC);
while (bit_is_set(ADCSRA, ADSC));
low = ADCL;
high = ADCH;
...
// combine the two bytes
return (high << 8) | low;
}
И получается в analogRead() два замера с переключением входной полярности внутреннего компаратора, с последующим "усреднением" и компенсации смещения. Разряды преобразования то честные - 12. При этом правда теряем динамический диапазон и на референсе 4.096V будем иметь предел измерений например 3V.
Опробую еще дифференциальный усилитель, как разберусь как его включать.
Пример использования дифференциального усилителя в блоке ADC. Усиление х16, инвертирующий вход на gnd, неинвертирующий на А0, через мультиплексор. Присутствует напряжение смещения нуля зависящее по меньшей мере от коэф.усиления, соответственно его необходимо учитывать. Определяется замыканием входа на землю. Подавал на вход А0 4.4mV с RR делителя. Напряжение контролировал мультиметром XB-868.
Домосед, мужики плюются от диф АЦП АVR. Говорят что редкая дрянь из за жуткого дрейфа нуля. И даже в документации написано, что для диф режима гарантируется точность не 10, а 8 бит.
Хотя, может быть китайские инженеры чего нибудь улучшили...
Мужики не зря плюются. До кучи ещё и входа диф.усилителя на Gnd до конца программно не прожимаются - компенсацию температурного дрейфа толковую не сделать..
Подключил таки К термопару, но точность +- 10гр. Ж(
---
Нет, вру.. 40uV на 1градус у термопары, итого.. в общем на пару градусов брешет.
Здравствуйте. Второй день ковыряю Pro Mini Alpha LGT8F328P-SSOP20 и читаю ветку данного форума. Много нового узнал, но в некоторых темах совершенно не разбираюсь. Прошу помощи и не кидать тапками, только сегодня узнал что такое регистры и работа с портами напрямую. Многого еще не понимаю. Пытаюсь сделать 1й пин программируемым (по умолчанию на нем reset)
Делаю следующее в setup. Но не могу прошить - плата зависает. Правильные ли регистры я прописал - это первый вопрос. И как обойти обработку этого пина при прошивке? По задумке на нем должен светиться управляемый светодиод (подключен с резистором).
PMX2= 1<<WCE; //разрешаем изменения регистра IOCR в ближайшие 6 тактов
PMX2= 1<<C6EN; //отвязываем reset от первого пина
DDRC= 1<<7; //назначаем порт на выход
upd: поправочка, reset все же отвязался. Но, в том числе, и набортная кнопка. Поэтому и перепрошить не получается. В этой плате перед заливкой скомпилированного скетча нужно как раз удерживать reset. А программатор у меня без DTR-контакта. Ребята, как быть?
GennadyK, вместо ресета дёргать питание, тот же эффект по идее. Главное не притяните ресет к земле вашим светодиодом, иначе МК в принципе не запустится.
Не, не срабатывает. Выпадает с ошибкой подключения:
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30
Сталкивался с подобным, правда PC6 не ремапил, пришлось перепрошивать загрузчик по SWD интерфейсу через нану.
Судя по всему там там загрузчик слишком мало ждет загрузки скетча и запускает сразу user aplication. У меня в скетче был постоянный вывод в Serial, ставлю между сессиями вывода delay(), проблемы с загрузчиком пропадают. И самое интересное помогала иногда загрузка Blink :O
В общем, надо было вырубить питание перед загрузкой и зажать reset. Не отпуская его, врубить питание. И отпустить только когда скетч будет готов к загрузке.
Война клонов? Или китайцы выпустили один клон и тиражируют его
в разных вариантах. Давно купил MD-328D, но руки до него так и не дошли.
Уже давно и не один клон. Чего стоит продукция RobotDyn.
Не понимаю зачем эксперименты с LGT8F328P, потратить уйму времени, лучше за это время изучить линейку STM8, 32.
Тоже купил сего зверька только в корпусе SSOP20. https://3v3.com.ua/product_8179.html Там же на странице ссылка на пакет аппаратной поддержки и PDF документация (правда на китаезском, если кто переведет огромное спасибо)
Но у меня была для этого серьезная мотивация - планировалось снятие контроллера и впаивание его в плату пульта радиоуправления моделями (там стоит неизвестный контроллер SSOP20, но уже есть плата, разводка питания, два джойстика, светодиоды и кнопки управления, плюс все это в корпусе с отсеком для батареек).
Всё это для автоматики рыболовного кораблика на nRF24L01 с дальностью до 1 километра
Зверька пока не покупал и заранее хотелось бы выяснить два момента
1) А что у этих процессоров с лок фусе битами? Есть ли на них описание?
в программаторе они упоминаются.
param.lockbytes = buff[6];
param.fusebytes = buff[7];
2) скачав исходники провел поиск в них по UCSR и не нашел таблички присвоения
inc файла с Register/Bit Definitions for the LGT8F328P
сами регистры используются. Откуда его выдрать можно?
3) Кто нибудь пользовался программатором?
"Новая версия скетча-программатора с поддержкой LGT8F328P оказывается вышла 2 месяца назад. Кто проверит отпишитесь."
На лог заливки посмотреть можно?
Сам спросил - сам отвечаю
1) Чтение документации показывает, что их НЕТ.
Что не запиши читается FF FF FF
Так же тут НЕТ выделенного бут блока как в Мега328.
И соответственно НЕТ лок битов.
2) А ее НЕТ. Табличку выковырял из пдф - и да там ОШИБКИ сверяться с lgtx8p.h из ардуино комплекта.
Как я понял в файле lgtx8p.h описаны только различия с мегой328 - т.е. он не полный.
3) В 260 посте есть картинка - я себе купил такую же
Ловить на PD6, причём в данном режиме переводить PD6 в OUTPUT категорически запрещено, иначе будет к.з т.к. сигнал OC3A будет выводится не на сам PD6, а на запараллеленый ему физически вход компаратора. В общем там всё запутанно :)
Ловить на PD6, причём в данном режиме переводить PD6 в OUTPUT категорически запрещено, иначе будет к.з т.к. сигнал OC3A будет выводится не на сам PD6, а на запараллеленый ему физически вход компаратора. В общем там всё запутанно :)
QuickWitted, да я позже сам проверял -всё ок, -lgt8f328p шьётся и читается новым прошивальщиком без проблем. Помню, что вешал пулл-ап резисторы на swd шину как советовали, и добавлял в файл LGT-аддона Progammers.txt строчки о программаторе "Arduino as ISP". Почему-то по умолчанию его там не было. Там кстати можно в скетче задействовать три выхода под отладочные светодиоды, тогда при включении "программатора" они каждый по очереди подмигивают, а при прошивке 2 из них мигают.
PS: хотя вру, читать записанную прошивку я не пробовал. Но она вливается, это самое главное :)
QuickWitted, поскольку в даташите про программирование через SWD нет ни слова, то можно только гадать. Есть там лок-биты или нет. Мне кажется более вероятным что инженер из logicgreen скетч программатора просто не тестировал на чтение, и где-то в программе есть косячок. По хорошему нужно написать об этом на https://github.com/LGTMCU/LarduinoISP/issues , создать new issue, и описать проблему.
QuickWitted, попробовал прочесть МК. Действительно стоит один раз прочесть, и всё, залитая программа больше не работает. Даже не обязательно считывать прошивку, достаточно просто обратится к МК, и всё..
Просили не цитировать.
На 1 странице вопрос
>А как он по совместимости с Atmega328 на уровне регистров? Хотябы обратной?
Ответ был
>я каждый регистр не сверял :) думаю обратно совместимы, хотя какие-то нюансы скорее всего есть.
После моего подробного копания выяснилось что 99% регистров лежит там же где и у АВР
новые регистры напиханы в свободных местах между старыми, НО!!! (согласно датащиту)
1) у них другой размер таблицы прерываний.
2) у них другой алгоритм чтения H регистров. В начале L потом Nop и только потом H.
3) у аппаратных модулей есть доп регистры которые не мешало бы настроить
Как итог
Прошивка - помигать светодиодом - за исключением сдвижки таблицы прерываний 1 в 1
Но прошивки использующие аппаратные части (например таймер регистры которого для обращения требует нопа) - скорее всего не заведуться. Лечится и то не всегда - пересборкой из исходников под эту плату.
Если речь про регистры таймера, то нопы между операциями нужны только когда таймер работает в турбо-режиме (на тактовой 64 МГц).
Не прокоментируете тогда почему остальные выше писали для таймера который не умеет 64м ?
OCR3AH=r3ah; // Важно, вначале необходимо загрузить верхний регистр!!!
OCR3AL=r3al; // затем нижний
// Нельзя как для Atmega328 - OCR3A = topValue;
Как по мне так как нужен или ноп или за это время присвоить значение регистру.
И пару раз писали что у некоторых H по их менеию обнуляется... а по моему просто не записывается.
Т.е. когда ты читаешь OCR3A то думаешь, что получишь 16 бит, но отдаётся тот-же самый младший char. Надо как минимум поменять на uint16_t , что б отдавалось слово. Или ещё лучше заюзать специальный авр-овский макрос, так будет более корректно.
Хотя, я не профессионал, надо у взрослых спросить.
Небыло. Они в разных сегментах памяти потому и не работает. Код по адресу 0х1234 и данные на таком же адресе - две большие разницы, хотя указатели численно и равны будут. Компилятор их в разные сегменты сует. Для МК это какбыдаже очевидно - одно во флеше другое ОЗУ. У ПК оба в ОЗУ, а сегменты разные.
забрёл случайно на старую запись, если файл типа COM то там один адрес для всех сегментов, потому и программа не могла быть более 64кб
прошу прошения, с 25мГц завелось, TF38 не подошел или умер.
а есть такой же камень но на 64кб или 128 ?
Точно такого нет, так как в любом случае это будет другой камень.
EzR1d3r, вы не это, случайно, хотели залить на LGT8F328P?
https://alexgyver.ru/colormusic/
А то больно схожий результат у меня с вашим. Прям один-в-один. И так же проблему с компиляцией решила ссылка на github.
Если да, то как себя ведёт готовый проект? Не пришлось переносить его на Pro mini?
а есть такой же камень но на 64кб или 128 ?
Что вы подразумеваете под "такой же"? Совместимость по распиновке? Совместимость по регистрам?
LGT8F328P это клон (частично) ATmega328P. Камня с бОльшим количеством памяти, но c такой же распиновкой и такими же регистрами нет.
Например есть ATmega640 с 64кб и ATmega1280 с 128кб. Но они отличаются от ATmega328P/LGT8F328P как распиновкой (там даже пинов больше), так и регистрами.
DDRF = 1<<2 | 1<<1; // Разрешаем вывод в порты D1 и D2
Почему DDRF для пинов порта D? Ошибка или так и надо?
Подскажите место в Даташите на МК где написано про перенаправление портов? (ремапинг)
Почему DDRF для пинов порта D? Ошибка или так и надо?
В 32-х ногом корпусе некоторые пины порта "F" и "D" сидят на одних физических ногах. Об этом есть информация в "описании выводов" даташита.
Подскажите место в Даташите на МК где написано про перенаправление портов? (ремапинг)
В описании регистров мультиплексирования (PMX)
Новость: Из обсуждений скетча-программатора для LGT8F на гитхабе - один из пользователей пишет, что связался с техническим директором производителя, и тот сообщил, что в ближайшее время выпустят новую версию скетча-прошивальщика с поддержкой LGT8F328P.
Таки свершилось. Новая версия скетча-программатора с поддержкой LGT8F328P оказывается вышла 2 месяца назад. https://github.com/LGTMCU/LarduinoISP Кто проверит отпишитесь.
Куплено сих плат на LGT8F328P некоторое количество ввиду расширенного функционала.
WeMos XI Alpha 8F328P-U
Arduino Nano Alpha LGT8F328P
Arduino Pro Mini Alpha LGT8F328P-SSOP20
Качество достойное. По методе dimax проверил качество тактирующих внутренних RC генераторов. Так вот, джиттер не обнаружен. От слова совсем. Частоты (32 мГц) - красная платка +6 кГц, средняя -3 кГц, нижняя - 3 кГц. При касании пальцем небольшой уход вниз частоты от прогрева, с последующим постепенным возвратом. То же с кварцами. Я впечатлен..


На средней зеленой плате экспериментировал с тактированием от кварцев. Я удивлен..
48 и 50 мегагерц. Проверил правда только блинком
Что-то как-то не верится, что нет джиттера
Интересно, а как происходила проверка ? Джиттер есть у всего, гдето 5ps гдето 5μs )
Джиттер конечно есть, он не может не есть ;) Но при наблюдении на осциллографе при бесконечном послесвечении луча на развертке 8 ns на деление не выявлен явно, наблюдалась некоторая флюктуация по показаниям частотомера в пределах десятой доли процента и ниже. Не хуже чем с кварцами.
Домосед, по всей вероятности вашему осциллографу измерить джиттер "не по зубам". Что за прибор то?
Возможно.
Hantek DSO5102P и OWON SDS6062. Щюпы на 100 МГц, но я не верю, оценочно 30-50.
Хотел одно время прикупить RIGOL DS1054Z из gray партии разлоченный, но по отзывам запашок у них был сногшибательный, отвернуло меня. Да и нужна была мне гальваническая развязка по входам. Сейчас есть, Овен еще аккумулятор имеет.
Да кстати c кварцем на 50 МГц DAC работает - синус на выходе стоит как влитой. 11.48 кГц, против 3.683 кГц по дефолту. Кварц беленький такой, на фото верху видно.
Помогите усыпить LGT8F328P_SSOP20 (светик по питанию и стабилизатор выпаял). Ток потребления не опускается ниже 3мА.
Может это из даташита поможет:
"Перед использованием режима DPS2 программное обеспечение
- устанавливает IOCWK для включения требуемого входа IO
- или включает LPRC через регистр DPS2R и настраивает период пробуждения,
- затем включает режим DPS2 через бит DPS2EN в регистре DPS2R.
После настройки программное обеспечение должно
- установить режим спящего режима DPS2 через регистр SMCR,
- а затем выполнить команду SLEEP для перехода в спящий режим."
Вести с кварцевых полей.
Вышеименованная Arduino Nano Alpha LGT8F328P, избранная для опытов, с кварцем на 64 МГц типа HC-49S не завелась. Или надо было вывод на PB0 не включать? Хотя судя по осциллограмме хотела, характерные заломы 3-ей гармоники. А может мне почудилось..
В общем ВЧ кварц на 3 гармонике здесь не подходит. Одногармониковые на 64 МГц мне не попадались на глаза.
В общем считаю плата с камнем годные, в хозяйстве пригодятся :)
С кварцем на 48 мегагерц удалось "оцифровать" вот такой причудливый сигнал 21 Гц c DDS генератора.
Домосед, с разгоном этого МК не всё так просто как может показаться. Он действительно без труда запускается на частотах выше штатных 32 МГц, но если тщательно тестировать чтением/записью с флеша, всякими тяжёлыми математическими операциями, то нет-нет да и сбойнёт. Так что разгонять его если и есть смысл, то только в экспериментальных целях.
Как писал Поэт - "И опыт сын ошибок трудных".. Тут дело такое, пока зуд сам не пройдет, расчесывание только усугубляет течение "болезни"
Одно из достоинств этих мелкоплат то что детали с одной стороны, большинство NANO сделаны с двух сторонним монтажем и не всегда влазят куда надо. Каждый раз приходится довольно долго рыться чтоб найти версии односторонние на алике, повторно у того же продавана брать получается редко, они поднимают цену и даже нет смысла добавлять в избранное
Через телефон эти платки (на этом клоне) программироваться не захотели, возможно они не знают такой VID PID CH340 без кварца, странно зачем надо было делать разные ID микросзем если отличия лишь в букве, очень не грамотное китайское решение.
В целом чипы оказались бесперспективными из-за стремного АЦП, тем более что китаезы обманули с разрядностью, она указана с учетом оверсемплинга. У производителя который так пытается нае.-ть покупателя я ничего брать не буду.
Конечно чипы значительно гибче atmega328, это лично меня сильно манит до сих пор.
Смотрю Атмеловский wiring_analog.c
Коротко и понятно..
Смотрю LGT8F wiring_analog.c
И получается в analogRead() два замера с переключением входной полярности внутреннего компаратора, с последующим "усреднением" и компенсации смещения. Разряды преобразования то честные - 12. При этом правда теряем динамический диапазон и на референсе 4.096V будем иметь предел измерений например 3V.
Опробую еще дифференциальный усилитель, как разберусь как его включать.
Пример использования дифференциального усилителя в блоке ADC. Усиление х16, инвертирующий вход на gnd, неинвертирующий на А0, через мультиплексор. Присутствует напряжение смещения нуля зависящее по меньшей мере от коэф.усиления, соответственно его необходимо учитывать. Определяется замыканием входа на землю. Подавал на вход А0 4.4mV с RR делителя. Напряжение контролировал мультиметром XB-868.
Домосед, мужики плюются от диф АЦП АVR. Говорят что редкая дрянь из за жуткого дрейфа нуля. И даже в документации написано, что для диф режима гарантируется точность не 10, а 8 бит.
Хотя, может быть китайские инженеры чего нибудь улучшили...
Мужики не зря плюются. До кучи ещё и входа диф.усилителя на Gnd до конца программно не прожимаются - компенсацию температурного дрейфа толковую не сделать..
Подключил таки К термопару, но точность +- 10гр. Ж(
---
Нет, вру.. 40uV на 1градус у термопары, итого.. в общем на пару градусов брешет.
Да, я перепутал с этим чипом: http://www.inhaos.com/uploadfile/otherpic/DS-MD-328D-V01-20160412.pdf
Обещали 16 бит, а оказалось там инструкция analogRead_16bits() с оверсемплингом 12 битного АЦП https://aliexpress.ru/item/32655296623.htm Я как раз искал МК что бы напрямую подцепить термомпару. Радость была не долгой :)
http://arduino.ru/forum/obshchii/massduino-uno-r3-lc-md-328d-analog-arduino-uno-r3
Здравствуйте. Второй день ковыряю Pro Mini Alpha LGT8F328P-SSOP20 и читаю ветку данного форума. Много нового узнал, но в некоторых темах совершенно не разбираюсь. Прошу помощи и не кидать тапками, только сегодня узнал что такое регистры и работа с портами напрямую. Многого еще не понимаю. Пытаюсь сделать 1й пин программируемым (по умолчанию на нем reset)
Делаю следующее в setup. Но не могу прошить - плата зависает. Правильные ли регистры я прописал - это первый вопрос. И как обойти обработку этого пина при прошивке? По задумке на нем должен светиться управляемый светодиод (подключен с резистором).
upd: поправочка, reset все же отвязался. Но, в том числе, и набортная кнопка. Поэтому и перепрошить не получается. В этой плате перед заливкой скомпилированного скетча нужно как раз удерживать reset. А программатор у меня без DTR-контакта. Ребята, как быть?
GennadyK, вместо ресета дёргать питание, тот же эффект по идее. Главное не притяните ресет к земле вашим светодиодом, иначе МК в принципе не запустится.
Не, не срабатывает. Выпадает с ошибкой подключения:
Питание снимаю, отомкнув черный и красный провод с программатора - он у меня в виде usb-шнурка
Сталкивался с подобным, правда PC6 не ремапил, пришлось перепрошивать загрузчик по SWD интерфейсу через нану.
Судя по всему там там загрузчик слишком мало ждет загрузки скетча и запускает сразу user aplication. У меня в скетче был постоянный вывод в Serial, ставлю между сессиями вывода delay(), проблемы с загрузчиком пропадают. И самое интересное помогала иногда загрузка Blink :O
Победа.
В общем, надо было вырубить питание перед загрузкой и зажать reset. Не отпуская его, врубить питание. И отпустить только когда скетч будет готов к загрузке.
P.S. Кстати, возвращал к жизни тоже blink'ом))
Война клонов? Или китайцы выпустили один клон и тиражируют его
в разных вариантах. Давно купил MD-328D, но руки до него так и не дошли.
Уже давно и не один клон. Чего стоит продукция RobotDyn.
Не понимаю зачем эксперименты с LGT8F328P, потратить уйму времени, лучше за это время изучить линейку STM8, 32.
Тоже купил сего зверька только в корпусе SSOP20. https://3v3.com.ua/product_8179.html Там же на странице ссылка на пакет аппаратной поддержки и PDF документация (правда на китаезском, если кто переведет огромное спасибо)
Но у меня была для этого серьезная мотивация - планировалось снятие контроллера и впаивание его в плату пульта радиоуправления моделями (там стоит неизвестный контроллер SSOP20, но уже есть плата, разводка питания, два джойстика, светодиоды и кнопки управления, плюс все это в корпусе с отсеком для батареек).
Всё это для автоматики рыболовного кораблика на nRF24L01 с дальностью до 1 километра
Зверька пока не покупал и заранее хотелось бы выяснить два момента
1) А что у этих процессоров с лок фусе битами? Есть ли на них описание?
в программаторе они упоминаются.
param.lockbytes = buff[6];
param.fusebytes = buff[7];
2) скачав исходники провел поиск в них по UCSR и не нашел таблички присвоения
inc файла с Register/Bit Definitions for the LGT8F328P
сами регистры используются. Откуда его выдрать можно?
3) Кто нибудь пользовался программатором?
"Новая версия скетча-программатора с поддержкой LGT8F328P оказывается вышла 2 месяца назад. Кто проверит отпишитесь."
На лог заливки посмотреть можно?
Сам спросил - сам отвечаю
1) Чтение документации показывает, что их НЕТ.
Что не запиши читается FF FF FF
Так же тут НЕТ выделенного бут блока как в Мега328.
И соответственно НЕТ лок битов.
2) А ее НЕТ. Табличку выковырял из пдф - и да там ОШИБКИ сверяться с lgtx8p.h из ардуино комплекта.
Как я понял в файле lgtx8p.h описаны только различия с мегой328 - т.е. он не полный.
3) В 260 посте есть картинка - я себе купил такую же
http://arduino.ru/sites/default/files/u50122/lgt3.jpg
мне ее продали как LGT8F328P
она шьется и верифицируется программатором с первой страницы.
после этого прошивка работает.
НО!!! При попытке самостоятельного чтения - прошивка слетает.
Вопрос - прошивку прочитать ТОЧНО нельзя?
(в сети всплывали сообщения что у других не получалось)
Дуде выковырял из ардуино комплекта = arduino-1.8.6-windows
команда для чтения
D:\Dude\avrdude -CD:\Dude\avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -Uflash:r:"D:\Main.hex":i
"Так же отремаппить можно и выход таймера OC3A, который сидит на пине Txd, и так же страдает от резистора" как???
ua6em,
Ловить на PD6, причём в данном режиме переводить PD6 в OUTPUT категорически запрещено, иначе будет к.з т.к. сигнал OC3A будет выводится не на сам PD6, а на запараллеленый ему физически вход компаратора. В общем там всё запутанно :)
ua6em,
Ловить на PD6, причём в данном режиме переводить PD6 в OUTPUT категорически запрещено, иначе будет к.з т.к. сигнал OC3A будет выводится не на сам PD6, а на запараллеленый ему физически вход компаратора. В общем там всё запутанно :)
проще наверно резисторы и светодиоды оторвать
Выше просили отписываться о проверке программатора.
Купил плату на которой написано LGT8F328P SSop20
Заливал в нее прошивку через самодельный программатор с гитхаба
(делал из Nano V3)
SSop20 так же пишется как и плата с процом в корпусе LQFP
после залива прошивка работает...
и так же при попытке чтения прошивка с него слетает...
(читаются одни FF).
QuickWitted, да я позже сам проверял -всё ок, -lgt8f328p шьётся и читается новым прошивальщиком без проблем. Помню, что вешал пулл-ап резисторы на swd шину как советовали, и добавлял в файл LGT-аддона Progammers.txt строчки о программаторе "Arduino as ISP". Почему-то по умолчанию его там не было. Там кстати можно в скетче задействовать три выхода под отладочные светодиоды, тогда при включении "программатора" они каждый по очереди подмигивают, а при прошивке 2 из них мигают.
PS: хотя вру, читать записанную прошивку я не пробовал. Но она вливается, это самое главное :)
Как по мне главное наличие лок битов или невозможность студентам считать (скопипастить за вечер) собранный девайс.
Так он читается (и я что то не так делаю) или нет (и это замена лок битов)?
QuickWitted, поскольку в даташите про программирование через SWD нет ни слова, то можно только гадать. Есть там лок-биты или нет. Мне кажется более вероятным что инженер из logicgreen скетч программатора просто не тестировал на чтение, и где-то в программе есть косячок. По хорошему нужно написать об этом на https://github.com/LGTMCU/LarduinoISP/issues , создать new issue, и описать проблему.
чтение при верификации работает...
Или по простому чтение СРАЗУ после записи = работает
А самостоятельное чтение - сносит прошивку.
чтение
и запись
QuickWitted, попробовал прочесть МК. Действительно стоит один раз прочесть, и всё, залитая программа больше не работает. Даже не обязательно считывать прошивку, достаточно просто обратится к МК, и всё..
После этой команды залитый предварительно блинк уже не мигает.
Просили не цитировать.
На 1 странице вопрос
>А как он по совместимости с Atmega328 на уровне регистров? Хотябы обратной?
Ответ был
>я каждый регистр не сверял :) думаю обратно совместимы, хотя какие-то нюансы скорее всего есть.
После моего подробного копания выяснилось что 99% регистров лежит там же где и у АВР
новые регистры напиханы в свободных местах между старыми, НО!!! (согласно датащиту)
1) у них другой размер таблицы прерываний.
2) у них другой алгоритм чтения H регистров. В начале L потом Nop и только потом H.
3) у аппаратных модулей есть доп регистры которые не мешало бы настроить
Как итог
Прошивка - помигать светодиодом - за исключением сдвижки таблицы прерываний 1 в 1
Но прошивки использующие аппаратные части (например таймер регистры которого для обращения требует нопа) - скорее всего не заведуться. Лечится и то не всегда - пересборкой из исходников под эту плату.
2) у них другой алгоритм чтения H регистров. В начале L потом Nop и только потом H.
Если речь про регистры таймера, то нопы между операциями нужны только когда таймер работает в турбо-режиме (на тактовой 64 МГц).
Не прокоментируете тогда почему остальные выше писали для таймера который не умеет 64м ?
Как по мне так как нужен или ноп или за это время присвоить значение регистру.
И пару раз писали что у некоторых H по их менеию обнуляется... а по моему просто не записывается.
QuickWitted, это подкол от автора "ядра". Я вроде писал про это где-то. В файлике lgtx8p.h написано вот это:
Т.е. когда ты читаешь OCR3A то думаешь, что получишь 16 бит, но отдаётся тот-же самый младший char. Надо как минимум поменять на uint16_t , что б отдавалось слово. Или ещё лучше заюзать специальный авр-овский макрос, так будет более корректно.
Хотя, я не профессионал, надо у взрослых спросить.
Небыло. Они в разных сегментах памяти потому и не работает. Код по адресу 0х1234 и данные на таком же адресе - две большие разницы, хотя указатели численно и равны будут. Компилятор их в разные сегменты сует. Для МК это какбыдаже очевидно - одно во флеше другое ОЗУ. У ПК оба в ОЗУ, а сегменты разные.
забрёл случайно на старую запись, если файл типа COM то там один адрес для всех сегментов, потому и программа не могла быть более 64кб
можно было и exe в один сегмент запхать, если указать модель компиляции tiny (или small)