Добрый день, уважаемые! Удалось загрузить скетч из примеров AnalogReadSerial. В мониторе порта вижу такую картинку. И еще вопрос. Почему нет генерации на 8 пине МК, кварц стоит в микрокопусе маркировка AL. Осциллограф DSO5102Р щуп 1/10.
Плата Wavgat Pro Mini. 16 МГц, 5 В питание. Заработала только в такой конфигурации. Судя по картинке плоттера предыдущего поста, порт USB совсем не годитса для питания платы. Осталса только один вопрос. Работает ли кварц? У Dimax_а вроде мелькало где - то, как вывести OSC на ногу.
OK0, ну судя по вашей же квоте -то будет решена в следующем релизе. Причём это не такая уж простая штука -задействовать новые векторы ввиду серьёзной сцепки данного аддона с профилем меги328 из Avr gcc . Не удивлюсь, ежели товарищ david buezas ознакомиться с глубиной проблемы, и откажется от этой затеи :)
dimax, ок. Я по-видимому неправильно понял (первая ссылка) и решил, что проблема решена и решение будет "формализовано" в следующей версии... но... разве эти будущие изменения не описаны (первая ссылка)?
dimax, добрый вечер. есть вопрос по wavgadtu. Купил ардуино нано, такой - "wavgat AVGA328p". почитал форум. скачал по вашей ссылке аддон "Larduino_HSP-master". распаковал скопировал как указано в папку (C:\Users\Home\Documents\Arduino) , в программе "arduino 1.8.7" появились новые платформы 5 штук. но мой вавгад так и не заливает скетч. что то еще упустил?
Возможно я не знаю правильную последовательность установки аддонов и скетча? COM4 9600 бод. Загружаю скетч, выбираю плату из списка и даже не проходит проверку. выдает ошибку : exit status 1
Ошибка компиляции для платы LGT8F328P-LQFP48 MiniEVB. Пробовал все 5 из списка
Лень считать точно, но это должно мигать не раз в секунду, а раз в неделю. Но сам тот факт, что мигает -значит по вектору таки проваливается, а дальше , судя по всему, начинается бесовщина. Видимо товарищ Давид сам эти векторы не тестил.
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
Возможно я не знаю правильную последовательность установки аддонов и скетча? COM4 9600 бод. Загружаю скетч, выбираю плату из списка и даже не проходит проверку. выдает ошибку : exit status 1
Ошибка компиляции для платы LGT8F328P-LQFP48 MiniEVB. Пробовал все 5 из списка
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
да если бы "димакс" сразу нормально объяснил. а то пишет поставь аддон и все. а про кварц умолчал. я то поверил этому господину с 7 летним стажем, думал аддон там все частоты выравнивает под амегу. а читать не лень. просто как мне помогут 300 страниц фото осцилографа с меандром? для вас эти фотки важные. вы там до самого господа уже врата открыли. новичкам это не помогает. про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
А скетч не выкладываю, потому что любой скетч не заливается. Один только и работает Blink. 13 светодиод моргает, но видно, что несовпадушки по времени.
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
да если бы "димакс" сразу нормально объяснил. а то пишет поставь аддон и все. а про кварц умолчал. я то поверил этому господину с 7 летним стажем, думал аддон там все частоты выравнивает под амегу. а читать не лень. просто как мне помогут 300 страниц фото осцилографа с меандром? для вас эти фотки важные. вы там до самого господа уже врата открыли. новичкам это не помогает. про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
А скетч не выкладываю, потому что любой скетч не заливается. Один только и работает Blink. 13 светодиод моргает, но видно, что несовпадушки по времени.
Спасибо еще раз господину NickF у.
Если в скетче библиотеки (ардуиновские) то с БООООльшой вероятностью они НЕ будут работать с этой платой ...
OK0, значит в скетче дело. Видимо поскольку на все события 3-го таймера одно прерывание тут сделали как у STM-ок, т.е. регистр флагов прерывания не отчищается автоматом, и получается, что когда прерывание честно отработало, то контроллер видит флаг прерывания, и опять отправляется в прерывание , т.е. прерывания строчат как из пулемёта. Значит надо вручную снимать флаг, т.е. первой командой в прерывании должна быть команда. TIFR3|=1<<OCF3A; либо TIFR3=TIFR3;
Таймер3 может вызывать прерывания и через... э... ногу, так сказать. За счет того, что пины физически совмещены на платах. Выход Таймера3 PF2 вызывает прерывание на совмещенном с ним PD2.
Вопрос про изменение внутреннего источника опорного напряжения. Измеряю напряжение (RMS) в бытовой электросети (220/380). Точнее, измеряю изменения напряжения.
300 измерений за полупериод (10мс). Вот пришло в голову, после завершения преобразования изменять (или не изменять) внутренний ИОН в соответствии с ожидаемым уровнем напряжения. Должно ощутимо повысить точность. Пока не пробовал, решил спросить. Не фигня ли это полная?
Сильно зависит от максимума входного измеряемого напряжения на ноге процессора. RMS для этого процессора очень затратная операция. Для измерения напряжения сети достаточно измерить точек 5 вокруг максимума с максимальной скоростью и усреднить. Мой опыт говорить, что таким образом мы имеем точность около 1 вольта. По крайней мере реле напряжения на таком алгоритме срабатывает именно с такой точностью.
nik182, вы меня наверно не совсем поняли... Я, в силу своей малограмотности, не могу оценить существенно ли повысится точность, если использовать переключение внутренних ИОНов почти "на ходу". И нет ли каких-либо противопоказаний для такого частого переключения. Разумеется "максимум входного измеряемого напряжения на ноге" в каждом из четырех диапазонов равен опорному напряжению для этого диапазона (в идеале). Ну а затратность, несимметричность и несинусоидальность, по-видимому, не стоит в этой теме обсуждать... Во всяком случае, мне.
PS Выделил жирным два слова, дабы, не изменяя, сделать более контрастной смысловую нагрузку трех следующих за этим сообщением комментариев.
Так на форуме пишут что RMS - круто, вот и химичат безпонятливые. А реально да, для большинства случаев и амплитуды предостаточно. И пяток точек у максимума оно конечно хорошо, только как же узнать, когда его мерить. Я обычно так делаю. Как есть свободные 20мс начинаю максимально часто вводить напряжение, ограничиваю верхним пределом (например 350В для ввода максимума при 220) на лету слегонца фильтрую, это чтоб 'иголки' задавить и ловлю максимум за эти 20мс. Эти максимумы, периодически определяемые по ходу работы снова фильтром сглаживаю. То, что получилось и есть амплитуда напряжения. Ток с трансформатора аналогично. Да, и ввожу только пол волны, вторая нафиг, она такаяже.
Я через мегом подаю 220 на ногу, на вторую через делитель из мегома и подстроичника 20к. По первой ноге по прерыванию начинаю отсчёт 4 мс. По истечение 4 мс делаю 5замеров на второй. Попадаю точно чуть до и после максимума. Все на тине25.
В QFP48 есть выводы AGND и AVCC. "Прозвонка" показала, что они физически соединены в корпусе микросхемы с выводами GND и VCC соответственно. Так должно быть?
И еще один вопрос, на схеме обвязки, на сайте производителя, предлагается соединить эти выводы через R1 и R2 номиналом 0 ом.
В QFP48 есть выводы AGND и AVCC. "Прозвонка" показала, что они физически соединены в корпусе микросхемы с выводами GND и VCC соответственно. Так должно быть?
Бывает по-всякому. КЗ думаю не должно быть, обычно либо полный разрыв цепей (мегомы) либо есть небольшое сопротивление (единицы Ом). Главная задача, что б "цифровые токи" не гуляли по аналоговым цепям. Так что если АЦП используется, и надо из него выжать максимум, то лучше делать всё по-уму.
Вот мой пост удалили зачем?
Все же написал, что я думаю по этому поводу. Ну да ладно..
OK0 пишет:
В QFP48 есть выводы AGND и AVCC. "Прозвонка" показала, что они физически соединены в корпусе микросхемы с выводами GND и VCC соответственно. Так должно быть?
Быть так не должно в нормальных MCU. Но читаем это, где Warning!!! Что уж тут говорить о LGT.
OK0 пишет:
И еще один вопрос, на схеме обвязки, на сайте производителя, предлагается соединить эти выводы через R1 и R2 номиналом 0 ом.
dimax, ок. Вопрос был отчасти риторический ("Ну не должно же быть так, не так ли?"). Увы, на обеих микросхемах мой прибор показывает одинаковое сопротивление, близкое к нолю, AVCC-VCC, GND-GND и AGND-GND. Очень жаль... ("А пацаны-то не знают"). Впрочем, учитывая что я, по-видимому, являюсь единственным в мире розничным приобретателем QFP48, разделить мое горе не с кем...
PS Домосед, по поводу "вырубки лесов" (из удаленного сообщения) и R1 = R2 = 0, представляется мне, что что авторы обращают внимание, что аналоговые и цифровые должны быть соединены не абы как, а должным образом. В документации на ATmega328 это "должным образом" отчасти представлено на рисунке с надписью "analog ground plane" (полигон?). Не так ли?
Так что в итоге? АЦП совершенно негодный и существенно уступает 10 битам Меги? Выше было сравнение и оно сильно не в пользу LGT8F328P. Или дело в референсе?
Strangeman, АЦП вполне годный, и, на мой взгляд, существенно превосходит АЦП Atmega 328. Сравнений "не в пользу" не встречал, в том числе и "выше". Речь шла о попытке исправить неидеальное подключение питания АЦП, которое практикуется на всех ардуино и ардуинообразных платах, и "выжать максимум" из АЦП.
Strangeman, АЦП вполне годный, и, на мой взгляд, существенно превосходит АЦП Atmega 328. Сравнений "не в пользу" не встречал, в том числе и "выше". Речь шла о попытке исправить неидеальное подключение питания АЦП, которое практикуется на всех ардуино и ардуинообразных платах, и "выжать максимум" из АЦП.
На плоттере выглядит довольно скверно по сравнению с мегой.
Ну и в первом сообщении "АЦП этот бегло протестировал,".
Так что, стоит брать пробовать? Реально 12 бит и неплохая стабильность? Изначальная точность меня мало волнует - откалибрую, важна стабильность.
Что же касается адуинообразных плат и питания - я это давно заметил и абсолютно не понимаю такого подхода. Экономия на 1 дросселе и 1 конденсаторе? Это уже за пределами добра и зла.
Так это про другой контроллер. Непонятно, что эти сообщения в данной теме делают. Удалить бы надо. Только в заблуждение вводят.
Я вот нашел старую картинку, измерял на делителе от батареи. Красные линии - плюс минус пол процента от среднего.
PS Что-то неудачно картинка разместилась. Если на словах: Atmega328 - реально только 8 разрядов (до 200 кГц). LGT 328P- реально 12 разрядов - до 3000 кГц.
Народ, банальный вопрос, пришла плата, та, что без кварцев, на USB чипе HT42B534-1. Подключаю к Пк, ОС WIN-7 ее не видит, т.е. не создакт вирт. Сом порт, пытаюсь найти драйвера, найденные не как не решают проблемы, На долбаный "Holtek" нет ничего. Но с другой стороны народ на форуме пишет что для данной микрухи внешние дрова и не нужны, типа, цепляй как мышку, сама в систему встанет, где истина. Если нужны дрова, то где их взять? Первый раз с такой проблемой столкнулся. Устойчиво бъется мысль-микруха USB дохлая. Проверено на 3 ПК с WIN-7. На ХР не проверял. Уже думаю удалить ее нахрен, и подцепить внешний, так сказать, проверенный.
wiktor, ссылка на дрова есть в этой же теме. #171. Тут надо вот что понимать - винда "видит" любое usb-устройство, т.к. те передают своё название и идентификатор. Поэтому если в устройствах совсем ничего нет -то драйвера не помогут. Это аппаратная неисправность. Если видит, но устройство определилось с какими-то проблемами -тогда другой разговор.
А можно подписаться на тему не оставляя комментарий?
А какая тогда от тебя польза в этой теме будет?
Добрый день, уважаемые! Удалось загрузить скетч из примеров AnalogReadSerial. В мониторе порта вижу такую картинку. И еще вопрос. Почему нет генерации на 8 пине МК, кварц стоит в микрокопусе маркировка AL. Осциллограф DSO5102Р щуп 1/10.
Спасибо за помощь всем. Разобралсо сам. В скетче примера изменил строку -
Serial.begin(57600);
и в мониторе поставил скорость 57600.
Плата Wavgat Pro Mini. 16 МГц, 5 В питание. Заработала только в такой конфигурации. Судя по картинке плоттера предыдущего поста, порт USB совсем не годитса для питания платы. Осталса только один вопрос. Работает ли кварц? У Dimax_а вроде мелькало где - то, как вывести OSC на ногу.
Стала работать и со скоростью 9600. Вывел CLK на В0 и добавил чтение регистров CLKPR и PMCR.
1
01
void
setup
() {
02
// initialize digital pin LED_BUILTIN as an output.
03
pinMode(LED_BUILTIN, OUTPUT);
04
sysClock(EXT_OSC);
/* работа CLK от внешнего кварца. Регистр PMCR не изменятся,
05
у меня он имеет значение В110111.
06
*/
07
CLKPR = 1<<PMCE;
// разрешить изменение (вместо PMCE можно было просто поставить цифру 7)
08
CLKPR = 1<<5;
/* вывод clk на пин В0(вывод 8 платы Wavgat Pro Mini) при этой операции
09
очищается бит CLKPR(0), который устанавливает бутдоадер моей платы. В результате чего я получаю
10
Baud rate вдвое меньше устанавливаемого. Т. е. вместо 9600, получается 4800
11
*/
12
Serial
.begin(9600);
13
/* ниже приведенная конструкция не снимает лишние биты в регистре
14
PMCR = PMCR | B10000000; // установка PMCE в 1, чтобы разрешить дальнейшее изменение PMCR
15
PMCR = PMCR | B00000100; // установка бита 2
16
PMCR = PMCR & B11110100; // сброс битов 0, 1
17
PMCR = PMCR | B10000000;
18
PMCR = PMCR | B00100000; // установка бита 5
19
PMCR = PMCR & B00101111; // сброс бита 6
20
*/
21
}
22
23
// the loop function runs over and over again forever
24
void
loop
() {
25
uint8_t BPM = B00000000;
26
BPM = BPM | PMCR;
27
Serial
.print(
"PMCR "
);
28
Serial
.println(BPM, BIN);
29
digitalWrite(LED_BUILTIN, HIGH);
// turn the LED on (HIGH is the voltage level)
30
if
(
Serial
.available()) {
31
uint8_t
as
=
Serial
.read();
32
Serial
.println(
as
, HEX);
33
/* выведет в порт 31, если отправить 1
34
выведет 41, если отправить A (англ.)
35
*/
36
if
(
as
== 0x30) {
37
PMCR = PMCR | B10000000;
38
PMCR = PMCR & B11111100;
39
}
40
else
if
(
as
== 0x36) {
41
PMCR = PMCR | B10000000;
42
PMCR = PMCR & B10101111;
43
}
44
}
45
delay(2000);
// wait for a 0,5 second
46
uint8_t BCL = B00000000;
47
BCL = BCL | CLKPR;
48
Serial
.print(
"CLKPR "
);
49
Serial
.println(BCL, BIN);
50
digitalWrite(LED_BUILTIN, LOW);
// turn the LED off by making the voltage LOW
51
delay(2000);
// wait for a 0,5 second
52
}
А я правильно понял, что проблема с "дополнительными" векторами прерываний решена?
https://github.com/dbuezas/lgt8fx/commit/a0c187d019fb20b739daa1ea2af746f030a9cfff
"In latest release (v1.0.6) timer3 and interrupt vectors definitions are unfinished. They will be fixed in next release."
https://github.com/dbuezas/lgt8fx-forum/issues/9
OK0, ну судя по вашей же квоте -то будет решена в следующем релизе. Причём это не такая уж простая штука -задействовать новые векторы ввиду серьёзной сцепки данного аддона с профилем меги328 из Avr gcc . Не удивлюсь, ежели товарищ david buezas ознакомиться с глубиной проблемы, и откажется от этой затеи :)
dimax, ок. Я по-видимому неправильно понял (первая ссылка) и решил, что проблема решена и решение будет "формализовано" в следующей версии... но... разве эти будущие изменения не описаны (первая ссылка)?
Да, судя по вставке в main.cpp новые векторы уже есть.
01
// START CHANGE BY JAYZAKK
02
#if defined(__LGT8F__)
03
__asm__ (
04
"#include <avr/io.h> \n"
\
05
".section .vectors,\"ax\",@progbits \n"
\
06
".func __vectors \n"
\
07
".weak __vector_26 \n"
\
08
"jmp __vector_26 \n"
\
09
".weak __vector_27 \n"
\
10
"jmp __vector_27 \n"
\
11
".weak __vector_28 \n"
\
12
"jmp __vector_28 \n"
\
13
".weak __vector_29 \n"
\
14
"jmp __vector_29 \n"
\
15
".endfunc \n"
\
16
".section .text \n"
);
17
#endif
18
// END CHANGE BY JAYZAKK
но работают ли они -это вопрос :)
Судя по высказыванием некоторых товарищей, - работают...
"Wow, that's amazing! I still don't get how you did it, though. :D"
https://github.com/dbuezas/lgt8fx/issues/39
OK0, что-то я там не увидел никаких конкретных фактов. Никто не пишет, что успешно сходил по >26 вектору. Проверьте, думаю всё таки НЕ заработает)
dimax, добрый вечер. есть вопрос по wavgadtu. Купил ардуино нано, такой - "wavgat AVGA328p". почитал форум. скачал по вашей ссылке аддон "Larduino_HSP-master". распаковал скопировал как указано в папку (C:\Users\Home\Documents\Arduino) , в программе "arduino 1.8.7" появились новые платформы 5 штук. но мой вавгад так и не заливает скетч. что то еще упустил?
Возможно я не знаю правильную последовательность установки аддонов и скетча? COM4 9600 бод. Загружаю скетч, выбираю плату из списка и даже не проходит проверку. выдает ошибку : exit status 1
Ошибка компиляции для платы LGT8F328P-LQFP48 MiniEVB. Пробовал все 5 из списка
...Никто не пишет, что успешно сходил по >26 вектору. Проверьте...
Проверил. Заменил 3 файла в папке lgt8f. Сказать, что не работает не могу... обратного тоже сказать не могу.
Вот это мигает примерно один раз в секунду.
01
#define kDv 5 // делитель 1024 // только 1,2,3,4,5
02
volatile uint32_t cntr = 0;
03
void
setup
() {
04
pinMode(13, OUTPUT);
05
TCCR3B = 1 << WGM32 | kDv;
// Режим СТС WGM3[3:0]=4 + делитель = 1...5 (1...1024)
06
TIMSK3 |= (1 << OCIE3A);
// включить прерывание по совпадению таймера
07
OCR3AH = B10000000;
// байты регистра сравнения
08
OCR3AL = B11111111;
09
}
10
void
loop
() {
11
}
12
ISR (_VECTOR(29)) {
13
cntr++;
14
if
(cntr > 300000) {
15
cntr = 0;
16
digitalWrite(13, !digitalRead(13));
17
}
18
}
На изменение значений регистров (кроме TIMSK3) не реагирует.
В общем, без взрослых не разобраться...
Лень считать точно, но это должно мигать не раз в секунду, а раз в неделю. Но сам тот факт, что мигает -значит по вектору таки проваливается, а дальше , судя по всему, начинается бесовщина. Видимо товарищ Давид сам эти векторы не тестил.
Не надо все 5 пробовать. Вот эта нужна LGT8F328P-LQFP32 MiniEVB. Кроме платы есть еще установка кварца и выбор порта. Посмотри как у меня выбрано.
Спасибо NickF. Да жалко выкидывать "вавгада" (купил 5 штук) под пресс. С али долго ждать, 90 дней. кварц на 16 мгц?
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
Возможно я не знаю правильную последовательность установки аддонов и скетча? COM4 9600 бод. Загружаю скетч, выбираю плату из списка и даже не проходит проверку. выдает ошибку : exit status 1
Ошибка компиляции для платы LGT8F328P-LQFP48 MiniEVB. Пробовал все 5 из списка
Какой скетч ?
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
да если бы "димакс" сразу нормально объяснил. а то пишет поставь аддон и все. а про кварц умолчал. я то поверил этому господину с 7 летним стажем, думал аддон там все частоты выравнивает под амегу. а читать не лень. просто как мне помогут 300 страниц фото осцилографа с меандром? для вас эти фотки важные. вы там до самого господа уже врата открыли. новичкам это не помогает. про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
А скетч не выкладываю, потому что любой скетч не заливается. Один только и работает Blink. 13 светодиод моргает, но видно, что несовпадушки по времени.
Спасибо еще раз господину NickF у.
про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
Это не тот кварц.
про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
Это не тот кварц.
возле чипа - CH340G на другой стороне? хорошо. с миру по нитке голому рубаха
Один только и работает Blink. 13 светодиод моргает
Ну , а говоришь не заливается. Ищи 2-ой кварц на 16 МГц. Если нет, то ставь internal 16 МГц.
Не выкидывай!!! Положи пока на полку. Когда разберешься, что к чему в ардуино, достанешь. Я тоже был ни уха ни рыла. Тем не менее плату Wavgat Pro Mini запустил. Параллельно запустил шнурок, на PL2303. И счас еще хочу заказать Wavgat Pro Mini, Ардуино нано и еще один КОМ порт на PL2303. Так они мне понравились. А чтобы прояснение быстрее наступило почитай эти 7 страниц форума. Я два раза читал. У меня кварц стоит на 16 МГц. Такая хреновинка длиной 3 мм и шириной 1 мм, металлического цвета. Никогда бы не подумал, что это кварц. Если умеешь делать микросьемку (через линзу), то сфотай плату. я скажу тебе есть кварц или нет. Вообще то у тебя нано, должно быть 2 кварца и две м/схемы.
да если бы "димакс" сразу нормально объяснил. а то пишет поставь аддон и все. а про кварц умолчал. я то поверил этому господину с 7 летним стажем, думал аддон там все частоты выравнивает под амегу. а читать не лень. просто как мне помогут 300 страниц фото осцилографа с меандром? для вас эти фотки важные. вы там до самого господа уже врата открыли. новичкам это не помогает. про кварц я знаю, что это такое и как он выглядит. На фото он стоит рядом с микросхемой на которой написано "вавгат" и он там подписан 12 мГц.
А скетч не выкладываю, потому что любой скетч не заливается. Один только и работает Blink. 13 светодиод моргает, но видно, что несовпадушки по времени.
Спасибо еще раз господину NickF у.
Если в скетче библиотеки (ардуиновские) то с БООООльшой вероятностью они НЕ будут работать с этой платой ...
а дальше , судя по всему, начинается бесовщина. Видимо товарищ Давид...
Забавно, проверил этот код на LGTSDK - тот же результат! Мыргает раз в секунду, а не раз в неделю...
Так что в каком то смысле работает идеально...
01
//===================================================
02
// Auto generated file : 30.12.2020 17:29:44
03
//===================================================
04
05
#include "allinone.h"
06
// extern void init_modules(void);
07
08
int
main(
void
)
09
{
10
DDRB = 0xFF;
11
PORTB = 0b11111111;
12
13
TCCR1A = 0;
14
TCCR1B = 1 << WGM12 | 3;
// Режим СТС WGM3[3:0]=4 + делитель = 1...5 (1...1024)
15
OCR1AH = 0b00111111;
// байты регистра сравнения
16
OCR1AL = 0b11111111;
17
TIMSK1 |= (1 << OCIE1A);
// включить прерывание по совпадению таймера
18
19
TCCR3A = 0;
20
TCCR3B = 1 << WGM32 | 2;
// Режим СТС WGM3[3:0]=4 + делитель = 1...5 (1...1024)
21
OCR3AH = 0b00111111;
// байты регистра сравнения
22
OCR3AL = 0b11111111;
23
TIMSK3 |= (1 << OCIE3A);
// включить прерывание по совпадению таймера
24
25
SEI();
26
27
while
(1) {
28
}
29
return
0;
30
}
31
32
LGT_VECTOR(_VECTOR(11)) {
33
// PORTB ^=(1<< PB5);
34
}
35
36
LGT_VECTOR(_VECTOR(29)) {
37
static
unsigned
int
long
s;
38
s++;
39
if
(s > 100000) {
40
s = 0;
41
PORTB ^=(1<< PB5);
42
}
43
}
OK0, значит в скетче дело. Видимо поскольку на все события 3-го таймера одно прерывание тут сделали как у STM-ок, т.е. регистр флагов прерывания не отчищается автоматом, и получается, что когда прерывание честно отработало, то контроллер видит флаг прерывания, и опять отправляется в прерывание , т.е. прерывания строчат как из пулемёта. Значит надо вручную снимать флаг, т.е. первой командой в прерывании должна быть команда. TIFR3|=1<<OCF3A; либо TIFR3=TIFR3;
dimax, браво! В SDK заработало.
PS Красными же буквами написано
В Arduino IDE c модифицированным ядром от dbuezas (именуемый выше и ниже Давид) тоже работает.
dimax, спасибо большое, и присоединяюсь к Давиду, выражая благодарность автору.
"Really nice jayzakk! I actually needed to use the timer 3 interrupt some time ago and gave up, thanks for this!" dbuezas
Таймер3 может вызывать прерывания и через... э... ногу, так сказать. За счет того, что пины физически совмещены на платах. Выход Таймера3 PF2 вызывает прерывание на совмещенном с ним PD2.
01
//Прерывание PCINT2 вызванное таймером 3
02
// PF2 на плате с QFP32L физически сомещен с PD2
03
#define LEDPIN 13
04
#define KDV 5 // делитель 1024 // только 1,2,3,4,5
05
static
bool
volatile bFlag;
06
//-------------------------------------
07
void
setup
() {
08
cli();
09
pinMode(LEDPIN, OUTPUT);
10
digitalWrite(LEDPIN, HIGH);
11
//=================================================
12
PCIFR &= (0b11111000);
// ? на всякий случай сбрасываем флаги запросов прерываний
13
PCICR |= (1 << PCIE2);
//разрешает обработку прерываний группы PCINT2.
14
PCMSK2 |= (1 << PCINT18);
// разрешает генерировать запрос прерывания PD2
15
//=================================================
16
// PF2 на плате QFP32L физически сомещен с PD2 , если настроен PF2, PD2 настраивать нельзя
17
TCCR3B = 1 << WGM32 | KDV;
// Режим СТС WGM3[3:0]=4 + делитель = 1...5 (1...1024)
18
DDRF |= (1 << PF2) ;
// Разрешаем вывод в PF2
19
TCCR3A = 1 << COM3B0;
// включаем режим "смена уровня" на пине выхода "B" таймера3 PF2
20
OCR3AH = 0b01111111;
// регистры для сравнения
21
OCR3AL = 0b11111111;
22
sei();
23
}
24
//=========================================================================================
25
void
loop
() {
26
digitalWrite(LEDPIN, bFlag);
27
}
28
//-------------------------------------
29
ISR (_VECTOR(5)) {
// Обработчик запросов прерывания PCINT от пинов порта D
30
bFlag = !bFlag;
31
}
Проверил прерывание 27
01
// Использовано модифицированое ядро давида буэноза с включенными пррываниями 26...29
02
#define LEDPIN 13
03
#define KDV 5 // делитель 1024 // только 1,2,3,4,5
04
static
bool
volatile bFlag;
05
//-------------------------------------
06
void
setup
() {
07
cli();
08
pinMode(LEDPIN, OUTPUT);
09
digitalWrite(LEDPIN, HIGH);
10
//=================================================
11
PCIFR &= (0b11100000);
// ? на всякий случай сбрасываем флаги запросов прерываний
12
PCICR |= (1 << PCIE3);
//разрешает обработку прерываний группы PCINT3.
13
PCMSK3 |= (1 << PCINT25);
// разрешает генерировать запрос прерывания PE1
14
//=================================================
15
DDRE |= (1 << PE1);
//|= 0b10;// Разрешаем вывод в PE1
16
sei();
17
}
18
//=========================================================================================
19
void
loop
() {
20
PORTE |= (1 << PE1);
21
delay(500);
22
PORTE &= ~(1 << PE1);
23
delay(500);
24
}
25
//-------------------------------------
26
ISR (_VECTOR(27)) {
// Обработчик запросов прерывания PCINT от пинов порта E
27
bFlag = !bFlag;
28
digitalWrite(13, bFlag);
29
}
и прерывание 28
01
// Использовано модифицированое ядро давида буэноза с включенными пррываниями 26...29
02
#define LEDPIN 13
03
#define KDV 5 // делитель 1024 // только 1,2,3,4,5
04
static
bool
volatile bFlag;
05
//-------------------------------------
06
void
setup
() {
07
cli();
08
pinMode(LEDPIN, OUTPUT);
09
digitalWrite(LEDPIN, HIGH);
10
//=================================================
11
//PCIFR &= (0b11100000); // ? на всякий случай сбрасываем флаги запросов прерываний
12
PCICR |= (1 << PCIE4);
//разрешает обработку прерываний группы PCINT4.
13
PCMSK4 |= (1 << PCINT34);
// разрешает генерировать запрос прерывания PF2
14
//=================================================
15
// PF2 на плате QFP32L физически сомещен с PD2 , если настроен PF2, PD2 настраивать нельзя
16
TCCR3B = 1 << WGM32 | KDV;
// Режим СТС WGM3[3:0]=4 + делитель = 1...5 (1...1024)
17
DDRF |= (1 << PF2) ;
// Разрешаем вывод в PF2
18
TCCR3A = 1 << COM3B0;
// включаем режим "смена уровня" на пине выхода "B" таймера3
19
OCR3AH = 0b00011111;
// регистры для сравнения
20
OCR3AL = 0b11111111;
21
sei();
22
}
23
//=========================================================================================
24
void
loop
() {
25
digitalWrite(LEDPIN, bFlag);
26
}
27
//-------------------------------------
28
ISR (_VECTOR(28)) {
// Обработчик запросов прерывания PCINT от пинов порта F
29
bFlag = !bFlag;
30
}
и, кстати, вход Таймера3 - это четвертый пин на котором можно организовывать прерывание по фронту
01
// Использовано модифицированое ядро давида буэноза с включенными пррываниями 26...29
02
// 29 - номер вектора прерывания от всех событий таймера3
03
#define KDV 2 // делитель 1024 // только 1,2,3,4,5
04
#define LEDPIN 13
05
#define PINCP 10 // pin захвата таймера3 PF4 физически соединен с PB2
06
volatile
bool
flag_29 = 0;
// флаг изменеия состояния для LED
07
//-------------------------------------
08
void
setup
() {
09
pinMode(PINCP, OUTPUT);
// будем изменять состояние
10
pinMode(LEDPIN, OUTPUT);
11
digitalWrite(LEDPIN, LOW);
12
digitalWrite(PINCP, HIGH);
13
//==============================
14
cli();
15
TCCR3A = 0;
// на всякий случай обнуляем регисры настройки таймера3
16
TCCR3B = 0;
17
// настраиваем таймер3
18
// Режим Normal WGM3[3:0]= 0 + делитель = 1...5 (1...1024)+ подавление помех ICNC3 (1 - подавление)
19
// + ICES3 - активный фронт (1-нарастающий, 0 -ниспадающий)
20
TCCR3B |= (KDV) | (1 << ICNC3) | (1 << ICES3);
21
TIMSK3 |= (1 << ICIE3);
// включить прерывание по захвату PF4 физически соединен PB2
22
sei();
23
}
24
25
//-------------------------------------
26
void
loop
() {
27
TCCR3B = 0;
// обновим регистр (без этого почему-то не работает)
28
TCCR3B |= ((1 << ICNC3) | (1 << ICES3)) ;
29
digitalWrite(PINCP, HIGH);
// нарастающий фронт должен вызвать прерывание
30
digitalWrite(PINCP, LOW);
// ниспадающий фронт НЕ должен вызвать прерывание
31
delay(1000);
32
digitalWrite(LEDPIN, flag_29);
33
}
34
//-------------------------------------
35
ISR (_VECTOR(29)) {
36
TIFR3 = (1 << ICF3);
//вручную сбрасываем флаг прерывания
37
flag_29 = !flag_29;
38
}
От 3,3В питание идёт на 4(VCC)процессора.Кто нибудь пробовал запитать от +5В?
У меня стоит 5 - ногая м/схема. Выход 5 В.
Вопрос про изменение внутреннего источника опорного напряжения. Измеряю напряжение (RMS) в бытовой электросети (220/380). Точнее, измеряю изменения напряжения.
300 измерений за полупериод (10мс). Вот пришло в голову, после завершения преобразования изменять (или не изменять) внутренний ИОН в соответствии с ожидаемым уровнем напряжения. Должно ощутимо повысить точность. Пока не пробовал, решил спросить. Не фигня ли это полная?
Сильно зависит от максимума входного измеряемого напряжения на ноге процессора. RMS для этого процессора очень затратная операция. Для измерения напряжения сети достаточно измерить точек 5 вокруг максимума с максимальной скоростью и усреднить. Мой опыт говорить, что таким образом мы имеем точность около 1 вольта. По крайней мере реле напряжения на таком алгоритме срабатывает именно с такой точностью.
nik182, вы меня наверно не совсем поняли... Я, в силу своей малограмотности, не могу оценить существенно ли повысится точность, если использовать переключение внутренних ИОНов почти "на ходу". И нет ли каких-либо противопоказаний для такого частого переключения. Разумеется "максимум входного измеряемого напряжения на ноге" в каждом из четырех диапазонов равен опорному напряжению для этого диапазона (в идеале). Ну а затратность, несимметричность и несинусоидальность, по-видимому, не стоит в этой теме обсуждать... Во всяком случае, мне.
PS Выделил жирным два слова, дабы, не изменяя, сделать более контрастной смысловую нагрузку трех следующих за этим сообщением комментариев.
Так на форуме пишут что RMS - круто, вот и химичат безпонятливые. А реально да, для большинства случаев и амплитуды предостаточно. И пяток точек у максимума оно конечно хорошо, только как же узнать, когда его мерить. Я обычно так делаю. Как есть свободные 20мс начинаю максимально часто вводить напряжение, ограничиваю верхним пределом (например 350В для ввода максимума при 220) на лету слегонца фильтрую, это чтоб 'иголки' задавить и ловлю максимум за эти 20мс. Эти максимумы, периодически определяемые по ходу работы снова фильтром сглаживаю. То, что получилось и есть амплитуда напряжения. Ток с трансформатора аналогично. Да, и ввожу только пол волны, вторая нафиг, она такаяже.
Око, а какую точность ты ищеш? Зачем? Не хватает для че? Ардуиновский АЦП не точностью известен.
Я через мегом подаю 220 на ногу, на вторую через делитель из мегома и подстроичника 20к. По первой ноге по прерыванию начинаю отсчёт 4 мс. По истечение 4 мс делаю 5замеров на второй. Попадаю точно чуть до и после максимума. Все на тине25.
В QFP48 есть выводы AGND и AVCC. "Прозвонка" показала, что они физически соединены в корпусе микросхемы с выводами GND и VCC соответственно. Так должно быть?
И еще один вопрос, на схеме обвязки, на сайте производителя, предлагается соединить эти выводы через R1 и R2 номиналом 0 ом.
Что имеется ввиду? Полигоны?
В QFP48 есть выводы AGND и AVCC. "Прозвонка" показала, что они физически соединены в корпусе микросхемы с выводами GND и VCC соответственно. Так должно быть?
Бывает по-всякому. КЗ думаю не должно быть, обычно либо полный разрыв цепей (мегомы) либо есть небольшое сопротивление (единицы Ом). Главная задача, что б "цифровые токи" не гуляли по аналоговым цепям. Так что если АЦП используется, и надо из него выжать максимум, то лучше делать всё по-уму.
Вот мой пост удалили зачем?
Все же написал, что я думаю по этому поводу. Ну да ладно..
Быть так не должно в нормальных MCU. Но читаем это, где Warning!!! Что уж тут говорить о LGT.
Будьте любезны, приведите ссылку.
dimax, ок. Вопрос был отчасти риторический ("Ну не должно же быть так, не так ли?"). Увы, на обеих микросхемах мой прибор показывает одинаковое сопротивление, близкое к нолю, AVCC-VCC, GND-GND и AGND-GND. Очень жаль... ("А пацаны-то не знают"). Впрочем, учитывая что я, по-видимому, являюсь единственным в мире розничным приобретателем QFP48, разделить мое горе не с кем...
Домосед, http://www.lgtic.com/upload/lgt8fx8p/SN0244_LGT8F328P_LQFP48_MINI_V1_20170225.pdf
PS Домосед, по поводу "вырубки лесов" (из удаленного сообщения) и R1 = R2 = 0, представляется мне, что что авторы обращают внимание, что аналоговые и цифровые должны быть соединены не абы как, а должным образом. В документации на ATmega328 это "должным образом" отчасти представлено на рисунке с надписью "analog ground plane" (полигон?). Не так ли?
Так что в итоге? АЦП совершенно негодный и существенно уступает 10 битам Меги? Выше было сравнение и оно сильно не в пользу LGT8F328P. Или дело в референсе?
Strangeman, АЦП вполне годный, и, на мой взгляд, существенно превосходит АЦП Atmega 328. Сравнений "не в пользу" не встречал, в том числе и "выше". Речь шла о попытке исправить неидеальное подключение питания АЦП, которое практикуется на всех ардуино и ардуинообразных платах, и "выжать максимум" из АЦП.
Strangeman, АЦП вполне годный, и, на мой взгляд, существенно превосходит АЦП Atmega 328. Сравнений "не в пользу" не встречал, в том числе и "выше". Речь шла о попытке исправить неидеальное подключение питания АЦП, которое практикуется на всех ардуино и ардуинообразных платах, и "выжать максимум" из АЦП.
Я ориентировался на графики из вот этого сообщения. http://arduino.ru/forum/apparatnye-voprosy/obzor-klona-megi328-lgt8f328p?page=2#comment-433017
На плоттере выглядит довольно скверно по сравнению с мегой.
Ну и в первом сообщении "АЦП этот бегло протестировал,".
Так что, стоит брать пробовать? Реально 12 бит и неплохая стабильность? Изначальная точность меня мало волнует - откалибрую, важна стабильность.
Что же касается адуинообразных плат и питания - я это давно заметил и абсолютно не понимаю такого подхода. Экономия на 1 дросселе и 1 конденсаторе? Это уже за пределами добра и зла.
Я ориентировался на графики из вот этого сообщения. http://arduino.ru/forum/apparatnye-voprosy/obzor-klona-megi328-lgt8f328p?page=2#comment-433017
Так это про другой контроллер. Непонятно, что эти сообщения в данной теме делают. Удалить бы надо. Только в заблуждение вводят.
Я вот нашел старую картинку, измерял на делителе от батареи. Красные линии - плюс минус пол процента от среднего.
PS Что-то неудачно картинка разместилась. Если на словах: Atmega328 - реально только 8 разрядов (до 200 кГц). LGT 328P- реально 12 разрядов - до 3000 кГц.
А вот мой тест не про АЦП
Если на словах: Atmega328 - реально только 8 разрядов (до 200 кГц). LGT 328P- реально 12 разрядов - до 3000 кГц.
А вот мой тест не про АЦП
Понял, спасибо. Заказал пару плат и нашел отдельно контроллеры в QFP48, тоже заказал пяток, буду посмотреть.
Чтобы долго не искать, что у них с заголовочными файлами?
Strangeman, хотел еще добавить, что я совсем любитель-начинающий, и могу ошибаться в самых простых вещах...
Что такое "заголовочный файл"?
Strangeman, хотел еще добавить, что я совсем любитель-начинающий, и могу ошибаться в самых простых вещах...
Что такое "заголовочный файл"?
Это файл с дефайнами для регистров и битов.
Посмотрю, что там есть в SDK.
Народ, банальный вопрос, пришла плата, та, что без кварцев, на USB чипе HT42B534-1. Подключаю к Пк, ОС WIN-7 ее не видит, т.е. не создакт вирт. Сом порт, пытаюсь найти драйвера, найденные не как не решают проблемы, На долбаный "Holtek" нет ничего. Но с другой стороны народ на форуме пишет что для данной микрухи внешние дрова и не нужны, типа, цепляй как мышку, сама в систему встанет, где истина. Если нужны дрова, то где их взять? Первый раз с такой проблемой столкнулся. Устойчиво бъется мысль-микруха USB дохлая. Проверено на 3 ПК с WIN-7. На ХР не проверял. Уже думаю удалить ее нахрен, и подцепить внешний, так сказать, проверенный.
wiktor, ссылка на дрова есть в этой же теме. #171. Тут надо вот что понимать - винда "видит" любое usb-устройство, т.к. те передают своё название и идентификатор. Поэтому если в устройствах совсем ничего нет -то драйвера не помогут. Это аппаратная неисправность. Если видит, но устройство определилось с какими-то проблемами -тогда другой разговор.