
如果你用单片机本身的PWM功能,应该没有办法实现你的要求。
但如果你想用定时器来产生两种频率一样,占空比不一样的PWM信号还是可以的。
首先你定义两个全局变量,如PwmCnt1和PwmCnt2。
比如定时器溢出时间是1ms,你在中断中把这两个变量都自加1。
然后在主程序主循环中做如下判断:
if(PwmCnt1 < 100)
PWM输出1
else if(PwmCnt1 < 200)
PWM输出0
else
PwmCnt1 = 0;
这样你就可以得到一个占空比为1的方波。
通过修改这两个值,你可以得到你想要的波形。当然最小时间是你定时器的溢出时间
不过这样做也会有问题,就是一旦在主程序中进入了其它的中断,就会影响PWM的精度。
对于AVR来说,还是使用单片机本身的PWM功能。我用过mega64的单片机,驱动四个步进电机。可以同时产生4路PWM信号。
北航的书都不错啊强烈推荐!AVR高速嵌入式单片机原理与应用(修订版) 作者:耿德根 宋建国 马潮 叶勇建目录 第一章ATMEL单片机简介11ATMEL公司产品的特点112AT90系列单片机简介213AT91M系列单片机简介2第二章AVR单片机系统结构21AVR单片机总体结构422AVR单片机中央处理器CPU6221结构概述7222通用寄存器堆9223X、Y、Z寄存器9224ALU运算逻辑单元923AVR单片机存储器组织10231可下载的Flash程序存储器10232内部和外部的SRAM数据存储器10233EEPROM数据存储器11234存储器访问和指令执行时序11235I/O存储器1324AVR单片机系统复位16241复位源17242加电复位18243外部复位19244看门狗复位1925AVR单片机中断系统20251中断处理20252外部中断23253中断应答时间23254MCU控制寄存器 MCUCR2326AVR单片机的省电方式24261休眠状态24262空闲模式24263掉电模式2527AVR单片机定时器/计数器25271定时器/计数器预定比例器252728位定时器/计数器02527316位定时器/计数器127274看门狗定时器3328AVR单片机EEPROM读/写访问3429AVR单片机串行接口35291同步串行接口 SPI35292通用串行接口 UART40210AVR单片机模拟比较器452101模拟比较器452102模拟比较器控制和状态寄存器ACSR462.11AVR单片机I/O端口472111端口A472112端口 B482113端口 C542114端口 D55212AVR单片机存储器编程612121编程存储器锁定位612122熔断位612123芯片代码612124编程 Flash和 EEPROM612125并行编程62212.6串行下载662127可编程特性67第三章AVR单片机开发工具31AVR实时在线仿真器ICE2006932JTAG ICE仿真器6933AVR嵌入式单片机开发下载实验器SL�AVR7034AVR集成开发环境(IDE)75341AVR Assembler编译器75342AVR Studio77343AVR Prog7835SL�AVR系列组态开发实验系统7936SL�AVRASM源文件说明81第四章AVR单片机指令系统41指令格式84411汇编指令84412汇编器伪指令84413表达式8742寻址方式8943数据 *** 作和指令类型92431数据 *** 作92432指令类型92433指令集名词9244算术和逻辑指令93441加法指令93442减法指令97443乘法指令101444取反码指令101445取补指令102446比较指令103447逻辑与指令105448逻辑或指令107449逻辑异或指令11045转移指令111451无条件转移指令111452条件转移指令11446数据传送指令135461直接数据传送指令135462间接数据传送指令137463从程序存储器直接取数据指令144464I/O口数据传送指令145465堆栈 *** 作指令14647位指令和位测试指令147471带进位逻辑 *** 作指令147472位变量传送指令151473位变量修改指令152474其它指令16148新增指令(新器件)162481EICALL-- 延长间接调用子程序162482EIJMP--扩展间接跳转163483ELPM--扩展装载程序存储器164484ESPM--扩展存储程序存储器164485FMUL--小数乘法166486FMULS--有符号数乘法166487FMULSU--有符号小数和无符号小数乘法167488MOVW--拷贝寄存器字168489MULS--有符号数乘法1694810MULSU--有符号数与无符号数乘法1694811SPM--存储程序存储器170第五章AVR单片机AT90系列51AT90S1200172511特点172512描述173513引脚配置174514结构纵览17552AT90S2313183521特点183522描述184523引脚配置18553ATmega8/8L185531特点186532描述187533引脚配置189534开发实验工具19054AT90S2333/4433191541特点191542描述192543引脚配置19455AT90S4414/8515195551特点195552AT90S4414和AT90S8515的比较196553引脚配置19656AT90S4434/8535197561特点197562描述198563AT90S4434和AT90S8535的比较198564引脚配置200565AVR RISC结构201566定时器/计数器212567看门狗定时器 217568EEPROM读/写217569串行外设接口SPI2175610通用串行接口UART2175611模拟比较器 2175612模数转换器2185613I/O端口22357ATmega83/163228571特点228572描述229573ATmega83与ATmega163的比较231574引脚配置23158ATtiny10/11/12232581特点232582描述233583引脚配置23559ATtiny15/L237591特点237592描述237593引脚配置2395 10ATmega128/128L2395101特点2405102描述2415103引脚配置2435104开发实验工具245511ATmega1612465111特点2465112描述2475113引脚配置247512AVR单片机替代MCS51单片机249第六章实用程序设计6.1程序设计方法250611程序设计步骤2506.1.2程序设计技术25062应用程序举例251621内部寄存器和位定义文件251622访问内部 EEPROM254623数据块传送254624乘法和除法运算应用一255625乘法和除法运算应用二25562616位运算255627BCD运算255628冒泡分类算法255629设置和使用模拟比较器2556210半双工中断方式UART应用一2556211半双工中断方式UART应用二25662128位精度A/D转换器2566213装载程序存储器2566214安装和使用相同模拟比较器2566215CRC程序存储的检查25662164×4键区休眠触发方式2576217多工法驱动LED和4×4键区扫描2576218I2C总线2576219I2C工作2586220SPI软件2586221验证SLAVR实验器及AT90S1200的口功能12596222验证SLAVR实验器及AT90S1200的口功能22596223验证SLAVR实验器及具有DIP40封装的口功能第七章AVR单片机的应用71通用延时子程序26072简单I/O口输出实验266721SLAVR721ASM 266722SLAVR722ASM267723SLAVR723ASM268724SLAVR724ASM270725SLAVR725ASM271726SLAVR726ASM272727SLAVR727ASM27373综合程序274731LED/LCD/键盘扫描综合程序274732LED键盘扫描综合程序275733在LED上实现字符8的循环移位显示程序275734电脑放音机277735键盘扫描程序285736十进制计数显示286737廉价的A/D转换器289738高精度廉价的A/D转换器294739星星灯2977310按钮猜数程序2987311汉字的输入30474复杂实用程序30674110位A/D转换306742步进电机控制程序309743测脉冲宽度312744LCD显示8字循环318745LED电脑时钟324746测频率330747测转速332748AT90S8535的A/D转换334第八章BASCOMAVR的应用81基于高级语言BASCOMAVR的单片机开发平台34082BASCOMAVR软件平台的安装与使用34183AVR I/O口的应用345831LED发光二极管的控制345832简易手控广告灯346833简易电脑音乐放音机34784LCD显示器349841标准LCD显示器的应用349842简单游戏机--按钮猜数35185串口通信UART352851AVR系统与PC的简易通信353852PC控制的简易广告灯35486单总线接口和温度计35687I2C总线接口和简易IC卡读写器359第九章ICC AVR C编译器的使用91ICC AVR的概述365911介绍ImageCraft的ICC AVR365912ICC AVR中的文件类型及其扩展名365913附注和扩充36692ImageCraft的ICC AVR编译器安装367921安装SETUPEXE程序367922对安装完成的软件进行注册36793ICC AVR导游368931起步368932C程序的剖析36994ICC AVR的IDE环境370941编译一个单独的文件370942创建一个新的工程370943工程管理371944编辑窗口371945应用构筑向导371946状态窗口371947终端仿真37195C库函数与启动文件372951启动文件372952常用库函数372953字符类型库373954浮点运算库374955标准输入/输出库375956标准库和内存分配函数376957字符串函数377958变量参数函数379959堆栈检查函数37996AVR硬件访问的编程380961访问AVR的底层硬件380962位 *** 作380963程序存储器和常量数据381964字符串382965堆栈383966在线汇编383967I/O寄存器384968绝对内存地址384969C任务3859610中断 *** 作3869611访问UART3879612访问EEPROM3879613访问SPI3889614相对转移/调用的地址范围3889615C的运行结构3889616汇编界面和调用规则3899617函数返回非整型值3909618程序和数据区的使用3909619编程区域3919620调试39197应用举例392971读/写口392972延时函数392973读/写EEPROM392974AVR的PB口变速移位393975音符声程序3939768字循环移位显示程序394977锯齿波程序395978正三角波程序396979梯形波程序396附录1AT89系列单片机简介398附录2AT94K系列现场可编程系统标准集成电路401附录3指令集综合404附录4AVR单片机选型表408
STC的芯片在上电后首先进入BOOT段程序,如果不需要下载,在等待了很小一段时间后就进入的应用程序段,也就是你写的程序。 下载过程是这样的,STC的ISP程序发出一段特殊的字符串(具体数据我忘了),单片机如果这时候正在BOOT段里等待
以上就是关于AVR多路PWM问题全部的内容,包括:AVR多路PWM问题、单片机求中间数的问题、attiny24芯片解密哪里可以做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)