Приветствую!
Задача такая. Нужен ШИМ. 50 Гц. Скважность 0-88% (должна задаваться программно).
Arduino Nano v.4 (если это принципиально).
Спасибо!
зы: если было, ткните в ссылку. Поиск не помог.
Вид для печати
Приветствую!
Задача такая. Нужен ШИМ. 50 Гц. Скважность 0-88% (должна задаваться программно).
Arduino Nano v.4 (если это принципиально).
Спасибо!
зы: если было, ткните в ссылку. Поиск не помог.
Вот пример хардверного ШИМ на 60Гц
Если ровно 50 Гц нужно, то можно софтовый ШИМ сделать
PHP код:
byte val=128;
void setup()
{
pinMode(5, OUTPUT);
TCCR0B = TCCR0B & 0b11111000 | 5;
}
void loop()
{
analogWrite(5, val); // val значение от 0 до 255
}
Chip, спасибо!
Если не трудно, есть реализация софтового?
Вот пример, выдает на D13 51Гц
Soft PWM для Carduino/Arduino
PHP код:
#define D13_High PORTB |=B00100000
#define D13_LOW PORTB &= B11011111
volatile unsigned int tcnt2;
volatile byte pwm_time;
byte bytes[] = {128};
void setup()
{
TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2
TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика
TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика
ASSR &= ~(1<<AS2); //Выбор источника синхронизации таймера если AS2=0 от системного генератора
tcnt2 = 237;
TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2.
}
void loop()
{
}
//****************обработчик прерывания********************
ISR(TIMER2_OVF_vect)
{
TCNT2 = tcnt2;
pwm_time++;
if(bytes[0] > pwm_time) D13_High; else D13_LOW;
}
Сорри, если ламерский вопрос, но, где в этом примере задается скважность?
И еще. Где можно почитать про TIMSK2, TCCR2A и т.д., используемые в коде?
bytes[0]=скважность от 0 до 255
Уже разобрался, спасибо!
так понимаю, что используя прерывание, мы отвязываемся от главного цикла loop()?
код функции loop будет работать асинхронно? правильно?
Все верно
Это вообще отлично!
Chip, приветствую!
Если требуется несколько ШИМов, как поступить?
Как будет выглядеть последний скетч (где используется прерывание) с тремя ШИМ, например, где у каждого можно задать произвольную скважность. Подскажи, если не трудно.