Цифровой осциллограф с нуля.
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4145321#p4145321"]jcxz, я только учусь, а как надо? Сетка мгновенно появляется.[/uquote]Надо рисовать готовыми графическими примитивами: линиями, прямоугольниками, треугольниками и т.п., но никак не точками. Если используете какую-то граф.библиотеку - смотрите какие примитивы она умеет - ими и рисуйте.
- Реклама
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4145321#p4145321"]а как надо?[/uquote]
Заполняем паттерном, рисуется в 4 раза больше точек, но скорость вывода в 2.6 раза быстрее.
Код: Выделить всё
static const uint16_t arr[] = { 0xFFFF, 0, 0, 0 };
for (int v = 40; v < 240; v += 40)
{
lcd.setWindow(0, v, 320, 1);
for (int i = 0; i < 320; i++)
{
lcd.writeColor(arr[i & 3]);
}
}-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
И точками и линиями сетка рисуется мгновенно, разницы не заметил. Пора рисовать массив adc[8000].
Re: Цифровой осциллограф с нуля.
[uquote="jcxz",url="/forum/viewtopic.php?p=4145326#p4145326"]Надо рисовать готовыми графическими примитивами: линиями, прямоугольниками, треугольниками и т.п., но никак не точками. Если используете какую-то граф.библиотеку - смотрите какие примитивы она умеет - ими и рисуйте.[/uquote]Это не так. Надо всегда смотреть, какой способ быстрее. Иногда примитивы значительно медленнее, хотя и удобнее.
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4145339#p4145339"]И точками и линиями сетка рисуется мгновенно, разницы не заметил. Пора рисовать массив adc[8000].[/uquote]Так на глаз и не заметите. Надо таймером измерять.
Добавлено after 9 minutes 1 second:
[uquote="Martian",url="/forum/viewtopic.php?p=4145352#p4145352"]Это не так. Надо всегда смотреть, какой способ быстрее. Иногда примитивы значительно медленнее, хотя и удобнее.[/uquote]"Не так" это может быть разве что в каких-то кривых "библиотеках".
В любой библиотеке, при вызове граф.функции отрисовки любого примитива, на входе в функцию выполняется куча работы: отсечение по границам области рисования (clipping), преобразование координат (если есть), вычисление всяких переменных и т.п. При отрисовке точки это выполняется (один раз) и при отрисовки прямой (один раз). Только если рисование точки вполняется в цикле, то и все эти операции будут вызваны многократно.
В любом случае, всегда: Для оптимизации по скорости выполнения следует на самых глубоких уровнях цикла стараться минимизировать число операций. А всё что можно - выносить за пределы цикла. Вот поэтому: рисование по точкам почти всегда медленее, чем рисование примитива - прямой (если конечно это рисование прямой писал адекватный программист, а не быдлокодер).
Добавлено after 9 minutes 1 second:
[uquote="Martian",url="/forum/viewtopic.php?p=4145352#p4145352"]Это не так. Надо всегда смотреть, какой способ быстрее. Иногда примитивы значительно медленнее, хотя и удобнее.[/uquote]"Не так" это может быть разве что в каких-то кривых "библиотеках".
В любой библиотеке, при вызове граф.функции отрисовки любого примитива, на входе в функцию выполняется куча работы: отсечение по границам области рисования (clipping), преобразование координат (если есть), вычисление всяких переменных и т.п. При отрисовке точки это выполняется (один раз) и при отрисовки прямой (один раз). Только если рисование точки вполняется в цикле, то и все эти операции будут вызваны многократно.
В любом случае, всегда: Для оптимизации по скорости выполнения следует на самых глубоких уровнях цикла стараться минимизировать число операций. А всё что можно - выносить за пределы цикла. Вот поэтому: рисование по точкам почти всегда медленее, чем рисование примитива - прямой (если конечно это рисование прямой писал адекватный программист, а не быдлокодер).
- Реклама
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Вывел массив на дисплей, уместилось 2.5 периода 1кГц, 2.5mS на 8000 выборок, 3 мегасимпла.
if(flag==1){
for (i = 0; i <320; i++) {
v=i*25;
g=adc[v]/17;
ILI9341_Draw_Pixel(i, g, WHITE);
}
}
flag=0;
https://drive.google.com/file/d/1ra8rql ... sp=sharing
if(flag==1){
for (i = 0; i <320; i++) {
v=i*25;
g=adc[v]/17;
ILI9341_Draw_Pixel(i, g, WHITE);
}
}
flag=0;
https://drive.google.com/file/d/1ra8rql ... sp=sharing
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
https://radiokot.ru/forum/viewtopic.php ... 3#p3891133. здесь и далее обсуждался вывод осцилограммы.
IVL ex UA6PJ
Re: Цифровой осциллограф с нуля.
обязательно делить на 17? на 16 нельзя? 
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
[uquote="Martian",url="/forum/viewtopic.php?p=4146003#p4146003"]обязательно делить на 17? на 16 нельзя?
[/uquote]
4095/240=17,06
4095/240=17,06
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Сделал вывод сигнала не по точкам, а по линиям, что бы фронты обозначить и на некоторых фронтах двойная линия. В отладчике обнаружил, что ADC не четко отрабатывают фронт, что то типа дребезга. Что это может быть? Контрольный сигнал с вывода PC13 10 кГц по таймеру.
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
"звон" выходного каскада. Подай через 33 Ом резистор и все пройдёт.
IVL ex UA6PJ
Re: Цифровой осциллограф с нуля.
в этих двух линиях одного фронта сколько вы замеров обработали?
теоретически: пред.замер 1 следующий 5 рисуем одну л. от 1 до 5, как получаете две?
если с матем-кой все верно, то и другим скопом увидите там "генерацию" - как было сказано "звон"
теоретически: пред.замер 1 следующий 5 рисуем одну л. от 1 до 5, как получаете две?
если с матем-кой все верно, то и другим скопом увидите там "генерацию" - как было сказано "звон"
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
[uquote="240265",url="/forum/viewtopic.php?p=4146875#p4146875"]"звон" выходного каскада. Подай через 33 Ом резистор и все пройдёт.[/uquote]
Не прошло. Такой звон -...,0,0,0,4095,0,4095,4095,4095,...4095,4095,4095,0,4095,0,0,0,...
Добавлено after 49 minutes 49 seconds:
Включил
multimode.Mode = ADC_DUALMODE_INTERLSLOW; вместо ADC_DUALMODE_INTERLFAST;
Теперь звона нет и фронта четкие, но почему то скорость ADC не упала.
Не прошло. Такой звон -...,0,0,0,4095,0,4095,4095,4095,...4095,4095,4095,0,4095,0,0,0,...
Добавлено after 49 minutes 49 seconds:
Включил
multimode.Mode = ADC_DUALMODE_INTERLSLOW; вместо ADC_DUALMODE_INTERLFAST;
Теперь звона нет и фронта четкие, но почему то скорость ADC не упала.
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4145867#p4145867"]for (i = 0; i <320; i++) {
v=i*25;
g=adc[v]/17;
ILI9341_Draw_Pixel(i, g, WHITE);
}[/uquote]Я бы постеснялся называть "это" осциллограммой.
Осциллограмма рисуется линиями, а не точками.
Добавлено after 2 minutes 10 seconds:
[uquote="240265",url="/forum/viewtopic.php?p=4145995#p4145995"]https://radiokot.ru/forum/viewtopic.php?p=3891133#p3891133. здесь и далее обсуждался вывод осцилограммы.[/uquote]Здесь тоже обсуждался. Только автор все советы проигнорировал.
Добавлено after 51 second:
[uquote="Martian",url="/forum/viewtopic.php?p=4146003#p4146003"]обязательно делить на 17? на 16 нельзя?
[/uquote]Делить вообще не надо. Настоящие индейцы не делят. Они умножают. Только это секрет. 
v=i*25;
g=adc[v]/17;
ILI9341_Draw_Pixel(i, g, WHITE);
}[/uquote]Я бы постеснялся называть "это" осциллограммой.
Добавлено after 2 minutes 10 seconds:
[uquote="240265",url="/forum/viewtopic.php?p=4145995#p4145995"]https://radiokot.ru/forum/viewtopic.php?p=3891133#p3891133. здесь и далее обсуждался вывод осцилограммы.[/uquote]Здесь тоже обсуждался. Только автор все советы проигнорировал.
Добавлено after 51 second:
[uquote="Martian",url="/forum/viewtopic.php?p=4146003#p4146003"]обязательно делить на 17? на 16 нельзя?
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
jcxz, С добрым утром!:) Уже давно идет обсуждение вывода линиями и возникшей проблемой звона.
Умножать будет, но всему своё время. Скорость вычислений будем измерять на H743.
Умножать будет, но всему своё время. Скорость вычислений будем измерять на H743.
Re: Цифровой осциллограф с нуля.
0,4095 - полный размах и ни одного между ?
по моему иниты надо смотреть
по моему иниты надо смотреть
Re: Цифровой осциллограф с нуля.
[uquote="linkov1959",url="/forum/viewtopic.php?p=4146950#p4146950"]Не прошло. Такой звон -...,0,0,0,4095,0,4095,4095,4095,...4095,4095,4095,0,4095,0,0,0,...[/uquote]Я бы сказал, что похоже на программный баг.
Чтобы проверить звон или нет: уменьшите амплитуду. Чтобы не уходил в насыщение на максимуме. Да и низ лучше приподнять, чтобы не 0 было.
А ещё лучше - подать пилу (тоже отодвинутую от краёв диапазона АЦП).
Чтобы проверить звон или нет: уменьшите амплитуду. Чтобы не уходил в насыщение на максимуме. Да и низ лучше приподнять, чтобы не 0 было.
А ещё лучше - подать пилу (тоже отодвинутую от краёв диапазона АЦП).
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Цифровой осциллограф с нуля.
У ф103 АЦП в интерливе вообще хреново работает.
Добавлено after 4 minutes 59 seconds:
но не на полный диапазон конечно шумит.
Добавлено after 4 minutes 59 seconds:
но не на полный диапазон конечно шумит.
IVL ex UA6PJ
Re: Цифровой осциллограф с нуля.
[uquote="jcxz",url="/forum/viewtopic.php?p=4147055#p4147055"]Настоящие индейцы не делят. Они умножают. Только это секрет.
[/uquote] Вообще-то умножение не намного лучше. Нормально стараться использовать сдвиг, вместо деления или умножения.
-
linkov1959
- Держит паяльник хвостом
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Re: Цифровой осциллограф с нуля.
Интерлив есть быстрый и медленный. На быстром звон по фронту, на медленном всё хорошо, но скорость, такая же, как на быстром. Как было 3 мегасимпла, так и осталось.240265 писал(а):У ф103 АЦП в интерливе вообще хреново работает.
Добавлено after 4 minutes 59 seconds:
но не на полный диапазон конечно шумит.
Шума нет, это сигнал меандра 10кГц с ноги проца. На фронте нарушается чередование каналов и получается звон.


