在这篇文章中,我主要讲的是有关于AVR用Arduino-Lite编程时的PWM输出控制的介绍,脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
在AVR单片机ATMag8,X8中,有直接输出PWM波形的功能,但是相对于用Aduino_lite编程来说,当它编写PWM输出时,可以直接引用已有的的函数,用起来十分方便。
PWM输出控制
ANALOG_WRITE( pin, pwm_value )
在指定引脚上输出PWM信号,如果该引脚没有启用PWM输出模式,则自动开启
analogWrite()的高效版本,等价于如下代码。
pin:
希望控制的Arduino-Lite的IO引脚号,对应引脚必须支持PWM输出,否则将编译错误。接受数字常量、宏常量,不支持变量输入。
Pwm
value
PWM占空比数值,范围0-255,接受立即数常量、变量、宏定义
PWM_SET( pin, pwm_value )
在指定引脚上输出PWM信号,仅生成单条指令。指定引脚需要事先开启PWM输出模式(PWM_ENABLE)
pin:
希望控制的Arduino-Lite的IO引脚号,对应引脚必须支持PWM输出,否则将编译错误。接受数字常量、宏常量,不支持变量输入。
pwmvalue
PWM占空比数值,范围0-255,接受立即数常量、变量、宏定义
PWM_SET_SAFE( pin, pwm_value )
在指定引脚上输出PWM信号,仅生成单条指令。如果PWM占空比为0,则将引脚设置为输入模式。
指定引脚需要事先开启PWM输出模式(PWM_ENABLE)
pin:
希望控制的Arduino-Lite的IO引脚号,对应引脚必须支持PWM输出,否则将编译错误。接受数字常量、宏常量,不支持变量输入。
pwmvalue
PWM占空比数值,范围0-255,接受立即数常量、变量、宏定义电平
例子: 在第3号引脚(PD3)输出占空比由变量pwm_val决定的的PWM信号
PWM_ENABLE( pin )
开启指定引脚的PWM输出模式,指定的引脚必须支持PWM输出,否则将出现编译错误。
高效版本,仅生成单条指令。
pin:
希望设定的Arduino-Lite的PWM引脚号,接受数字常量、宏常量,不支持变量输入。
例子: 开启10号引脚的PWM输出功能
PWM_DISABLE( pin )
关闭指定引脚的PWM输出模式,指定的引脚必须支持PWM输出,否则将出现编译错误。
高效版本,仅生成单条指令。。
pin:
希望设定的Arduino-Lite的PWM引脚号,接受数字常量、宏常量,不支持变量输入。
先把AVR的引脚图画上

程序
#include "arduino_lit.h"
#define ledPin 11
void setup() {
PIN_MODE(ledPin,OUTPUT);
PWM_ENABLE(ledPin);
}
void loop() {
ANALOG_WRITE(ledPin,230);
}
int main()
{
init();
setup();
while(1)
loop();
}
实验效果图
|