Я позже заменю его. Думаю, Вы правы. Я посмотрел сейчас схему, по которой я срисовал свою - там также. R18 - 2к…
И смотрите на частоте 6500 - тогда каждая точка отображается. График должен получится как в массив записано !
матрица R-2R так что )))
Вроде продаются готовые R-2R матрицы, откалиброванные на заводе …
глянул ценник и наличие … это не наш метод …
Что то мне не верится что от одного “нижнего” резистора так сильно зажевало график …
Надо будет в Proteus запустить…
Вы правы. Не в нем дело. Сейчас я заменил его, и ничего не изменилось. Но потом я исключил транзисторы из схемы, и сигнал нормализовался. Видимо, оставлю аттенюатор без транзисторов, и все дела).
Спасибо всем, кто принял участие в решении проблемы. Форма сигнала теперь нормальная, что и требовалось исправить.
Видимо не вся чуйка пропита !!!
P/S/ Правка кода на ASM не спасла бы ! Там вывод идет по кругу и указатель “автоматически” с конца массива перепрыгивает на начало.
В одном из первых ответов на эту тему предложили подобрать транзистор. Я тогда еще пробовал исключать их, но, видимо, на фоне всего остального - я разницу просто не заметил)).
Странно что Евгений Петрович с выравниванием нас сразу в угол не поставил на горох … Это видимо по тому что вы код не вставили в форум, а он этого не любит и не стал его изучать …
Спасибо, я попробую. Осталось найти в коробках ОУ с питанием 5в ( если такой есть у меня).
Нужно R2R иначе будет резаться сигнал
В этой теме R2R надо конкретизировать ! А то есть разночтения с резистивной сборкой!
Код не смотрел, но вот уже вопросы появились .
Зачем там вообще ассемблер ?
Делал подобный генератор, единственное, что там нужно, это массив на 256 байт (если нужно значения менять налёту, то два таких массива), и формулы расчета.
Типа таких:
void Sinus(){
for (int i=0;i<RESOLUTION;i++) {
valueY[i]=byte(127+(127*sin(2.0*PI*i*(1.0/(RESOLUTION-1)))));
}
}
void Saw(){
for(int i=0;i<RESOLUTION;i++){
valueY[i]=map(i,0,RESOLUTION,0,255);
}
}
Далее, сначала рассчитываем все значения и заполняем ими массив, а потом запускаем генерацию.
Если налёту, то заполняем неиспользуемый массив и переключаемся в нужный момент на него.
Частоту задаём таймером, по вызову прерывания с которого меняем значение регистров.
Неужели сильно быстрее на ассемблере будет выполнение:
ISR_TIMER1_COMPA_vect{
PORTD=arr[step];
step++;
}
10 тактов на одну точку
А у вас только вход-выход в прерывание уже 10 тактов …
Здесь Вы говорите об ОУ?
Я понимаю, что проект уже сделан. Но вот немножко для сравнения.
Это проще гораздо.
Да, о нем
Как понять, что ОУ подходит для данной схемы в качестве повторителя? На какой параметр в даташите смотреть (кроме напряжения питания). У меня только 5 вольт приходит в корпус.
rail to rail