Есть пример генерация 2х тактного меандра но там скважность 2.
https://alexgyver.ru/lessons/timer-isr/
На рисунке инвертированы первые 4, это будет сделано транзисторным ключем. Первый 90 гц, 2,3,4-10080 гц.
Я бы и на МЕГА выделил таймер 3-х канальный, и еще один под 90гц. Пока просто не понимаю как скважность 3 получить на 2-х каналах НАНО, и сдвиг на время импульса. Постоянная генерация. Пока не зависящая не от чего, и от основного кода. Спасибо!
Пауза равна два времени импульса.
https://alexgyver.ru/lessons/timer-isr/
На рисунке инвертированы первые 4, это будет сделано транзисторным ключем. Первый 90 гц, 2,3,4-10080 гц.
Я бы и на МЕГА выделил таймер 3-х канальный, и еще один под 90гц. Пока просто не понимаю как скважность 3 получить на 2-х каналах НАНО, и сдвиг на время импульса. Постоянная генерация. Пока не зависящая не от чего, и от основного кода. Спасибо!
Пауза равна два времени импульса.
C++:
// Пример генерации двухтактного меандра на таймере 2 (пины D3 и D11)
#include "GyverTimers.h"
void setup() {
pinMode(3, OUTPUT); // настроить пин как выход
pinMode(11, OUTPUT); // настроить пин как выход
// из-за особенности генерации меандра таймером
// частоту нужно указывать в два раза больше нужной!
Timer2.setFrequency(15000 * 2); // настроить частоту в Гц и запустить таймер. Меандр на 15 кГц
Timer2.outputEnable(CHANNEL_A, TOGGLE_PIN); // в момент срабатывания таймера пин будет переключаться
Timer2.outputEnable(CHANNEL_B, TOGGLE_PIN); // в момент срабатывания таймера пин будет переключаться
Timer2.outputState(CHANNEL_A, HIGH); // задаём начальное состояние пина 11
Timer2.outputState(CHANNEL_B, LOW); // задаём начальное состояние пина 3
}
void loop() {
}
Вложения
-
12.8 KB Просмотры: 14
Изменено: