Ви не увійшли.
Отличная штучка, работает замечательно.
Понятно. Спасибо. Обязательно попробую применить если подвернётся соответствующая задача, требуюшая несложного DSP.
Вспомнил, и захотелось поинтересоваться. Вам, что нибудь полезное удалось сделать на LGT8Fxxx?
Отличная штучка, работает замечательно.
Вспомнил, и захотелось поинтересоваться. Вам, что нибудь полезное удалось сделать на LGT8Fxxx?
Вот я решил посмотреть как работает ЦАП.
Вот такая программка получилась :
#define PI 3.1415926535897932384626433832795
void setup() {
PMCR |= (1<<7); PMCR |= (1<<2); __asm__("nop\n\t");
PMCR |= (1<<7); PMCR |= (1<<5); __asm__("nop\n\t""nop\n\t");
PMCR |= (1<<7); PMCR &=~ (1<<0); PMCR |= (1<<7); PMCR &=~ (1<<1);
CLKPR |= (1<<7); CLKPR &=~ (1<<0);
pinMode(4, ANALOG);
analogReference(INTERNAL4V096);
}
void loop() {
// частота выборки - 0,01.
for(float i=0;i<=2;i=i+0.01) {
float rad = PI*i; float Sin = sin(rad);
long intSin = Sin*300;
byte val=map(intSin,-300,300,0,255);
analogWrite(4, val); }
}
провел три теста с разными значениями частоты выборки
1 — частота выборки — 0,01 = 37 Гц
2 — частота выборки — 0,05 = 185 Гц
3 — частота выборки — 0,1 = 385 Гц
Все правильно.
И еще, это не всегда возможно. В одних случаях можно обойтись, просто, заменой константы переменной или небольшим изменением вычислений. В других требуемые значения не приводятся к целочисленным дробям, не удовлетворяя точности. В третьих, иногда не хватает памяти, на продвинутые алгоритмы. Для маленьких микроконтроллеров, как правило, приходится оптимизировать всё.
renoshnik пише:Частота это пол дела... А как быть с делителем ?
Если строго, то при статической реализации вы не должны менять настройку системы синхронизации в процессе работы программы. Так сделано в ядре Ардуино. Если же вы хотите менять частоту синхронизации во время исполнения то нужно удовлетворить всем зависимостям, во всех применяемых модулях, от этой частоты (Рис4.1. Распределение тактовой системы LGT8FX8D). Попросту, переделать все алгоритмы всех устройств, применяемых в программе, работа которых зависит от частоты синхронизации. Кроме того при смене частоты необходимо переинициализировать все зависимые активные устройства.
Так вот и я об этом ...
В таком случае проекты должны выполняться без "костылей" ...
Частота это пол дела... А как быть с делителем ?
Если строго, то при статической реализации вы не должны менять настройку системы синхронизации в процессе работы программы. Так сделано в ядре Ардуино. Если же вы хотите менять частоту синхронизации во время исполнения то нужно удовлетворить всем зависимостям, во всех применяемых модулях, от этой частоты (Рис4.1. Распределение тактовой системы LGT8FX8D). Попросту, переделать все алгоритмы всех устройств, применяемых в программе, работа которых зависит от частоты синхронизации. Кроме того при смене частоты необходимо переинициализировать все зависимые активные устройства.
Да. это константа xxx.build.f_cpu . Я незнаю как там эта доска называется, у меня WeMos не установлен. Не помешает так же проверить и файл platform.txt, на предмет зависимостей кода от констант в директивах компиляции.
Частота это пол дела...
А как быть с делителем ?
в папке бутлоадеров есть файл optiboot_lgt8f328d_extosc.hex
думаю, может его залить, а потом в "доске" подкорректировать...
Наверно да, только лучше создать еще одну версию платки если такой там нет.
Да. это константа xxx.build.f_cpu . Я незнаю как там эта доска называется, у меня WeMos не установлен. Не помешает так же проверить и файл platform.txt, на предмет зависимостей кода от констант в директивах компиляции.
Все правильно. Расчет частоты синхронизации UARTа производится не от фактической базовой частоты синхронизации а от числа определенного константой. Можно подправить определения констант для компиляции, в файле описания платы и странности исчезнут. Правильнее, создать описание для ещё одной версии платки WeMos, с требуемым кварцем и режимом синхронизации. Или переделать ядро под динамическое изменение режимов синхронизации системы.
это вы про boards.txt ?
в папке бутлоадеров есть файл optiboot_lgt8f328d_extosc.hex
думаю, может его залить, а потом в "доске" подкорректировать...
Все правильно. Расчет частоты синхронизации UARTа производится не от фактической базовой частоты синхронизации а от числа определенного константой. Можно подправить определения констант для компиляции, в файле описания платы и странности исчезнут. Правильнее, создать описание для ещё одной версии платки WeMos, с требуемым кварцем и режимом синхронизации. Или переделать ядро под динамическое изменение режимов синхронизации системы.
Продолжаю "мучать" WEMOS XI LGT8F328D
Не буду описывать танцы с бубном из-за неточностей в даташите, покажу результат подключения кварца и перевода делителя в единицу.
Вот мои подопытные...
Результаты думаю, понятны без комментариев.
Решил провести маленький тест для двух плат :
Результаты понятны из картинок …
ПЕРВЫЙ ТЕСТ :
ВТОРОЙ ТЕСТ :
мой вывод — НЕ используйте "виринг" для LGT8F328*