相位与频率修正PWM模式发出pwm信号
想通过一个变阻器调节pwm信号的频率。选择了相位频率修正PWM模式,代码线路图如下,怎么得不到PWM信号呢?
// PWM signal generation using arduino
// 相位与频率修正pwm模式
int analog_pin = 0; // analog pin, receive resister input
float val=0;// current analog input
void setup()
{
pinMode(9,OUTPUT);// 11 number pin OC2A
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(WGM10);
TCCR1B = _BV(WGM13) | _BV(CS10);
ICR1 = 0x00fe;
OCR1A = 0x01ff;
TCNT1 = 0x00FF;
Serial.begin(9600);
}
void loop()
{
val = analogRead(analog_pin);
val = val/1000;
Serial.print(val);
Serial.print('\t');
Serial.print(val*0xffff);
Serial.print('\n');
}
写 pwm的代码在哪里? zoologist 发表于 2015-5-15 14:55 static/image/common/back.gif
写 pwm的代码在哪里?
您说应该写pwm?怎样写? 一般不都是这样写的么? analogWrite(pwm1, 78); //PWM调速 zoologist 发表于 2015-5-15 15:14 static/image/common/back.gif
一般不都是这样写的么? analogWrite(pwm1, 78); //PWM调速
我加了也不行!// PWM signal generation using arduino
// 相位与频率修正pwm模式
#include <avr/interrupt.h>
int analog_pin = 0; // analog pin, receive resister input
float val=0;// current analog input
void setup()
{
pinMode(9,OUTPUT);// 11 number pin OC2A
TCCR1A = _BV(COM1A1) | _BV(WGM11) | _BV(WGM10);
TCCR1B = _BV(WGM13) | _BV(CS10);
OCR1A = 0x0f;
TCNT1 =0x00ff;
Serial.begin(9600);
}
void loop()
{
val = analogRead(analog_pin);
val = val/1000;
Serial.print(val);
Serial.print('\t');
analogWrite(9,128);
Serial.print(val*0xffff);
Serial.print('\n');
} zoologist 发表于 2015-5-15 15:14 static/image/common/back.gif
一般不都是这样写的么? analogWrite(pwm1, 78); //PWM调速
我这个代码用快速PWM模式,也不用analogWrite的,就可以发出pwm波// PWM signal generation using arduino
// 这个例子只能调整占空比
int analog_pin = 0; // analog pin, receive resister input
float val=0;// current analog input
void setup()
{
pinMode(9,OUTPUT);// 11 number pin OC2A
TCCR1A = _BV(COM1A1) | _BV(WGM11) | _BV(WGM10) ; // 比较匹配时,OC1A/OC1B端口清零,OC1A/OC1B在Top时置位
TCCR1B = _BV(WGM12) | _BV(CS12) | _BV(CS10); // 采用的是10位快速PWM模式
OCR1A = 0x03ff;
Serial.begin(9600);
}
void loop()
{
val = analogRead(analog_pin);
val = val/1000;
Serial.print(val);
Serial.print('\t');
OCR1A = val*0x03ff;
Serial.print(val*0x03ff);
Serial.print('\n');
} zoologist 发表于 2015-5-15 15:14 static/image/common/back.gif
一般不都是这样写的么? analogWrite(pwm1, 78); //PWM调速
我快速pwm模式实现了,但是相位修正没实现 liangquan 发表于 2015-5-15 15:26 static/image/common/back.gif
我快速pwm模式实现了,但是相位修正没实现
仍然十分感谢
页:
[1]