Генератор в режиме синтеза сигналов произвольной формы (DDS) ограничен частотой 300кгц гарантируя приемлемую форму сигнала, в режиме Шима(PWM) 4мгц. Генератор может генерировать: синус, пилу правую, пилу левую, треугольник, меандре, шим-меандер со скважностью. Также можно добавить свою форму сигнала, путем правки таблицы в скече и перепрошивке контролера. амплитуда сигнала 5v. Благодаря стабилизатору напряжения на микросхеме LM317T Генератор работает в диапазоне напряжений от 6,5v до 39v. Генератор оборудован экраном LCD1602 (HD44780) подключенным по лини i2c через плату-микросхему PCF8574 по двум проводам данных. Управление: Кнопка режима(mode) переключает в режим DDS выбирая сигнал : Синус, треугольник, две пилы, Меандр. Кнопка на энкодоре Переключает в режим шима(PWM) и осуществляет переход от частоты к скважности и наоборот. Две кнопки: право и лево позволяют выбрать разрядность переключение энкодором частоты. Кнопка - Reset перезагружает устройство. Код (C++): ......исходник целиком по ссылке ниже............... // DDS Алгоритм на ассемблере static inline void signalOUT(const uint8_t *signal) { asm volatile( "eor r18, r18 ;r18<-0" "\n\t" "eor r19, r19 ;r19<-0" "\n\t" "1:" "\n\t" "add r18, %0 ;1 cycle" "\n\t" "adc r19, %1 ;1 cycle" "\n\t" "adc %A3, %2 ;1 cycle" "\n\t" "lpm ;3 cycles" "\n\t" "out %4, __tmp_reg__ ;1 cycle" "\n\t" "sbis %5, 7 ;1 cycle if no skip" "\n\t" "rjmp 1b ;2 cycles. Total 10 cycles" "\n\t" : :"r" (ad0), "r" (ad1), "r" (ad2), "e" (signal), "I" (_SFR_IO_ADDR(PORTD)), "I" (_SFR_IO_ADDR(PORTB)) :"r18", "r19" ); } //конец DDS Алгоритм на ассемблере void setup() { //Настройка lcd.init(); lcd.backlight();// Включаем подсветку дисплея lcd.clear(); lcd.blink(); lcd.setCursor(0, 0);//cтрока 0 символ 0 lcd.print("DDS Gen 300khz"); lcd.setCursor(0, 1);//cтрока 2 символ 1 lcd.print("Meandr 4Mhz MAX"); delay(1000); for (int n = 0; n < sizeof(initPortD_data); n++ ) { PORTD = initPortD_data[n]; } PORTD = 0; DDRD = 0; TCCR1A = 0; TCCR1B = 0; TIMSK1 = 0; DDRB &= ~(1 << DDB0); DDRB &= ~(1 << DDB2); PORTC |= (1 << PC2) | (1 << PC3); //подтяжка логической единицы кнопок на порт PC2 PC3 PORTB |= (1 << PB0) | (1 << PB2); //подтяжка логической единицы кнопок на порт PB0 PB2 DDRB |= 1 << PB5; // PB5 светодиод на плате = выход main_screen(); //Экран выбора Частотомера //{если частотомер не выбран то загрузим генератор TCCR0B = 0; check_regim(); int_on();//включить прерывание PCINT1 main_flag = 1; lcd.cursor(); } //конец Настройки. ......исходник целиком по ссылке ниже............... Скачать скеч, схему и библеотеки можно тут https://cloud.mail.ru/public/G5zi/wTfVCtfeMт
Я не про изменение скважности, а про то, что меандр - это исключительно скважность 2. При любой другой скважности сигнал меандром не является.
интересно между народный стандарт на Меандр какой? в забугоровый генах тоже меандром называют последовательность прямоугольный импульсов любой скважности.
Меандр на их языке называется square wave. Прямоугольная волна с произвольной скважностью pulse wave.