完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我是PIC控制器的新手。我已经成功地使ADC工作,并设置了定时器来切换LED的。我甚至有引脚20来输出s/w产生的PWM,但是只有几百赫兹。但是,我不能得到输出比较模块输出PWM。我已经阅读了所有可用的手册并尝试了一切。请给出一些关于我遗漏或做错的建议。在模拟器上运行我的代码并监视OC1A,它显示OC模块控制pin和pin设置为Dout,但是在部分运行代码时没有输出。配置://PIC24F16KM102配置位设置//FBS#pragma配置BWRP=OFF//引导段写保护(禁用)#pragma配置BSS=OFF//引导段保护(无引导程序闪存段)//FGS#pragma配置GWRP=OFF//通用段写保护(可以写入通用段)#pragma配置GCP=OFF//通用段代码保护(无保护)//FOSCSEL#pragma config FNOSC = FRCPLL//振荡器选择(带后标器和PLL模块的快速RC振荡器(FRCDIV+PLL))#pragma config SOSCSRC = DIG//SOSC源类型(与外部源一起使用的数字模式)#pragma config LPRCSEL = LPRC//LPRC振荡器功率和准确度(低功率,低精度)ACY模式)#pragma config IESO=OFF//Internal External Switch Over bit(禁用内部外部切换模式(禁用双速启动)//FOSC#pragma config POSCMOD=NONE//主振荡器配置位(禁用主振荡器)#pragma config OSCIOFNC=IO//CLKO Enable Co配置位(端口I/O启用(CLKO禁用)#pragma配置POSCFREQ=LS//主振荡器频率范围配置位(主振荡器/外部时钟输入频率小于100kHz)#pragma配置SOSCSEL=SOSCLP//SOSC功率选择配置位(次级振荡器)r配置用于低功耗操作)pragma config FCKSM=CSECMD//时钟切换和监视器选择(启用时钟切换,禁用故障安全时钟监视器)//FWDTpragma config WDTPS=PS32768//看门狗定时器后级选择位(1:32768)pragma config FWPSA=PR128//WDT Pre缩放器位(WDT预缩放比为1:128)#pragma配置FWDTEN=OFF//看门狗定时器启用位(硬件禁用WDT;SWDTEN位禁用)#pragma配置WINDIS=OFF//Windowd看门狗定时器禁用位(标准WDT选择(禁用窗口WDT)//FPOR#pragma配置BOREN=BOR3//Br自带复位启用位(在硬件中启用了BrownOut复位,禁用了SBOREN位)pragma配置PWRTEN=ON//上电定时器启用位(启用了PWRT)pragma配置I2C1SEL=PRI//备用I2C1引脚映射位(对I2C1使用默认SCL1/SDA1引脚)pragma配置BORV=V30//Brown out复位电压位(布朗-出重置设置为最高电压(3.0V))#pragma配置MCLRE=ON//MCLR管脚启用位(RA5输入管脚禁用,MCLR管脚启用,启用RA5输入管脚禁用,MCLR管脚启用)//FICD\#prag#pragma配置ICICICX1=PGx1//ICD管脚放置选择位(EMUC/EMUC/EMUC/EMUD共享PGC1 PGC1 PGC1 PGC1/PGC1/PGD1)PGC1/PGD1)OCC设置:ANSB&&;=0xFEFF;=0xFEFF=0xFEFFFF;//8位TRISA&=0xFFBF;//将引脚20RA6定义为输出引脚20RA6作为输出引脚20RA6定义为输出TRISB&=0x7EE7;//将引脚20RA6引脚20RA6定义为输出TRISB&&;//将引脚20RA6定义为输出TRISB&&=0x77EE7;//将引脚2020RA6定义引脚20RA6引脚20RA6定义为输出引脚20RA6定义为输出TRISB&TRISB&&&;//将引脚20针20RA6定义引脚20RA6定义为输出引脚20RA6定义为输出引脚20RA6定义为输出TRISB&&&&;//将引脚20XXX7F;/设置PWM频率,A应产生f=25kHzw16预分频器CCP1CON1L=0x00C5;//位15禁用PWM,位11=0设置同步模式//位7,6设置预分频器32,位3-0=0x0101设置PWM模式CCP1CON1H=0x0000;CCP1CON2L=0xC000;//位15允许从关机重新启动PWM。//bit 14设置关机延迟,直到下一次翻转CCP1CON2H=0x8100;/ /位15套等待下一次翻转。用于NEG//位8的Olin 8100允许在OC1A(引脚20)上输出CCP1CON3L=0x0000;CCP1CON3H=0x000A;//引脚驱动在关闭时不活动。CCP1PRH=0x0000;CCP1PRL=0x027F;//实时PWM值8MSB(10个)CCP1CON1L|=0x8000;//启用PWMMain代码:int main(void){int COUNTER;/*Infinite Loop*/.(1){COUNTER+;COUNTER--}}
|
|
相关推荐
19个回答
|
|
|
请张贴您的真实代码,而不是片断。如张贴,您的主要功能从不调用代码来设置PWM。
|
|
|
|
|
|
@ QHP,OP下一篇文章可能会保持适度,所以这里有可能发布的代码:
|
|
|
|
|
|
品尝少数民族报告!!!!
|
|
|
|
|
|
非常感谢你的快速回答。我上传了dan1138的建议代码,但是我在引脚17或20上仍然没有活动。我有用于驱动PWM的应用板的旧十六进制代码。此代码运行良好,并在引脚20上给出了预期的活动。因此,我知道这部分没问题,而且电路板上的电路没有阻止引脚切换。看来我的问题不在于代码或配置。仍然卡住:
|
|
|
|
|
|
我只能说oop,我漏掉了一点。字面上刚好是一位。具体来说,当使用自触发模式时,CCP1CON1H寄存器中的RTGEN位必须设置为一位。这里是此次“应该”工作的修订代码:
|
|
|
|
|
|
谢谢丹1138,一直旅行到结婚。将在星期四尝试。
|
|
|
|
|
|
我尝试了dan1138的修改代码,但是仍然没有得到任何关于18号引脚17的信息。这是否是由于选择汇编程序或者它的设置造成的?我使用XC16(V.1.31),除了添加之外没有做任何设置更改。并且…C包含“全局选项”“预处理和消息”目录
|
|
|
|
|
|
我最后一个帖子出错了。我在17或20脚上没有动作。
|
|
|
|
|
|
DAN1138,我使用您的代码不变,并且没有添加。我的代码中使用的开漏只用于故障排除。与PWM关机相同。我还有其他引脚连接到控制LED和读取输入电压。我将隔离所有不参与PWM电路的引脚,然后再试一次。明天我将报告我的发现。
|
|
|
|
|
|
除非我在系统时钟设置中产生了一个骨头错误,这个代码应该使PWM引脚工作:
|
|
|
|
|
|
我已经连接了一个全新的部件(PIC24F16KM202不能从DigiKi获得KM102)。上电引脚13和28。接地在8和27上。将我的PICTIT3(引脚1到5)连接到引脚1, 13, 8、4, 5。我独自坐在我的实验台上。我使用MPLAB X IDE v3.55命令“Make and Program Device Main Program”MPLAB报告用上面的代码编写了一部分:连接到MPLAB PICkit 3……当前在PICkit 3Firmware套件版本上加载了固件……01.47.12Firmware类型……ds……PIC33F/24F/24HTarget电压检测目标设备PIC24F16KM202找到。设备ID修订=0设备擦除...编程...以下存储区域将被编程:程序存储器:开始地址=0x0,结束地址=0x3ffconfigurationmemoryProgramming/VerifyCompleteDisconnectPickit3和po在引脚17或20上没有任何部分:(我也尝试了PICKIT连接和调试器运行。我暂停PIC和单步,CCP1TMRL每一步递增2。我不知所措。
|
|
|
|
|
|
你所做的似乎是正确的。如果代码正确,则PWM输出必须正常。我重新检查了我发布的代码,没有发现任何错误。请使用调试模式读取这些寄存器值:如果这些值都正确,则PWM输出必须存在,并且您的测试方法不正确。
|
|
|
|
|
|
|
|
|
所有的数值都是正确的。也许PWM频率不是25KHz,并且对于你的仪表来说太高而无法测量。检查针是否正在脉冲的“低技术”方法是使用带有串联电阻的LED来查看是否有脉冲出现。
|
|
|
|
|
|
为了确认我不是完全不能修改dan1138的代码,我用11行切换引脚2(RA0)。将if语句中的值分别更改为50000和100000,将频率减半到1.8赫兹。
|
|
|
|
|
|
我把IF语句值改为3和6,得到25.17 kHz,然后改为1和2,得到56.4 kHz。不是3X,但我希望其他的线路消耗一些处理时间。然后我把140号线改为“X”,定义了pWMLY周期(FCYC//(5000 0L*1L)),AM仍然没有看到PIN 17上的任何东西。下周将返回我的范围,但不要期望看到任何不同的东西。
|
|
|
|
|
|
嗨,你确定PIC正在按你期望的频率运行吗?你是否在一个引脚上切换LED以确保它是正确的频率?当做
|
|
|
|
|
|
您已经验证您的PIC24F16KM202是用您正在构建的代码编程的。系统时钟正在运行,您的表可以测量56KHz的频率。这只留下我发布的代码有故障。在PIC24F16KM202中初始化PWM时一定有遗漏的地方。is功能块似乎与PIC24FJ1024GB610中使用的功能块相同,并且所发布的代码在该部分上工作。到目前为止,我一直无法找到我没有正确配置PWM的内容。DIP-28包中的PIC24F16KM102在DigiKey中列出为过时。我找不到原因。
|
|
|
|
|
|
我发现了我的骨头错误。第一个问题是时钟切换不能使PIC24F16KM202在32MHz下运行。第二个问题是CCP1必须在设置周期和占空比寄存器之前选择PWM缓冲模式。此代码是固定的,并验证它确实在PIC24FKM202上工作:
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:17 , Processed in 1.327361 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1136