最新日志

发表于:2008-3-29 20:02:35
标签:无标签

0

uc/os II的临界态及任务状态

一、uc/os怎样处理临界段代码

临界段(critical section

Uc/os在处理临界段代码时必须先关中断,等处理完毕后再开中断

进入和退出临界段宏指令为:

OS_ENTER_CRITICAL();  OS_EXIT_CRITICAL()

在不同的处理器在OS_CPU.H文件中进行不同的定义

OS_ENTER_CRITICAL();  OS_EXIT_CRITICAL()可以用不同的方法实现,通过CRICITAL_METHOD可以选择具体那种方法

CRITICAL_METHOD=1时,直接用处理器指令关中断和开中断

CRITICAL_METHOD=2时,在堆栈中保存中断的开关状态,然后再关中断,在执行OS_EXIT_CRITICAL()时,从堆栈中弹出原来中断的开关状态。

CRITICAL_METHOD=3时,利用扩展功能得到当前处理器状态的值,并保存在c函数的局部变量中。利用该变量恢复原先的中断状态。

 

二、任务状态

睡眠态:指任务驻留在程序空间,没有交由uc/osII管理。

就绪态:通过调用OSTaskCreate()OSTaskCreateExt()建立任务,建立后的任务即进入就绪态

运行态:优先级最高的就绪态的任务将进入运行态,就绪的任务只有当所有优先级高于这个任务的任务转为等待状态或者被删除时,才能进入运行态。

等待状态:正在运行的任务通过调用OSTimeDly()OSTimeDlyHMSM()使自身进入等待状态,让下一个进入就绪态的优先级最高的任务进入运行状态,等待的时间过去以后,系统服务函数OSTimeTick()使延迟了的任务进入就绪态。

中断服务态:被中断的任务即进入了中断服务态,这时正在执行的任务被挂起,中断服务程序控制了CPU的使用权,在中断服务程序中可能会报告多了事件的发生,使一个或多个任务进入就绪态,这样在中断服务程序返回之前,uc/osII要判断哪个就绪态的任务的优先级最高,在中断返回时执行该任务

当所有的任务都在等待事件的发生或等待延迟时间的结束时,uc/os将执行空闲任务(idle_task

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(233)
发表于:2008-3-29 19:12:02
标签:无标签

0

单片机电路防干扰的设计经验(转载)

在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个:
    (1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可 能成为干扰源。
    (2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传 播路径是通过导线的传导和空间的辐射。
    (3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大器等。
    抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的 抗干扰性能。
    (类似于传染病的预防)
1 抑制干扰源
   抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优 先考虑和最重要   的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容
   来实现。减小干扰源的 di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。
  抑制干扰源的常用措施如下:
    (1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加 续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。
    (2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。
    (3)给电机加滤波电路,注意电容、电感引线要尽量短。
    (4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的 影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电
        阻,会影响滤波效果。
    (5)布线时避免90度折线,减少高频噪声发射。
    (6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能 会把可控硅击穿的)。
  按干扰的传播路径可分为传导干扰和辐射干扰两类。
    所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和 有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰 噪声的传播,有时也可加隔离光耦来解决。电
    源噪声的危害最大, 要特别注意处理。  所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。 一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加蔽
    罩。
2 切断干扰传播路径的常用措施如下:
    (1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就解决了一大半。许多单片机对电源噪声很敏感, 要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机
        的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。
    (2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波电路)。 控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波
        电路)。
    (3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。此措施可解决许多疑难问题。
    (4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源 (如电机,继电器)与敏感元件(如单片机)远离。
    (5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片 引脚排列时已考虑此要求。
    (6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路板边缘。
    (7)在单片机I/O口,电源线,电路板连接线等关键地方使用抗干扰元件 如磁珠、磁环、电
        源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。
3 提高敏感器件的抗干扰性能
    提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。
  提高敏感器件抗干扰性能的常用措施如下:
    (1)布线时尽量减少回路环的面积,以降低感应噪声。
    (2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。
    (3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。
    (4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X25043,X25045等,可大幅度提高整个电路的抗干扰性能。
    (5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。
    (6)IC器件尽量直接焊在电路板上,少用IC座。

点击此处查看原文 >>

系统分类: PCB   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(192)
发表于:2008-3-13 21:16:27
标签:无标签

0

数学及电子中常用希腊字母读音

Αα:阿尔法 Alpha
Ββ:贝塔 Beta
Γγ:伽玛 Gamma
Δδ:德尔塔 Delte
Εε:艾普西龙 Epsilon
ζ :捷塔 Zeta
Ζη:依塔 Eta
Θθ:西塔 Theta
Ιι:艾欧塔 Iota
Κκ:喀帕 Kappa
Λλ:拉姆达 Lambda
Μμ:缪 Mu
Νν:拗 Nu
Ξξ:克西 Xi
Οο:欧麦克轮 Omicron
Ππ:派 Pi
Ρρ:柔 Rho
Σσ:西格玛 Sigma
Ττ:套 Tau
Υυ:宇普西龙 Upsilon
Φφ:fai Phi
Χχ:器 Chi
Ψψ:普赛 Psi
Ωω:欧米伽 Omega

点击此处查看原文 >>

系统分类: 专业英语   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(390)
发表于:2008-3-12 8:12:35
标签:无标签

0

单片机开发辅助软件全集

  在单片机开发过程中,现在网络上有一些辅助软件,虽然并不能解决什么关键问题,但从提高效率的角度还是非常实用的,如数码管代码生成软件、定时/计数器初值计算软件、串行通信波特率计算软件、串行调试助手等。现将这些软件汇总在附件中,需要的朋友不妨下载使用。点击下载

点击此处查看原文 >>

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

评论(2) | 阅读(250)
发表于:2008-3-2 13:57:01
标签:无标签

0

卡耐基与人相处的基本原则

  1. 不要批评、职责和抱怨别人
  2. 真诚的赞美他人
  3. 尽量满足对方的需求
  4. 争论中没有赢家
  5. 避免树立敌人
  6. 以友好的方式开始
  7. 倾听他人,谦虚待己
  8. 同情的力量
  9. 当你错了,真诚的承认吧
  10. 与他人合作的秘密
  11. 站在别人的角度看问题

点击此处查看原文 >>

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

评论(0) | 阅读(240)
发表于:2008-2-28 20:52:53
标签:无标签

0

PCB布局原则(华为)转载

PCB布局
1. 根据结构图设置板框尺寸,按结构要素布置安装孔、接插件等需要定位的器件,并给这些器件赋予不可移动属性。 按工艺设计规范的要求进行尺寸标注。
2. 根据结构图和生产加工时所须的夹持边设置印制板的禁止布线区、禁止布局区域。根据某些元件的特殊要求,设置禁止布线区。
3. 综合考虑PCB性能和加工的效率选择加工流程。
加工工艺的优选顺序为:元件面单面贴装——元件面贴、插混装(元件面插装焊接面贴装一次波峰成型)——双面贴装——元件面贴插混装、焊接面贴装。
4. 布局操作的基本原则
A. 遵照“先大后小,先难后易”的布置原则,即重要的单元电路、核心元器件应当优先布局.
B. 布局中应参考原理框图,根据单板的主信号流向规律安排主要元器件.
C. 布局应尽量满足以下要求:总的连线尽可能短,关键信号线最短;高电压、大电流信号与小电流,低电压的弱信号完全分开;模拟信号与数字信号分开;高频信号与低频信号分开;高频元器件的间隔要充分.
D. 相同结构电路部分,尽可能采用“对称式”标准布局;
E. 按照均匀分布、重心平衡、版面美观的标准优化布局; 7
Q/DKBA-Y004-1999
F. 器件布局栅格的设置,一般IC器件布局时,栅格应为50--100 mil,小型表面安装器件,如表面贴装元件布局时,栅格设置应不少于25mil。
G. 如有特殊布局要求,应双方沟通后确定。
5. 同类型插装元器件在X或Y方向上应朝一个方向放置。同一种类型的有极性分立元件也要力争在X或Y方向上保持一致,便于生产和检验。
6. 发热元件要一般应均匀分布,以利于单板和整机的散热,除温度检测元件以外的温度敏感器件应远离发热量大的元器件。
7. 元器件的排列要便于调试和维修,亦即小元件周围不能放置大元件、需调试的元、器件周围要有足够的空间。
8. 需用波峰焊工艺生产的单板,其紧固件安装孔和定位孔都应为非金属化孔。当安装孔需要接地时, 应采用分布接地小孔的方式与地平面连接。
9. 焊接面的贴装元件采用波峰焊接生产工艺时,阻、容件轴向要与波峰焊传送方向垂直, 阻排及SOP(PIN间距大于等于1.27mm)元器件轴向与传送方向平行;PIN间距小于1.27mm(50mil)的IC、SOJ、PLCC、QFP等有源元件避免用波峰焊焊接。
10. BGA与相邻元件的距离>5mm。其它贴片元件相互间的距离>0.7mm;贴装元件焊盘的外侧与相邻插装元件的外侧距离大于2mm;有压接件的PCB,压接的接插件周围5mm内不能有插装元、器件,在焊接面其周围5mm内也不能有贴装元、器件。
11. IC去偶电容的布局要尽量靠近IC的电源管脚,并使之与电源和地之间形成的回路最短。
12. 元件布局时,应适当考虑使用同一种电源的器件尽量放在一起, 以便于将来的电源分隔。
13. 用于阻抗匹配目的阻容器件的布局,要根据其属性合理布置。
串联匹配电阻的布局要靠近该信号的驱动端,距离一般不超过500mil。
匹配电阻、电容的布局一定要分清信号的源端与终端,对于多负载的终端匹配一定要在信号的最远端匹配。
14. 布局完成后打印出装配图供原理图设计者检查器件封装的正确性,并且确认单板、背板和接插件的信号对应关系,经确认无误后方可开始布线。

点击此处查看原文 >>

系统分类: PCB   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(350)
发表于:2008-2-28 11:10:27
标签:无标签

0

液晶模块c51程序调试心得(一)

这几天在调试TG12864B的液晶模块,在调试过程中遇到了很多问题,最终能够顺利的完成调试,颇感欣慰,下面就调试过程中出现的问题及解决方法作一回顾总结。

首先,在硬件调试方面,出现的问题主要是在对比度调节上,由于调节电位器在protel设计中按默认,把调整端设在旁边引脚而不是中间引脚上造成了错误,由于加工出了电路板只能在PCB板上进行修改了。

接下来就是在软件调试方面了,在网上收集和下载了TG12864B的pdf资料,通过对资料的学习,对该模块的工作过程有了一定的认识,应该说液晶模块的驱动资料基本上还是类似的,比如与LCD1602。但TG12864B的一个显著不同点是128×64的液晶分成左右两部分进行操作,这样给软件编程造成了一定的困难,感觉要自己完成根据资料写驱动程序挺困难的,于是拼命的网上收集现成的驱动程序。我下载驱动程序的一个要求就是程序书写一定要规范,所有的端口要有定义,且可读性好,还有尽量考虑采用c51程序,模块化和可移植性好啊。通过筛选,感觉长沙人公司的驱动程序挺不错的。于是乎就进入了程序的调试过程。

该源程序为:zip

点击此处查看原文 >>

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

评论(0) | 阅读(331)
发表于:2008-2-3 14:33:29
标签:无标签

0

ucos学习二:Taskstart和Task

2008-2-3  多云转晴  难得一见的太阳

一、Taskstart()程序

OS_ENTER_CRITICAL() –禁止处理器相应中断请求

OS_EXIT_CRITICAL()  --允许处理器响应中断请求

PC_VectSet(0x80,OSTickISR)—把计算机用于时钟节拍的中断服务程序作为Uc/OS的中断服务程序

PC_DOSReturn() –多任务运行被终止,返回到DOS环境

OSCtxSwCtr—一秒钟内任务切换次数的全局变量

OSTimeDlyHMSM(0,0,1,0)—TaskStart()任务自身挂起1suc/os开始任务调度

二、Task()

OSSemPend(RandomSem,0,&err)—查询信号量,并将需要查询的信号量的指针传递给该函数

OSSemPost(RandomSem)—释放信号量

OSTimeDly(1)—延时一个时钟节拍,挂起该任务,运行下一个最高优先级的任务

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(421)
发表于:2008-2-2 20:59:19
标签:无标签

1

ucos学习一:主函数main的认识

c程序都有一个main()函数,对于ucos的例子一的main函数对照书本进行了汉化注释和说明。

void main (void)

{

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);

 /* 清屏,前景色为白色,背景色为黑色*/   

    OSInit();       /*初始化 uC/OS-II,建立空闲任务和计算CPU利用率的任务 */

    PC_DOSSaveReturn();          /* 保存当前的 DOS环境  */

    PC_VectSet(uCOS, OSCtxSw);       /* 执行 uC/OS-II's 中的任务切换处理函数,这里实用0x80的向量*/

    RandomSem   = OSSemCreate(1);     /* 建立随机数信号量,通知uc/os在某一时刻只有一个任务可以调用随机数产生函数*/                

    TaskFPUFlag = _8087;

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);

  /*建立任务,第一参数为指向任务运行代码的指针,第二参数为指向任务初始化数据的指针,第三参数为任务的堆栈栈顶,第四参数为指定任务的优先级,0为最高*/

    OSStart();   /*开启多任务,判断所有建立的任务中哪个的优先级最高,并开始运行这个任务*/                      

}

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(314)
总共 , 当前 /