打印
[STM8]

STM8S105 “写EEPROM"操作,会清零TIM1_BKR的 MOE 位?

[复制链接]
3402|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TECHWELL|  楼主 | 2014-5-10 00:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 TECHWELL 于 2014-5-10 00:28 编辑

   我利用STM8S105K4的TIM1,根据SVPWM调制方法,生成三相互补共6路PWM信号,经IR2101驱动6个75NF75的MOSFET管,
实现了一个简易功能的变频器(VF控制,0-120HZ)。
    它虽然“简易”,却也成功地驱动了三相异步电机(三角形接法,220V)。直流母线电压是24VDC,因此,输出力矩很小,但电机空载能转起来,并且很平稳。
    它虽然“简易”,还用它驱动了一种额定电压为24V的同步电机,在 “加减速时间” 合理的有条件下,没有失步现象,力矩较大,效果良好,欣喜不已!
   如你所知,做为一个变频器,总是有许多参数(目前有180个左右)需要由用户设置的。比如,加速时间、减速时间之类的参数,修改后,要保存在EEPROM中。
其中,有一部分参数,需要在变频器“运行”(即变频器有PWM输出,电机正在运转)时,也要能修改、并保存在EEPROM中。

我的问题来了:
   1.当变频器在停机状态(MOE=0,即变频器PWM不输出,电机不运行)时,用户修改参数、存入EEPROM,没问题。
   2.当变频器在“运行”状态(MOE=1,即变频器有PWM输出              )时,不接电机,输出电流为0,用户修改参数、存入EEPROM,都没问题。
   3.当变频器在“运行”状态(MOE=1,即变频器有PWM输出,电机正在运转)时,驱动 异步 电机,输出电流较小,用户修改参数、存入EEPROM,都没问题。
   4.当变频器在“运行”状态(MOE=1,即变频器有PWM输出,电机正在运转)时,驱动 同步 电机,输出电流较大,用户修改参数后,在写入EEPROM的瞬间,
     TIM1_BKR寄存器中的MOE(Main output enable)位,居然自动由1变为0,PWM输出被禁止,电机戛然而止。
那么,我要请教的是,MOE位,与“写EEPROM",有什么鸟关系呢???        
为什么电机之电流较小时,“写EEPROM"操作,不会清零MOE位?而电机之电流稍大时,就死定了?
  工作电流大时,干扰了?我用示波器,检查我的5V电源,各种条件下,都算是比较理想的呀!
  百思不得其解啊...
  请高手务必教我!
  我的QQ : 396936661
谢谢!!!

Sheet1.pdf

287.57 KB

原理图

沙发
airwill| | 2014-5-10 08:02 | 只看该作者
首先, 从数据手册看, MOE位,与“写EEPROM" 毫无关系.
但是, 这里有个问题:
做变频控制的人都知道, 实现 SPWM 信号, 就需要每个 PWM 周期都做修改的. 那么这个周期往往 100uS 以内.
而写 EEPROM 涉及擦除和写, 通常需要好多个毫秒以上. 那么这么长时间里不对 PWM 做更新, 会导致什么结果? 刹车! 这是肯定的. 小电流和异步机下, 这个过程并不明显, 但这个动作实际仍然存在. 到了到了同步大电流, 就非常明显了. PWM输出被禁止,电机戛然而止, 这还是轻微的, 炸了功率管和你的控制板也是可能的。
建议电机运转中, 不要修改 EEPROM. 通常的做法是你可以暂存在 RAM 中, 等停下后再写.

使用特权

评论回复
板凳
mmuuss586| | 2014-5-10 09:46 | 只看该作者
如你所说,写EEPROM和MOE确实豪不相干。
先查下:
1、是不是写固定的EEPROM,会导致MOE位变0;
   如果不是,那说明随机出现的情况;
2、如果是随机出现的;
写段小程序,让电机一直转,程序不断写EEPROM测试,看是不是会出现;
如果会出现,那说明是电机运转过程中,由于硬件问题,导致读写EEPROM时,会影响MOE位改写;

解决办法,可以按楼上所说处理,再查下你的PCB设计

使用特权

评论回复
地板
mmuuss586| | 2014-5-10 09:55 | 只看该作者
我碰到过,由于硬件问题,造成我的ADC校准的偏移寄存器值变了;
后来在模拟上串了电阻,并改板,就没出现过;
用的是增强型51

使用特权

评论回复
5
TECHWELL|  楼主 | 2014-5-10 11:43 | 只看该作者
  感谢二位爷的回复!
  正如airwill所说,在我写EEPROM之瞬间,大电流情况之下,电机明显抖动了一下子(“打嗝”),同时,比较器LM393发出了过流保护信号到CPU的TIM1_BKIN,从而致使TIM1_BKR 的MOE位被清0,MOSFET之类的硬件得到了CPU的坚决捍卫!
感谢CPU!
  STM8S105的手册中明确说,它的EEPROM是“Read while write: Writing in data memory possible while executing code in program memory”的。我的理解就是:
在我写EEPROM时,CPU不会暂停,而是可以从FLASH中取指令执行的。
照此说来,写EEPROM时,执行PWM更新的中断服务函数,是不会被“打嗝”的。
但实际上,却出现了“打嗝死”,为之奈何?

使用特权

评论回复
6
TECHWELL|  楼主 | 2014-5-10 11:52 | 只看该作者
STM8S105的手册中说,写EEPROM一个字节,需要6ms左右的时间

使用特权

评论回复
7
Rating| | 2014-5-10 17:20 | 只看该作者
我之前用stm8的EEprom,也是会造成串口中断溢出。

使用特权

评论回复
8
wx85105157| | 2014-5-10 21:06 | 只看该作者
写eerom的时候不能暂停的代码可以放到内存里面运行啊。

使用特权

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

本版积分规则

22

主题

74

帖子

6

粉丝