Приветствую!
Задача такая. Нужен ШИМ. 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 будет работать асинхронно? правильно?
Последний раз редактировалось BlkDem; 29.04.2010 в 20:43.
Все верно
Это вообще отлично!
Chip, приветствую!
Если требуется несколько ШИМов, как поступить?
Как будет выглядеть последний скетч (где используется прерывание) с тремя ШИМ, например, где у каждого можно задать произвольную скважность. Подскажи, если не трудно.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)