Ви не увійшли.
Все правильно. Расчет частоты синхронизации UARTа производится не от фактической базовой частоты синхронизации а от числа определенного константой. Можно подправить определения констант для компиляции, в файле описания платы и странности исчезнут. Правильнее, создать описание для ещё одной версии платки WeMos, с требуемым кварцем и режимом синхронизации. Или переделать ядро под динамическое изменение режимов синхронизации системы.
это вы про boards.txt ?
в папке бутлоадеров есть файл optiboot_lgt8f328d_extosc.hex
думаю, может его залить, а потом в "доске" подкорректировать...
http://piccy.info/view3/12782457/ba1fee … 1f40/orig/
Остання редакція renoshnik (2018-11-20 14:21:43)
Неактивний
Да. это константа xxx.build.f_cpu . Я незнаю как там эта доска называется, у меня WeMos не установлен. Не помешает так же проверить и файл platform.txt, на предмет зависимостей кода от констант в директивах компиляции.
Неактивний
в папке бутлоадеров есть файл optiboot_lgt8f328d_extosc.hex
думаю, может его залить, а потом в "доске" подкорректировать...
Наверно да, только лучше создать еще одну версию платки если такой там нет.
Неактивний
Да. это константа xxx.build.f_cpu . Я незнаю как там эта доска называется, у меня WeMos не установлен. Не помешает так же проверить и файл platform.txt, на предмет зависимостей кода от констант в директивах компиляции.
Частота это пол дела...
А как быть с делителем ?
Неактивний
Частота это пол дела... А как быть с делителем ?
Если строго, то при статической реализации вы не должны менять настройку системы синхронизации в процессе работы программы. Так сделано в ядре Ардуино. Если же вы хотите менять частоту синхронизации во время исполнения то нужно удовлетворить всем зависимостям, во всех применяемых модулях, от этой частоты (Рис4.1. Распределение тактовой системы LGT8FX8D). Попросту, переделать все алгоритмы всех устройств, применяемых в программе, работа которых зависит от частоты синхронизации. Кроме того при смене частоты необходимо переинициализировать все зависимые активные устройства.
Неактивний
renoshnik пише:Частота это пол дела... А как быть с делителем ?
Если строго, то при статической реализации вы не должны менять настройку системы синхронизации в процессе работы программы. Так сделано в ядре Ардуино. Если же вы хотите менять частоту синхронизации во время исполнения то нужно удовлетворить всем зависимостям, во всех применяемых модулях, от этой частоты (Рис4.1. Распределение тактовой системы LGT8FX8D). Попросту, переделать все алгоритмы всех устройств, применяемых в программе, работа которых зависит от частоты синхронизации. Кроме того при смене частоты необходимо переинициализировать все зависимые активные устройства.
Так вот и я об этом ...
В таком случае проекты должны выполняться без "костылей" ...
Неактивний
И еще, это не всегда возможно. В одних случаях можно обойтись, просто, заменой константы переменной или небольшим изменением вычислений. В других требуемые значения не приводятся к целочисленным дробям, не удовлетворяя точности. В третьих, иногда не хватает памяти, на продвинутые алгоритмы. Для маленьких микроконтроллеров, как правило, приходится оптимизировать всё.
Неактивний
Вот я решил посмотреть как работает ЦАП.
Вот такая программка получилась :
#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 Гц
Неактивний
Вспомнил, и захотелось поинтересоваться. Вам, что нибудь полезное удалось сделать на LGT8Fxxx?
Неактивний
Отличная штучка, работает замечательно.
Понятно. Спасибо. Обязательно попробую применить если подвернётся соответствующая задача, требуюшая несложного DSP.
Неактивний