打印
[STM8]

STM8写EEPROM时UART接收中断为什么发生过载错误?

[复制链接]
7456|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dadodo|  楼主 | 2010-8-16 14:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM8写EEPROM时UART接收中断为什么发生过载错误?UART_SR的OR置位。
不写EEPROM时串口中断接收数据正常。
沙发
香水城| | 2010-8-16 14:38 | 只看该作者
因为写EEPROM时CPU暂停运行。

使用特权

评论回复
板凳
dadodo|  楼主 | 2010-8-16 14:51 | 只看该作者
如何解决这个问题?

使用特权

评论回复
地板
香水城| | 2010-8-16 14:53 | 只看该作者
回避。

使用特权

评论回复
5
winloop| | 2010-8-16 14:54 | 只看该作者
还真是个事儿

使用特权

评论回复
6
dadodo|  楼主 | 2010-8-16 15:10 | 只看该作者
串口接收有时候是无法预知的,只能找时机写EEPROM了。首次对STM8表示遗憾,呵呵

使用特权

评论回复
7
香水城| | 2010-8-16 15:20 | 只看该作者
难道你的程序中没有出错处理?没有串口接收出错的重传机制? 如果真的没有出错处理,才是真的遗憾,:lol

使用特权

评论回复
8
dadodo|  楼主 | 2010-8-16 15:25 | 只看该作者
有出错处理,但这不是理由。以前用AVR从来没考虑过这个问题。

使用特权

评论回复
9
香水城| | 2010-8-16 15:27 | 只看该作者
有出错处理,但这不是理由。以前用AVR从来没考虑过这个问题。
dadodo 发表于 2010-8-16 15:25


写EEPROM肯定不是随时都要写的,肯定是偶尔写一次,如果因为偶尔写一次而造成串口接收出错,则可以使用出错处理机制来处理。

因为偶尔一次,所以可以是出错处理的理由。

使用特权

评论回复
10
tieguanyin2008| | 2010-9-22 22:21 | 只看该作者
这种设计比较怪。写个EEPROM还要停下来

使用特权

评论回复
11
zhiwei| | 2010-9-23 13:14 | 只看该作者
因为它的EEPROM和Flash是共用读写电路的吧,STM32也这样啊。这确实是个问题,可以外扩个IIC。

使用特权

评论回复
12
8bit_MCU| | 2010-10-28 14:01 | 只看该作者
你用的哪个型号的芯片?
带RWW功能的芯片不会有这类问题,除非是使用不正常。

使用特权

评论回复
13
lzymcu| | 2010-10-29 15:56 | 只看该作者
我也觉得很奇怪,仿真时一写EEPROM就出现问题
而且EEPROM有时能写进去有时写不进去

未命名.jpg (11.9 KB )

未命名.jpg

使用特权

评论回复
14
8bit_MCU| | 2010-11-1 11:43 | 只看该作者
你写EEPROM的程序贴出来看看
对于带RWW功能的芯片
第一次写EEPROM可以直接写入,然后可以继续去干别的事情。不会影响中断响应。

接下来在写EEPROM前必须判断(是必须。。。)前一次写入是否完成,如果没有完成继续去干别的事情。等下次回来再判断一下前一次写入是否完成,只有在前一次写入已经完成的情况下,才能继续写下一次。否则,MCU一定会被HOLD住,无法响应任何中断,切记,切记。

对于不带RWW功能的芯片必须等一次写完再去干别的事情。

使用特权

评论回复
15
8bit_MCU| | 2010-11-1 11:48 | 只看该作者
因为它的EEPROM和Flash是共用读写电路的吧,STM32也这样啊。这确实是个问题,可以外扩个IIC。
zhiwei 发表于 2010-9-23 13:14


错了
STM8的FLASH和STM32是完全不同的。
跟什么共用读写电路完全没有关系。
对于EEPROM来说,虽然是可以单字节写入和擦除,但是EEPROM本省上电是按区块来上电的。在你写某一个字节的数据时,其实整个这个区块都是上电状态。试想,在这种情况下,是没有办法在前一次操作还没有完成的情况下去进行下一次EEPROM操作的。一次EEPROM的写入时间是6MS(或者快速模式3ms)..如果在前一次写入还没有完成的情况下,又写入了新的数据,那么MCU只能将所有操作停掉,等数据都被写入了再继续工作了。

使用特权

评论回复
16
8bit_MCU| | 2010-11-1 11:50 | 只看该作者
所以,对于带RWW功能的芯片来说,在写入新数据前判断前一次操作是否已经完成是最方便有效的方法。不会影响EEPROM的写入,也不会影响任何中断的响应和程序的执行。

使用特权

评论回复
17
dadodo|  楼主 | 2010-11-2 01:23 | 只看该作者
可惜不带RWW的芯片有不少啊

使用特权

评论回复
18
donkey89| | 2010-11-2 08:55 | 只看该作者
还真是个问题,用avr从来没有考虑过这个.真是一个败笔啊
好在现在项目暂时两个不用同时操作

使用特权

评论回复
19
today_lucky| | 2012-3-16 15:20 | 只看该作者
MARK!

使用特权

评论回复
20
admint| | 2016-9-1 15:15 | 只看该作者
这个bug要了亲命了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

1286

帖子

5

粉丝