最新日志

发表于:2007-4-20 12:52:01
标签:芯片  

0

常用ADDA芯片

pdfpdf

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(557)
发表于:2007-4-20 11:57:46
标签:看门狗  

0

X25045

doc

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(710)
发表于:2007-4-20 11:56:36
标签:MAX705  706  813  

0

常用看门狗芯片

pdf

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(1206)
发表于:2007-4-19 12:24:12
标签:单片机编程经验  

0

单片机编程经验

单片机编程经验
字体大小: 小 中 大 作者:     来源:     日期:2006-07-25     点击:142

 

经验之一:用“软件陷阱+程序口令”对付PC指针的弹飞

当CPU受到外界干扰,有时PC指针会飞到另一段程序中,或跳到空白段去。

其实,如果PC指针飞到空白段去,倒也好处理。只要在空白段设立软件陷阱(拦截指令),将程
序拦
截到初始化段或程序错误处理段。

但是,如果PC指针飞到另一段程序中去了,系统如何办?小匠在这里推荐一种方法——程序口
令,
思路如下:

1、首先,程序必须模块化。每个模块(子程序)执行一个功能。每个模块只有一个出口
(RET)。

2、设立一个模块(子程序)ID寄存器。

3、为每个子程序配置一个唯一的ID号码。

4、每当子程序执行完毕,要返回(RET)之前,先将本子程序的ID号送入 ID寄存器

5、返回到上级程序后,先判断ID寄存器中的ID号。如果正确,则继续执行;如果不正确,
则表示
PC指针有可能已经跳错了,子程序没有按预计的出口返回,这时将程序拦截到初始化段或程
序错
误处理段。

这种方法,如同在程序中设立了若干个岗哨,每次调用子程序返回后,都要对口令(ID
号),验
明正身后再放行。再配合软件陷阱,基本上可以将大多数PC指针弹飞的现象检测到。

到了程序错误处理段,要杀要剐(冷启动还是热启动)就由您了。

仅以一条代码来揭示程序飞跑的本质!
750102H  ;MOV 01H,#02H

如当前PC不是指向75H,而是指向01H或02H,那么51内的指令译码器将把她们忠实地翻译成
AJMP
XX01H 或 LJMP XXXXH  而XX01H XXXXH又是什么呢?天知道!这样恶性飞跑下去那还不死
定!
改革一下:
CLR A ;0C4H
INC A ;04H
MOV R1,A ;0F9H
INC A ;04H 
MOV @R1,A  ;86H
每一字节代码都不能在生成跳转和循环,且都是单字节指令!往那跑去?
跑出去了都要自己回来!“在家”千日好!“跳出”事事难嘛!这样只要平时习惯了用累加
器和
寄存器把数倒一倒,把那些危险代码都给倒掉,这样虽说给PC的“足”上多加了两字节的
“包”
可它不好“跑”啊!“足包”====跑!
有朋友会问:要是PC抓做02H--LJMP 又有抓做了老鼻子远的XXH,再抓做隔壁的YYH不就没用

吗?提这样的问题只有ZENYIN这种钻牛角得才会提!PC那一位最活跃啊?PC0啊!要“扯
拐”显
然发生在她身上,至于那PC15同志啊,睡得更死猪一样,雷爆(强干扰)来了都打不醒?此
外如
果干扰都强到了PC高位都出错的地步!关电!关电!不干了!“不是我们不行而是敌人太强
大”!反过来要是敌人在你的专政下,只是偶尔出来捣捣乱,但一出来就冲到屁西(PC)高
层,
就要问问是不是你的王国根基(硬件)有问题了?而非出在意识形态(软件)上!硬件为
本!软
件为标!标本兼治铸就坚强体魄,方能百毒不侵!

经验之二、不要轻信软件狗

关于软件狗的讨论,论坛上多矣。

匠人也曾经查阅过许多关于软件狗的文章。有些大师确实提出了一些比较有技巧性的方法。

但是,匠人的忠告是:不要轻信软件狗!

其实,软件狗相当于软件的一种自律行为。一般的思路都是通过设立一个计数器,在计时中
断中
对其+1,在主程序的适当地方对其清零。如果程序失控了,清零指令未被执行,但中断造常

生,则计数器溢出(狗狗叫了)。

但是这里有个问题:万一干扰导致中断被屏蔽了,那软件狗就永远不会叫了!——针对这种

能,有人提出在主程序中反复刷新中断使能标志,保证不让中断被屏蔽。——但万一程序飞
到某
个死循环中去了,不再执行“刷新中断使能标志”这一功能了,还是有可能把狗狗活活饿
死。

所以,匠人的观点是:看门狗必须拥有独立的计数器。(即硬件看门狗)

好在现在好多芯片都提供了内部WDT。这种狗都是自带计数器的。即使干扰导致程序失控,
WDT还
是会造常计数直到溢出。

当然,匠人也没有要将软件狗一棍子全部打死的意思。毕竟不管是软狗还是硬狗,逮到耗子
就是
好狗嘛(狗拿耗子——多管闲事?)。如果哪位训狗专家确实养过一条能看门的好软件狗,
请牵
出来让大伙瞧瞧。


经验之三、话说RAM冗余技术

所谓的RAM冗余,就是:

1、将重要的数据信息备份2份(或以上)并存放在RAM中不同的区域(指地址不相连)。

2、当平时对这些数据进行修改时,同时也更新备份

3、当干扰发生并被拦截到“程序错误处理段”中时,将数据与备份做比较,采用表决方式
(少数
服从多数)选出正确(或可能正确?)的那个。

4、备份越多,效果越好。(当然,你得有足够的存储空间)

5、只备份最最原始的数据。中间变量(指那些可以从原始数据重新推导出来的数据)不必
备份


注:

1、这种思路的理论依据,据说是源于一种“概率论”,即一个人被老婆打肿脸的概率是很
大的,
但如果他捂着脸去上班却发现全公司每个已婚男人的脸都青了,这种概率是很小的。同理,
一个
RAM寄存器数据被冲毁的概率是很大的,但地址不相连的多个RAM同时被冲毁的概率是很小
的。

2、前两年,小匠学徒时,用过一次这种方法,但效果不太理想。当时感觉可能是概率论在
我这失
效了?现在回想起来,可能是备份的时机选的不好。结果将已经冲毁的数据又备份进去了。
这样
以来,恢复出来的数据自然也就不对了。


经验之四、话说指令冗余技术

前面有个朋友问到指令冗余,按匠人的理解,指令冗余,就是动作冗余。

举个例子,你要在某个输出口上输出一个高电平去驱动一个外部器件,你如果只送一次
“1”,那
么,当干扰来临时,这个“1”就有可能变成“0”了。正确的处理方式是,你定期刷新这个
“1”。那么,即使偶然受了干扰,它也能恢复回来。

除了I/O口动作的冗余,匠人强烈建议大家在下面各方面也采用这种方法:

1、LCD的显示。有时,也许你会用一些LCD的专用驱动芯片(如HT1621),这种芯片有个好
处,
即你只要将显示数据传送给它,它就会不断的自动扫描LCD。但是,你千万不要以为这样就
没你啥
事了。正确的处理方式是,要记得定期刷新送显数据(即使显示内容没有改变)。对于CPU
中自带
LCD DRIVER 的,也要定期刷新LCD RAM。

2、中断使能标志的设置。不要以为你在程序初始化段将中断设置好就OK了。应该在主程序
中适当
的地方定期刷新一下,以免你的中断被挂起来。

3、其它一些标志字和参数寄存器(包括你自己定义的),也要记得常常刷新。

4、其它一些你认为有必要反复刷新的地方。

经验之五、10种软件滤波方法

下面奉献——
匠人呕心沥血搜肠刮肚冥思苦想东拼西凑整理出来的10种软件滤波方法

1、限幅滤波法(又称程序判断滤波法)
    A、方法:
        根据经验判断,确定两次采样允许的最大偏差值(设为A)
        每次检测到新值时判断:
        如果本次值与上次值之差<=A,则本次值有效
        如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
    B、优点:
        能有效克服因偶然因素引起的脉冲干扰
    C、缺点
        无法抑制那种周期性的干扰
        平滑度差
   
2、中位值滤波法
    A、方法:
        连续采样N次(N取奇数)
        把N次采样值按大小排列
        取中间值为本次有效值
    B、优点:
        能有效克服因偶然因素引起的波动干扰
        对温度、液位的变化缓慢的被测参数有良好的滤波效果
    C、缺点:
        对流量、速度等快速变化的参数不宜

3、算术平均滤波法
    A、方法:
        连续取N个采样值进行算术平均运算
        N值较大时:信号平滑度较高,但灵敏度较低
        N值较小时:信号平滑度较低,但灵敏度较高
        N值的选取:一般流量,N=12;压力:N=4
    B、优点:
        适用于对一般具有随机干扰的信号进行滤波
        这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
    C、缺点:
        对于测量速度较慢或要求数据计算速度较快的实时控制不适用
        比较浪费RAM
       
4、递推平均滤波法(又称滑动平均滤波法)
    A、方法:
        把连续取N个采样值看成一个队列
        队列的长度固定为N
        每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
        把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
        N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
    B、优点:
        对周期性干扰有良好的抑制作用,平滑度高
        适用于高频振荡的系统   
    C、缺点:
        灵敏度低
        对偶然出现的脉冲性干扰的抑制作用较差
        不易消除由于脉冲干扰所引起的采样值偏差
        不适用于脉冲干扰比较严重的场合
        比较浪费RAM
       
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
    A、方法:
        相当于“中位值滤波法”+“算术平均滤波法”
        连续采样N个数据,去掉一个最大值和一个最小值
        然后计算N-2个数据的算术平均值
        N值的选取:3~14
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        测量速度较慢,和算术平均滤波法一样
        比较浪费RAM


6、限幅平均滤波法
    A、方法:
        相当于“限幅滤波法”+“递推平均滤波法”
        每次采样到的新数据先进行限幅处理,
        再送入队列进行递推平均滤波处理
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        比较浪费RAM

7、一阶滞后滤波法
    A、方法:
        取a=0~1
        本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
    B、优点:
        对周期性干扰具有良好的抑制作用
        适用于波动频率较高的场合
    C、缺点:
        相位滞后,灵敏度低
        滞后程度取决于a值大小
        不能消除滤波频率高于采样频率的1/2的干扰信号
       
8、加权递推平均滤波法
    A、方法:
        是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
        通常是,越接近现时刻的数据,权取得越大。
        给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
    B、优点:
        适用于有较大纯滞后时间常数的对象
        和采样周期较短的系统
    C、缺点:
        对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号
        不能迅速反应系统当前所受干扰的严重程度,滤波效果差

9、消抖滤波法
    A、方法:
        设置一个滤波计数器
        将每次采样值与当前有效值比较:
        如果采样值=当前有效值,则计数器清零
        如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
            如果计数器溢出,则将本次值替换当前有效值,并清计数器
    B、优点:
        对于变化缓慢的被测参数有较好的滤波效果,
        可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
    C、缺点:
        对于快速变化的参数不宜
        如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导
入系

10、限幅消抖滤波法
    A、方法:
        相当于“限幅滤波法”+“消抖滤波法”
        先限幅,后消抖
    B、优点:
        继承了“限幅”和“消抖”的优点
        改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
    C、缺点:
        对于快速变化的参数不宜

 

IIR 数字滤波器

A. 方法:
   确定信号带宽, 滤之。
   Y(n) = a1*Y(n-1) + a2*Y(n-2) + ... + ak*Y(n-k) + b0*X(n) + b1*X(n-1) + b2*X
(n-2) + ... + bk*X(n-k)

B. 优点:高通,低通,带通,带阻任意。设计简单(用matlab)
C. 缺点:运算量大。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(603)
发表于:2007-4-19 12:17:22
标签:CMOS  TTL  

0

TTLCMOS电平区别

1,TTL电平(什么是TTL电平):
输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
2,CMOS电平:
1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。
3,电平转换电路:
因为TTL和COMS的高低电平的值不一样(ttl 5v<==>cmos 3.3v),所以互相连接时需要电平的转换:就是用两个电阻对电平分压,没有什么高深的东西。哈哈
4,OC门,即集电极开路门电路,OD门,即漏极开路门电路,必须外界上拉电阻和电源才能将开关电平作为高低电平用。否则它一般只作为开关大电压和大电流负载,所以又叫做驱动门电路。
5,TTL和COMS电路比较:
1)TTL电路是电流控制器件,而coms电路是电压控制器件。
2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。COMS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。
3)COMS电路的锁定效应:
COMS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。这种效应就是锁定效应。当产生锁定效应时,COMS的内部电流能达到40mA以上,很容易烧毁芯片。
防御措施: 1)在输入端和输出端加钳位电路,使输入和输出不超过不超过规定电压。
2)芯片的电源输入端加去耦电路,防止VDD端出现瞬间的高压。
3)在VDD和外电源之间加线流电阻,即使有大的电流也不让它进去。
4)当系统由几个电源分别供电时,开关要按下列顺序:开启时,先开启COMS电路得电源,再开启输入信号和负载的电源;关闭时,先关闭输入信号和负载的电源,再关闭COMS电路的电源。
6,COMS电路的使用注意事项
1)COMS电路时电压控制器件,它的输入总抗很大,对干扰信号的捕捉能力很强。所以,不用的管脚不要悬空,要接上拉电阻或者下拉电阻,给它一个恒定的电平。
2)输入端接低内组的信号源时,要在输入端和信号源之间要串联限流电阻,使输入的电流限制在1mA之内。
3)当接长信号传输线时,在COMS电路端接匹配电阻。
4)当输入端接大电容时,应该在输入端和电容间接保护电阻。电阻值为R=V0/1mA.V0是外界电容上的电压。
5)COMS的输入电流超过1mA,就有可能烧坏COMS。
7,TTL门电路中输入端负载特性(输入端带电阻特殊情况的处理):
1)悬空时相当于输入端接高电平。因为这时可以看作是输入端接一个无穷大的电阻。
2)在门电路输入端串联10K电阻后再输入低电平,输入端出呈现的是高电平而不是低电平。因为由TTL门电路的输入端负载特性可知,只有在输入端接的串联电阻小于910欧时,它输入来的低电平信号才能被门电路识别出来,串联电阻再大的话输入端就一直呈现高电平。这个一定要注意。COMS门电路就不用考虑这些了。
8,TTL电路有集电极开路OC门,MOS管也有和集电极对应的漏极开路的OD门,它的输出就叫做开漏输出。OC门在截止时有漏电流输出,那就是漏电流,为什么有漏电流呢?那是因为当三机管截止的时候,它的基极电流约等于0,但是并不是真正的为0,经过三极管的集电极的电流也就不是真正的 0,而是约0。而这个就是漏电流。开漏输出:OC门的输出就是开漏输出;OD门的输出也是开漏输出。它可以吸收很大的电流,但是不能向外输出的电流。所以,为了能输入和输出电流,它使用的时候要跟电源和上拉电阻一齐用。OD门一般作为输出缓冲/驱动器、电平转换器以及满足吸收大负载电流的需要。
9,什么叫做图腾柱,它与开漏电路有什么区别?
TTL集成电路中,输出有接上拉三极管的输出叫做图腾柱输出,没有的叫做OC门。因为TTL就是一个三级关,图腾柱也就是两个三级管推挽相连。所以推挽就是图腾。一般图腾式输出,高电平400UA,低电平8MA

 

TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。
TTL电平信号对于计算机处理器控制的设备内部的数据传输是很理想的,
首先计算机处理器控制的设备内部的数据传输对于电源的要求不高以及热损耗也较低,
另外TTL电平信号直接与集成电路连接而不需要价格昂贵的线路驱动器以及接收器电路;
再者,计算机处理器控制的设备内部的数据传输是在高速下进行的,而TTL接口的操作恰能满足这个要求。TTL型通信大多数情况下,是采用并行数据传输方式,而并行数据传输对于超过10英尺的距离就不适合了。这是由于可靠性和成本两面的原因。因为在并行接口中存在着偏相和不对称的问题,这些问题对可靠性均有影响;另外对于并行数据传输,电缆以及连接器的费用比起串行通信方式来也要高一些。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(914)
发表于:2007-4-7 17:00:47
标签:问题  

0

为什么我不能个发表日志的内容呢呢?

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(454)
发表于:2007-4-6 17:00:06
标签:89C51  

5

89C51中英文资料

pdfpdf

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(2) | 阅读(1321)
总共 , 当前 /