мне очень не понравилось то что медленно отрисоввывает график((( видимо библиотека такая тормозная, было бы побольше знаний переписал бы, тут кто-то переделывал библиотеку под тфт
мне очень не понравилось то что медленно отрисоввывает график((( видимо библиотека такая тормозная, было бы побольше знаний переписал бы, тут кто-то переделывал библиотеку под тфт
Мужики подскажите на счет программного шим есть библиотеки?
А в чем трудности? Что конкретно надо шимить?
мне нужно сделать 8 каналов шим светодиоды, а у 328 всего 6(
Открою для вас секрет, но в интернете давно придумали такую шикарную вещь как гугл или яндекс. Открываем скажем google.com, вбиваем в строке поиска "arduino программный шим" и радуемся
Как я понимаю, старый пультоскоп планируется использовать в качестве второго канала. Вчера доделывал ДДС генератор от dimax и заметил такую вещь: На развертке 6 и больше в верхней части непрямоугольного сигнала (синус, треугольник, пила) появляются лишние "плечи". В виде прямоугольных выступов по бокам, почти на самом верху. Тот же самый сигнал, что на 5 ровный и гладкий, 6 и выше - с искажениями. Осциллограф на ЭЛТ утверждает, что исходный сигнал чистый. Дело в ослике.
Собственно в своей версии Пультоскопа на 3310 я и раньше замечал это, но относил за счет проникновения помех с 7660 (она работает на частотах около 10 кгц). Но в пробной версии Пультоскопа на ЛС020 это же искажение есть тоже. А там нет этой микросхемы. Правда есть два других преобразователя, но они работают на частотах гораздо выше доступных Пультоскопу.
Кто-то еще, кроме меня сталкивался с подобным явлением?
Поскольку эффект четко привязан к развертке 6, возможно это программые заморочки?
На снимке пример искажения о котором я говорил. Мой пультоскоп на 3310 - кварц 25 мгц. На ЛС020 - 20 мгц.
Еще вопрос к сообществу (ну, кроме bodriy2014. Ему - приятного аппетита!!!). В Осциллоскопе с внешним АЦП будут вставки на Ассемблере, как я понял. Их возможно примастырить к Пультоскопу? А то мне все не дает покоя двухканальный на Меге 88 (страница 17-18 данного обсуждения). Или они принципиально другие и повысить быстродействие исходного Пультоскопа таким способом не планируется?
Заранее прошу прощения за глупые вопросы... Полез в блок осциллографа
Пока не разобрался с участком кода, который подсчитывает частоту
if (FreqCount.available()) { count = FreqCount.read();}//вывод частоты по готовности счетчика
//#######################################частоты сигнала
byte Frec1=0;
long Frec=0;
bool flagFrec1=0;
bool flagFrec2=0;
bool flagFrec3=0;
for(int y=1;y<255;y++)
{ //перебираем первые 255 значений
if(flagFrec1==0){if(mass[y]<SinU){flagFrec2=1;}} //если тек. значение меньше точки синхронизации взводим флажок flagFrec2
if(flagFrec1==0){if(flagFrec2==1){if(mass[y]>SinU){flagFrec1=1;Frec1=y;}}}//находим первую точку по которой должна быть синхронизация Frec1
if(flagFrec1==1){if(mass[y]<SinU){flagFrec3=1;}}//если пошло на убыль, взводим флаг flagFrec3
if(flagFrec3==1){if(mass[y]>SinU){ //если пошло в рост - делаем расчеты
// тут происходит расчет частоты в зависимости от установки делителя
if (razv>=6){Frec=1000000/((y-Frec1-1)*3.27);}//delitel 4
if (razv==5){Frec=1000000/((y-Frec1)*3.27)/2;}//delitel 8
if (razv==4){Frec=1000000/((y-Frec1)*3.27)/4;}//delitel 16
if (razv==3){Frec=1000000/((y-Frec1)*3.27)/8;}//delitel 32
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/16;}//delitel 64
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==1){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==0){Frec=1000000/((y-Frec1)*500);}//delitel 128
flagFrec1=0;flagFrec3=0;}}}
//#######################################частоты сигнала
Самое важное: алгоритм вычисления частоты? Можно обьяснить на пальцах? Одним местом чувствую, что ищутся некие замеры относительно уровня синхронизации...
Остальные вопросы:
1)почему здесь и в части кода определяющего макс. значение анализу подвергается только первые 255 значений таблицы, хотя тип переменной счетчика (int) способен просмотреть весь массив ?
2) в блоках пересчета почему-то для вариантов развертки 2 и 1 одинаковые формулы (делится на 32)
3) волщебная константа в пересчетах 3.27 - откуда такое значение? (у-frec1) - это количество замеров между двумя точками, а значит на один замер уходит 3.27 микросекунды?
4) Для подсчета частоты , как я понимаю используется два варианта: библиотечное (count) и софтварное (Frec)
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);} // если максим. значение в массиве больше логического уровня 1
Заранее прошу прощения за глупые вопросы... Полез в блок осциллографа
Пока не разобрался с участком кода, который подсчитывает частоту
if (FreqCount.available()) { count = FreqCount.read();}//вывод частоты по готовности счетчика
//#######################################частоты сигнала
byte Frec1=0;
long Frec=0;
bool flagFrec1=0;
bool flagFrec2=0;
bool flagFrec3=0;
for(int y=1;y<255;y++)
{ //перебираем первые 255 значений
if(flagFrec1==0){if(mass[y]<SinU){flagFrec2=1;}} //если тек. значение меньше точки синхронизации взводим флажок flagFrec2
if(flagFrec1==0){if(flagFrec2==1){if(mass[y]>SinU){flagFrec1=1;Frec1=y;}}}//находим первую точку по которой должна быть синхронизация Frec1
if(flagFrec1==1){if(mass[y]<SinU){flagFrec3=1;}}//если пошло на убыль, взводим флаг flagFrec3
if(flagFrec3==1){if(mass[y]>SinU){ //если пошло в рост - делаем расчеты
// тут происходит расчет частоты в зависимости от установки делителя
if (razv>=6){Frec=1000000/((y-Frec1-1)*3.27);}//delitel 4
if (razv==5){Frec=1000000/((y-Frec1)*3.27)/2;}//delitel 8
if (razv==4){Frec=1000000/((y-Frec1)*3.27)/4;}//delitel 16
if (razv==3){Frec=1000000/((y-Frec1)*3.27)/8;}//delitel 32
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/16;}//delitel 64
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==1){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==0){Frec=1000000/((y-Frec1)*500);}//delitel 128
flagFrec1=0;flagFrec3=0;}}}
//#######################################частоты сигнала
Самое важное: алгоритм вычисления частоты? Можно обьяснить на пальцах? Одним местом чувствую, что ищутся некие замеры относительно уровня синхронизации...
Остальные вопросы:
1)почему здесь и в части кода определяющего макс. значение анализу подвергается только первые 255 значений таблицы, хотя тип переменной счетчика (int) способен просмотреть весь массив ?
2) в блоках пересчета почему-то для вариантов развертки 2 и 1 одинаковые формулы (делится на 32)
3) волщебная константа в пересчетах 3.27 - откуда такое значение? (у-frec1) - это количество замеров между двумя точками, а значит на один замер уходит 3.27 микросекунды?
4) Для подсчета частоты , как я понимаю используется два варианта: библиотечное (count) и софтварное (Frec)
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);} // если максим. значение в массиве больше логического уровня 1
А зачем использовать еще и библиотеку FreqCount.h?
Автор рекомендует не трогать блок считывания замеров:
if (razv==0){
for(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
delayMicroseconds(500);
mass[i]=ADCH;
}
}
if (razv>0){
for(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
}
}
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
for(int i=0;i<511;i++)
{
while ((ADCSRA & 0x10)==0); // пока бит ADIF 0b00010000 =1 , т.е. есть данные
ADCSRA|=0x10; // сбрасываем
if (razv == 0) delayMicroseconds(500);
mass[i]=ADCH; //считываем старшую часть замера
}
Привет. Ответы:
1--- Для определения частоты програмно и замеров максимального значения стоит 255 потому что изначально массив с данными АЦП был 255, это позже я его увеличил под всю свободную оперативку для более длинной прокрутки в режиме паузы.
2--- эта строка не нужна описался((
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
//ошибка можно отследить только сигналом ниже 2,5В на скорости развертки 2
3---совершенно верно в моем блоке замеров АЦП на один замер уходит 3,27мкс
4--- библиотека FreqCount.h дает возможность аппаратно очень точно считать частоту, а программный подсчет я добавил как вынужденную меру если сигнал ниже 2,5В то счетчик аппаратный не считает и врубается программный. Он менее точен, это я все рассказывал в видео и объяснял как выставлять уровень синхронизации чтоб измеряло точнее.
Количество замеров можете уменьшать как вам угодно это можно, но больше ничего не меняйте будет делать один замер медленнее чем 3,27 проверенно.
между этими строчками ничего вставлять нельзя
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
Код сишный и в атмел студии я отладчиком смотрел сколько тактов занимает обработка разных вариантов сбора данных с АЦП.
Пока скучаешь советую просмотреть фильм "мирный воин" особенно тот момент когда они взобрались на гору.
Тогда думаю будет ясно почему пультоскоп с внешним АЦП в моем исполнении еще не готов.
посмарел...
неплохое, но не более кино.
и вот почему.
жуткая смесь Кастанеды(почти полные цитаты "Путешестивая в Исктлан") и Дзен
вкупе с "Малыш-карате").
всё б хорошо, но жути добавляет авторское понимание этого.
неправильное понимание.
1. "служить людям"
такой хни даже у Аристотеля нет!
каким людям? зачем?
т.е. любой из ОСНОВНЫХ вопросов философии разрушает этот карточный домик.
Дон Хуан смеялся бы над этим.
2. далее, типоумный вопрос с котором тот слез с машины -
"тяжело любить тех, кто нуждается".
н-дя...
ииии? как это связано с тем, что они отдали грабителям своё?
это просто бред, маскирующий основной вопрос Дзен - хлопок одной ладонью.
Воин в понятиях Дона Хуана и Дзен так бы не поступил - отдать НЕ ПРИНАДЛЕЖАЩИЕ ЕМУ ЧАСЫ.
3. гора.
у автора налицо смесь непонимания основ Дзен и Дона Хуана -
если применить к Пультоскопу, то шаг=версии
и не иначе.
а весь путь = эффективному коду программы.
эффективному - значит с малым количеством знаков и быстрому.
камня нет вообще в этом раскладе =)
мне жаль, если я обидел своими выводами, но я значительно старше 18 лет,
когда "Путешествие в Икстлан" вывело одного моего друга на шаг в окно..
.а Дзен был для меня чем-то волшено-непоятным.
таким образом, за кино - спасибо! некоторые моменты были приятно узнаваемы =)
С 75 строки подпрограмма вывода в режме ПАУЗА.
Переделал на русский текст.
Все . хватит , пора в корпус заталкивать :)).
И Напряжение показывает в Воль на деление ( V/d )
Humuk
У Вас как Я понял Дисплей ILI9163C.
Вы с моей Библиотекой не пробовали запускать ?
ух ты! возьму на вооружение и скопирую метод))
а что ещё можно оптимизировать? =) и ещё вопрос - какой участок отвечает за циферки слева и снизу от графика?
и ещё - 34 и 35 строки - это что за хитрость?
Да не хитрость это, а назначение пинов.
А вообще можно CS убрать с 10 пина и назначить его выходом DDS , как на 5110.
мне кажется так будет удобнее чем делать переходник ШИМ-->DDS
Humuk
У Вас как Я понял Дисплей ILI9163C.
Вы с моей Библиотекой не пробовали запускать ?
нет не пробовал, думаете пойдет?)
мне очень не понравилось то что медленно отрисоввывает график((( видимо библиотека такая тормозная, было бы побольше знаний переписал бы, тут кто-то переделывал библиотеку под тфт
С 75 строки подпрограмма вывода в режме ПАУЗА.
с телефона сидел видимо проглядел, тогда наверно вот это я так полагаю
371
//#######################################частоты сигнала
372
373
tft.setTextColor(ST7735_WHITE);
374
tft.setCursor(1, 120);
375
tft.println(
"F="
);
376
377
if
(opornoe==1){
378
if
((Vmax*VCC/255)>2.8){
379
countX=count*(overclock/16.0);
380
}
381
if
((Vmax*VCC/255)<=2.8){
382
countX=Frec*(overclock/16.0);
383
}
384
}
385
if
(opornoe==0){
386
countX=Frec*(overclock/16.0);
387
}
388
if
(countX<1000){
389
sprintf(str,
"%d Hz"
, countX);
390
tft.setTextColor(ST7735_WHITE);
391
tft.setCursor(18, 120);
392
tft.println( str);
393
}
Это вывод частоты сигнала внизу экрана осцилографа.
На счет библиотек .
Вот залил Ваш скетч. НИЧЕГО НЕ МЕНЯЛ.
На счет библиотек .
Вот залил Ваш скетч. НИЧЕГО НЕ МЕНЯЛ.
клева=))) только вашу придется корректировать видимо чтобы не было смещения на дисплее 128х128, у вас быстрое обновление графика?
мне очень не понравилось то что медленно отрисоввывает график((( видимо библиотека такая тормозная, было бы побольше знаний переписал бы, тут кто-то переделывал библиотеку под тфт
С кварцем 27 Мгц будет побыстрее.
На счет библиотек .
Вот залил Ваш скетч. НИЧЕГО НЕ МЕНЯЛ.
Да только разиер по Х
И Цвет красный с синим поменять.
Обновление чуть быстрее.
Вот самая последняя версия (если будете переделывать )
240265, для полноты картины, елси вы не против, то и схему последнуюю с подключением всего и вся. ЧТо бы было проще ориентироваться. Спасибо заранее.
240265, для полноты картины, елси вы не против, то и схему последнуюю с подключением всего и вся. ЧТо бы было проще ориентироваться. Спасибо заранее.
Хорошо . чуть позже.
Ткните носом, как скетч переводить в файлы hex?
man_200, в гугле забанили штоль? вопрос "зачем" не задаю =)
Умеешь объяснять.
Есть UNO, но предпочитаю работать с отдельными кристаллами, отсюда и вопрос - зачем.
Спасибо за ссылку
Умеешь объяснять.
Есть UNO, но предпочитаю работать с отдельными кристаллами, отсюда и вопрос - зачем.
Спасибо за ссылку
а что мешает в отдельный кристал записать скетч?
Ткните носом, как скетч переводить в файлы hex?
так
https://www.youtube.com/watch?v=dXrJLycWf1Y
Есть UNO, но предпочитаю работать с отдельными кристаллами, отсюда и вопрос - зачем.
я тож Пультоскоп делаю на отдельном МК и заливаю скетч туда средствами ИДЕ через программатор.
понадобятся ещё фузы
Схема
Ткните носом, как скетч переводить в файлы hex?
так
https://www.youtube.com/watch?v=dXrJLycWf1Y
Hex с загрузчиком ?
Хорошо бы без загрузчика.
Hex с загрузчиком ?
Хорошо бы без загрузчика.
Какой загрузчик, там будет просто ХЕКС, если его зальете загрузчик затрется.
Чтоб снова шить как Ардуино нужно будет залить загрузчик обратно.
Понял, нужно попробовать.
Схема есть еще в формате spl7 . Но здесь файлы не размещаются :(( .
Мужики подскажите на счет программного шим есть библиотеки?
А в чем трудности? Что конкретно надо шимить?
А в чем трудности? Что конкретно надо шимить?
мне нужно сделать 8 каналов шим светодиоды, а у 328 всего 6(
А в чем трудности? Что конкретно надо шимить?
мне нужно сделать 8 каналов шим светодиоды, а у 328 всего 6(
Открою для вас секрет, но в интернете давно придумали такую шикарную вещь как гугл или яндекс. Открываем скажем google.com, вбиваем в строке поиска "arduino программный шим" и радуемся
https://www.google.ru/search?q=arduino+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0...
https://geektimes.ru/post/255772/
http://arduino.ru/forum/programmirovanie/gotovaya-biblioteka-programmnog...
Спасибо
отринув ложный стыд и скромность, присущую мне с децтва, я не постесняюсь и спрошу:
отринув ложный стыд и скромность, присущую мне с децтва, я не постесняюсь и спрошу:
Спасибо, поднял настроение.
Пока работа-семья-дача и так по кругу.
____
Пока скучаешь советую просмотреть фильм "мирный воин" особенно тот момент когда они взобрались на гору.
Тогда думаю будет ясно почему пультоскоп с внешним АЦП в моем исполнении еще не готов.
Всем удачных выходных, я только что закончил мариновать мясо-завтра дача!
Пока новое только на подходе.
Как я понимаю, старый пультоскоп планируется использовать в качестве второго канала. Вчера доделывал ДДС генератор от dimax и заметил такую вещь: На развертке 6 и больше в верхней части непрямоугольного сигнала (синус, треугольник, пила) появляются лишние "плечи". В виде прямоугольных выступов по бокам, почти на самом верху. Тот же самый сигнал, что на 5 ровный и гладкий, 6 и выше - с искажениями. Осциллограф на ЭЛТ утверждает, что исходный сигнал чистый. Дело в ослике.
Собственно в своей версии Пультоскопа на 3310 я и раньше замечал это, но относил за счет проникновения помех с 7660 (она работает на частотах около 10 кгц). Но в пробной версии Пультоскопа на ЛС020 это же искажение есть тоже. А там нет этой микросхемы. Правда есть два других преобразователя, но они работают на частотах гораздо выше доступных Пультоскопу.
Кто-то еще, кроме меня сталкивался с подобным явлением?
Поскольку эффект четко привязан к развертке 6, возможно это программые заморочки?
На снимке пример искажения о котором я говорил. Мой пультоскоп на 3310 - кварц 25 мгц. На ЛС020 - 20 мгц.
Еще вопрос к сообществу (ну, кроме bodriy2014. Ему - приятного аппетита!!!). В Осциллоскопе с внешним АЦП будут вставки на Ассемблере, как я понял. Их возможно примастырить к Пультоскопу? А то мне все не дает покоя двухканальный на Меге 88 (страница 17-18 данного обсуждения). Или они принципиально другие и повысить быстродействие исходного Пультоскопа таким способом не планируется?
сделал седня шилд для ls020 т.к. пока нет вариантов из чего сделать корпус, получилось как то так=)))
Уважаемый VetalST, уменя дисплей l2f50,не могли бы вы выложить версию POWER-OFF скетч и библиотеку,думаю
многие в этом заинтересованы,экземпляр ls020 уже трудно найти.
Humuk выложите схемку RC-фильтра для DDS , а то лень номиналы подбирать.
Не нужно , увидел на сайте Автора.
Заранее прошу прощения за глупые вопросы... Полез в блок осциллографа
Пока не разобрался с участком кода, который подсчитывает частоту
Самое важное: алгоритм вычисления частоты? Можно обьяснить на пальцах? Одним местом чувствую, что ищутся некие замеры относительно уровня синхронизации...
Остальные вопросы:
1)почему здесь и в части кода определяющего макс. значение анализу подвергается только первые 255 значений таблицы, хотя тип переменной счетчика (int) способен просмотреть весь массив ?
2) в блоках пересчета почему-то для вариантов развертки 2 и 1 одинаковые формулы (делится на 32)
3) волщебная константа в пересчетах 3.27 - откуда такое значение? (у-frec1) - это количество замеров между двумя точками, а значит на один замер уходит 3.27 микросекунды?
4) Для подсчета частоты , как я понимаю используется два варианта: библиотечное (count) и софтварное (Frec)
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);} // если максим. значение в массиве больше логического уровня 1
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
можно только в начале скетча размер подправьте
byte mass[512];//массив АЦП
Заменил drawLine на Line из поста 1514 от Alex_Mirko (СПАСИБО Ему БОЛЬШОЕ !).
И скорость отрисовки реаль уменьшилась раза в 2 !
Заменил drawLine на Line из поста 1514 от Alex_Mirko (СПАСИБО Ему БОЛЬШОЕ !).
И скорость отрисовки реаль уменьшилась раза в 2 !
Скорость увеличилась, время уменьшилось. А тот как-то не логично вы поступили )
Заранее прошу прощения за глупые вопросы... Полез в блок осциллографа
Пока не разобрался с участком кода, который подсчитывает частоту
Самое важное: алгоритм вычисления частоты? Можно обьяснить на пальцах? Одним местом чувствую, что ищутся некие замеры относительно уровня синхронизации...
Остальные вопросы:
1)почему здесь и в части кода определяющего макс. значение анализу подвергается только первые 255 значений таблицы, хотя тип переменной счетчика (int) способен просмотреть весь массив ?
2) в блоках пересчета почему-то для вариантов развертки 2 и 1 одинаковые формулы (делится на 32)
3) волщебная константа в пересчетах 3.27 - откуда такое значение? (у-frec1) - это количество замеров между двумя точками, а значит на один замер уходит 3.27 микросекунды?
4) Для подсчета частоты , как я понимаю используется два варианта: библиотечное (count) и софтварное (Frec)
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);} // если максим. значение в массиве больше логического уровня 1
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
Привет. Ответы:
1--- Для определения частоты програмно и замеров максимального значения стоит 255 потому что изначально массив с данными АЦП был 255, это позже я его увеличил под всю свободную оперативку для более длинной прокрутки в режиме паузы.
2--- эта строка не нужна описался((
3---совершенно верно в моем блоке замеров АЦП на один замер уходит 3,27мкс
4--- библиотека FreqCount.h дает возможность аппаратно очень точно считать частоту, а программный подсчет я добавил как вынужденную меру если сигнал ниже 2,5В то счетчик аппаратный не считает и врубается программный. Он менее точен, это я все рассказывал в видео и объяснял как выставлять уровень синхронизации чтоб измеряло точнее.
Количество замеров можете уменьшать как вам угодно это можно, но больше ничего не меняйте будет делать один замер медленнее чем 3,27 проверенно.
между этими строчками ничего вставлять нельзя
Код сишный и в атмел студии я отладчиком смотрел сколько тактов занимает обработка разных вариантов сбора данных с АЦП.
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
можно только в начале скетча размер подправьте
byte mass[512];//массив АЦП
Нельзя!
АЦП будет медленнее делать семплы.
Часто требуется измерить длительность импульсов, предполагается ли это в перспективе?
Заменил drawLine на Line из поста 1514 от Alex_Mirko (СПАСИБО Ему БОЛЬШОЕ !).
И скорость отрисовки реаль уменьшилась раза в 2 !
Скорость увеличилась, время уменьшилось. А тот как-то не логично вы поступили )
???
Можно ли заменить его на более компактный вариант и уменьшить количество замеров до 512?
можно только в начале скетча размер подправьте
byte mass[512];//массив АЦП
Нельзя!
АЦП будет медленнее делать семплы.
Да че то я ступил.
Часто требуется измерить длительность импульсов, предполагается ли это в перспективе?
Пока скучаешь советую просмотреть фильм "мирный воин" особенно тот момент когда они взобрались на гору.
Тогда думаю будет ясно почему пультоскоп с внешним АЦП в моем исполнении еще не готов.
посмарел...