搜索
bottom↓
回复: 5

mega16下载程序后只能运行一次,复位或者重新上电就不行了

[复制链接]

出0入0汤圆

发表于 2013-5-3 14:10:05 | 显示全部楼层 |阅读模式
本帖最后由 ashaohlt 于 2013-5-3 19:57 编辑

如题。
测试程序是使用SPI接口,下载时可以在CLK脚测到正常的时钟信号,程序写进去后,按键复位,CLK恒为低电平,多次复位依然。重新上电变成恒为高电平,复位后边低电平,在重新上电,又变为高电平,就一直不能正常工作了。


如果不用SPI,直接把PB口当普通IO输出方波可以正常。

测试代码如下(编译器winavr):

#include<avr/io.h>
#include<util/delay.h>
#define DD_MOSI     PB5
#define DD_SCK     PB7
#define DDR_SPI    DDRB
#define SS             PB4
int main (void)
{
    DDR_SPI = (1<<DD_MOSI) | (1<<DD_SCK) | (1<<SS);
    SPCR = (1<<SPE) | (1 << CPOL) | (1<<MSTR) | (1<<SPR0);

    SPDR = 0xAA;

    while(!(SPSR & (1<<SPIF)));

    while (1);
}

很短的代码,大家看看,知道怎么回事不?谢谢了~

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-5-3 16:37:26 | 显示全部楼层
SPI 的硬件模組工作在master模式時,ss腳位(portx.4)需設置成輪出.

出0入0汤圆

发表于 2013-5-3 17:15:22 | 显示全部楼层
你是用萬用表測量的CLK引腳的電平吧?

出0入0汤圆

 楼主| 发表于 2013-5-3 19:12:17 | 显示全部楼层
NemoGu 发表于 2013-5-3 17:15
你是用萬用表測量的CLK引腳的電平吧?

用示波器测的

出0入0汤圆

发表于 2013-5-3 19:19:14 | 显示全部楼层
ashaohlt 发表于 2013-5-3 19:12
用示波器测的

從程序上看,MCU復位后SPI接口只向外發送了一字節的0xAA
比較懷疑是不是示波器沒有抓到波形

可以考慮使用Reset信號作為觸發信號,來觀察CLK信號,一般示波器都是雙通道

出0入0汤圆

 楼主| 发表于 2013-5-3 19:50:06 | 显示全部楼层
NemoGu 发表于 2013-5-3 19:19
從程序上看,MCU復位后SPI接口只向外發送了一字節的0xAA
比較懷疑是不是示波器沒有抓到波形

示波器捕捉没问题的,因为正常的时候是可以看到的,还可以同步的得到数据线的信号。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表