极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15566|回复: 7

arduino死机

[复制链接]
发表于 2014-12-31 10:51:46 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2014-12-31 11:13 编辑

自己绘制了一个Arduino板。然后下载了bootloader,程序运行有时正常有时又死机,我在程序中加了LED来判断程序死在那里,发现是死在:while (!(SPSR&(1 << SPIF)));(等待SPI传输完成),但是前面的一些传输都正常,很不解,求大神帮忙。LED显示的是0x0c,,,



(其实不习惯使用arduino的风格调用别人的库,习惯自己写,,,)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-12-31 11:32:53 | 显示全部楼层
while(!(SPSR & (1<<SPIF))) 这句话的意思是等待SPI传输完成!如果等不到完成那就不做其他事情,一直等!
如果你要自己使用底层操控spi的话那么建议你使用SPI中断,传输完成会中断通知你!

你的代码可能是SPI设备没接好或其他错误,导致SPI无法传输完成
回复 支持 反对

使用道具 举报

发表于 2014-12-31 11:43:58 | 显示全部楼层
我也是arduion的初学者  学习了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-31 12:19:38 | 显示全部楼层
mylife1213 发表于 2014-12-31 11:32
while(!(SPSR & (1

有点道理,但是SPI又不像IIC有什么ACK,它应该只执行发送而不关心外界是否有接收,发送我是参考的AVR的数据手册,谢谢了,我自己再研究研究
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-31 12:22:09 | 显示全部楼层
超级瓦力 发表于 2014-12-31 11:43
我也是arduion的初学者  学习了

我是被迫玩arduino的,所以从不用arduino的任何库,,写的代码也都是AVR单片机的寄存器操作,无非是使用个arduino的在vs的IDE插件,,我不是ARDUINO的粉丝
回复 支持 反对

使用道具 举报

发表于 2014-12-31 12:37:33 | 显示全部楼层
angela_hu 发表于 2014-12-31 12:22
我是被迫玩arduino的,所以从不用arduino的任何库,,写的代码也都是AVR单片机的寄存器操作,无非是使用个 ...

arduino和AVR Studio上开发一样,如果你不用库的话,arduino = avr Studio ,我从Atmel Studio转过来的,Atmel Studio 库文件太少,还是arduino里的库多,开发周期一下少了很多!不然要对着器件的数据表写驱动,一个器件驱动起来半天就没了! arduino不只给初学者玩的,也是给熟练使用AVR单片机的开发人员使用的,你可以在ARDUINO里进行寄存器配置,还能使用非常庞大的器件驱动库!
回复 支持 反对

使用道具 举报

发表于 2014-12-31 12:44:11 | 显示全部楼层
angela_hu 发表于 2014-12-31 12:19
有点道理,但是SPI又不像IIC有什么ACK,它应该只执行发送而不关心外界是否有接收,发送我是参考的AVR的数据 ...

SPI是环形寄存器交换协议,通讯一次主从设备交换各自的SPDR寄存器
回复 支持 反对

使用道具 举报

发表于 2015-1-1 13:57:29 | 显示全部楼层
建议使用中断处理
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 17:58 , Processed in 0.052051 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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