avr单片机的PC5脚我想输出一个低电平,为什么烧了很多次都输出高电平?是不是我的设置有问题?
3个回答
展开全部
那要看是什么型号的单片机了,如果是ATmega16或32,PC5正好是ISP接口的TDI,如果熔丝位设定中,允许ISP编程的话,PC5是无效的,不能被使用。
不过,芯片还留了一手,在JTAGEN熔丝位打开的情况下,通过软件可以控制JTAG,可以禁止和允许,操作也很简单,下面是具体方法:
MCUCSR |= 1 << JTD; /*禁止JTAG接口*/
MCUCSR |= 1 << JTD; /*因为JTAG接口事关重大,所以需要连续两次操作才能被有效执行*/
MCUCSR &= ~(1 << JTD); /*允许JTAG接口*/
MCUCSR &= ~(1 << JTD);
不过,芯片还留了一手,在JTAGEN熔丝位打开的情况下,通过软件可以控制JTAG,可以禁止和允许,操作也很简单,下面是具体方法:
MCUCSR |= 1 << JTD; /*禁止JTAG接口*/
MCUCSR |= 1 << JTD; /*因为JTAG接口事关重大,所以需要连续两次操作才能被有效执行*/
MCUCSR &= ~(1 << JTD); /*允许JTAG接口*/
MCUCSR &= ~(1 << JTD);
追问
啊,就是MEGA16,我用的是一个专门的HEX烧写软件,里面有设置熔丝位的,但是JTAG设置成0和1都不行,求指教,用上面的指令能有用嘛?在前面加上这个就能释放PC5口?
追答
上面的代码是ICCAVR编译器下的代码,如果是别的编译器,需要找到对应的寄存器名称编写代码。代码是实测的,可以在不关闭JTAG接口的情况下,通过代码使运行时的JTAG功能失效,释放PC5口。
展开全部
首先,你要确保程序已经正常运行。AVR只需正确的时钟(内部RC或外部晶振)配置和正常的供电电源,即可正常工作。
其次,程序的基本框架是否正确,可下载一个完整的、简单的程序修改一下。
第三,正确设置DDR和PORT寄存器。
上述三步正确,还不正确的话,可能是单片机坏了。
如果有仿真器的话,可针对DDR和PORT寄存器操作的几条指令单步调试一下。
其次,程序的基本框架是否正确,可下载一个完整的、简单的程序修改一下。
第三,正确设置DDR和PORT寄存器。
上述三步正确,还不正确的话,可能是单片机坏了。
如果有仿真器的话,可针对DDR和PORT寄存器操作的几条指令单步调试一下。
追问
单片机其他引脚设置都可以,就是PC的引脚烧进去置低电平不行?程序就对PC5这个引脚的操作有问题
追答
你是什么型号的单片机,某些型号的某些IO口是用于特殊功能,比如说JTAG接口或ISP接口的部分引脚会有这个问题,可以通过设置熔丝位禁止该功能。为了避免错误操作,建议回避!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查程序DDRC有没有问题
追问
DDRC设置成1,PORTC设置成0了
追答
试试加个循环,有可能输出低电平后很快又输出高电平,用软件仿真下看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询