这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » dajianli-单片机每天资料分享[资料收集]

共27条 1/3 1 2 3 跳转至

dajianli-单片机每天资料分享[资料收集]

工程师
2014-04-24 08:04:57     打赏



关键词: 单片机    

工程师
2014-04-24 08:06:23     打赏
2楼

第一发分享:

我是PC机底层编程转过来的,以前从来没接触过单片机,五个月前学习AVR,在这里学到很多东西。但也意识到电子工程师们的硬件编程思想与PC机底层编程思想上的很多不同,引发了一些思考。我说一说,供大家参考,只为学习,无意争论。 

我第一次看到教程里Delay()函数的代码时我吓了一跳,竟然让单片机空转以实现和外界同步,这怎么可能? 试想,如果PC机CPU空转一秒,那么音乐会断一秒、画面会停顿一秒、下载文件会断一秒,这怎么可行? 我看到很多单片机程序,它们的单片机99.9%的工作时间都在打空转,99.9%大家可能感到有些危言耸听,那就让我们算一算:

已内部8M频的AVR单片机来说,单指令周期仅为1/8 = 0.125us,那一毫秒可以执行多少个单周期指令?

1%0.125*1000 = 8000个

而我看到论坛里下到的绝大多数程序,两个延时函数之间代码的执行时间要远远小于8000个指令周期。 说实话,很多16K以上的程序,把所有延时函数去掉,总体能执行几毫秒就不错了。 换句话说,我说单片机的利用率小于0.01%还是口下留情了。 要说怎么解决问题,就要先找到问题,我问问大家,程序中,我们为什么延时? 原因很多,可能是外设速度太慢,也可能是为了躲过人眼视觉停留时间,等等。 

总之就是与外界不同步,而我们想要同步。 所以说这些延时应该是很有道理的,我不否定这一点,但问题的关键这些延时空转,我们为什么不能把这些时间回收起来做一些别的事呢? 试想,如果把这99.9%的时间回收,那可以一笔相当巨大的资源。 

有很多人有些特殊方法回收过这些空转时间,比如说在延时函数中做点事。 但这些往往都不通用,下面我说一些我的两种方法: 

1、前后台模式下延时时间回收的方法: 前后台模式就是大家最常用的主程序大循环 + 中断的模式。 首先解决外设太慢问题,像串口、键盘、LCD、SD卡等IO,这些收发可以建立外部缓冲区。

比如串口收发在中断中完成保存到缓冲区,而主程序操作缓冲区而不直接操纵串口,这已经看到很多人这样用了。但像矩阵键盘的缓冲区,我很少看到有人这么用,在中断中接收按键信息保存到缓冲区。

还有像LCD,我们一个个往显存中写数据是很浪费的,也应该建立缓冲,统一处理。 建立缓冲区这类方式中间有一些技术难点,比如像串口接收,无法判断对发是否全部发完,怎么办?可以设立定时,如果一个字节接收之后1ms之内没收到下一个,则认为接收完毕。这只是一个思想,具体应用大家掌握。 可能有人会说,除了外设太慢,还有像视觉停留的问题怎么解决,总不能让流水灯快到人眼都看不清吧。 这就我下面要说的问题,这些延时的时间怎么回收?就是全部放到定时中断中! 可能又有些人会说,书里、教程都说了,中断处理东西的时间要尽量短,你这样整个中断有太多判断、很长,时间很长,这不行。 这是一种教条的思想,把书读死了。可以在中断中这样处理,比如:

  void (*Task)(void);

 ISR {

         (*Task)(void); 

       } 

中断里用的内容通过函数指针来调用,这样可以在主程序根据需要时任意改变要执行的任务,还可以改任务的周期。所用的判断都是在主程序需中执行,然后改变指针的指向,来确定中断中下一步的任务。 

这样,在前后台系统中主程序将任务分配完,还有很多余力处理很多事。 比如有很多个键盘、LED点阵、数码管等,它们都需要实时响应,很容造成编程困难、响应迟钝,其实只要把延时的时间回收,处理这些就非常从容了。 可能还有人会说,有些项目用不了这么苛刻的时间,你回收的时间用不了,要那么多干嘛? 其实这时,你就可以用死循环扫描事件,可以实时响应。你的系统跟原来空循环延时比,实时性要高了不知多少倍。 

2、变异的协作式内核 先说说嵌入式操作系统的内核,简单的说,它就是个任务调度器,让多个任务在同一个CPU上同时执行,所谓同时也是相对的,无非就第一个任务执行几毫秒、第二个任务在执行几毫秒。。。外表看起来就是同时执行。 至于可剥夺式内核和协作式内核的区别,大家可以百度一下。

 说到能在单片机上用的嵌入式操作系统,大家会说出一些如uCosII、FreeOS等操作系统。 还有很多人对这些操作系统十分抗拒、十分反对,他们的理由是什么?

 1、这些操作系统占用大量RAM、ROM 

 2、这些实时操作系统所谓的实时是相对非实时操作系统的,跟裸机比实际上是慢了 

这些理由不是没道理,因为这些商用操作系统都是可剥夺式内核,它们的原则是保证最高优先级任务在可确定的时间内响应.

 它们的有优点是任务切换时间是确定的,不会随任务的多少而改变。 

有了这些确定性,让它们在商用产品大放光彩。因为其时间稳定性。 但它们的缺点也很明显,中断级节拍浪费很多时间。任务间同时调用时引发同步问题而引入许多如信号量、邮箱等机制浪费大量RAM、ROM。

 综上,可剥夺式内核稳定可定量,在越高级的单片机上越有优势,在8位机上可用,但需要大量裁剪,并不一定合适。 而协作式内核的核心思想是什么?它不像剥夺式内核保证最高级任务速度最快,而是保证所有任务的平均速度最快! 正如我前面的说法,我连续两个延时函数之间的代码很难超过1ms,甚至很难超过100us,我们可以将其忽略。

这样10个任务,第一个执行完主动放弃单片机控制权,交给第二个任务,第二个任务执行完主动放弃控制权,交给第三个任务。10个任务之间无间隙,每一个任务需要延时时,就主动放弃控制权。 

基于这种思想,我们的就达到了回收空转延时的目的,而且应为每个任务是执行完后主动放弃,所以不存在剥夺式内核的同步问题,基本不需要邮箱、信号量等机制,对RAM、ROM的要求就非常低了。 这样来看,协作式内核非常适合8位机。

但可能有太多嵌入式系统的书中对剥夺式内核不分场合的认可,造成很多人误解。而且uCos等系统的权威,也让很多RTOS作者争相效仿,没用对8位机的场合做合理分析。 商用系统中没有协作式内核,而民用的,还少有优秀的协作式内核,都是基于传统节拍。 传统协作式内核需要定时中断为时钟基准,也会间歇性打断任务,造成不必要的损失,这并不是我们想要的。 

我们其实可以仅仅是让定时器以大分频系数开着, 而不给其产生中断的机会。当任务将要放弃使用权时,读取定时器,作为时钟基准,然后清零。 做法一句两句说不清,而效果是什么?可以做到任务是以不受干扰,与裸机相同的工作状态,这是传统协作式内核做不到的,而仅当它需要延时了,才放弃使用权,将延时的时间给其它任务。这正符合我全文的目的 -- 回收空转延时时间 这样的内核体积会非常小,运行方式与裸机无异,仅仅是把空转延时时间干些其它事。对使用者还没什么要求,不想以往系统那么复杂。 可惜市面上并没有基于这种方式的内核,我已经写了一个,非常精简,运行稳定。但作为一个想应用实际的内核,还需要检验。

 


工程师
2014-04-24 08:07:03     打赏
3楼
手机排版不方便,电脑再排版吧。

工程师
2014-04-24 08:09:44     打赏
4楼
实际我对第一个分享不是很满意,这只是天马行空的想法,不过学电子要会想象才好。。。。

院士
2014-04-24 08:58:33     打赏
5楼
是看着眼晕

高工
2014-04-24 09:26:26     打赏
6楼
第一个分享,如果添加几个代码说明一下就更好了

助工
2014-04-24 10:41:02     打赏
7楼
写的很好,又学到了

工程师
2014-04-24 12:51:24     打赏
8楼
手机发帖,直接就是这样,没办法。。手机发,电脑排版吧

院士
2014-04-25 22:32:19     打赏
9楼
   钦佩版主“惜时如金”的思想,目前看来,这样做有点难度,但发展的看也许这就是改进使用方法、提高运行效率的一种方向。赞版主分享和那句话——搞电子的人要有奇想,其实所有的人都应该“多思”。

工程师
2014-04-28 16:35:52     打赏
10楼

第二发分享:

明星一:电阻


作为电子行业的工作者,电阻是无人不知无人不晓的。它的重要性,毋庸置疑。人们都说“电阻是所有电子电路中使用最多的元件。”

电阻,因为物质对电流产生的阻碍作用,所以称其该作用下的电阻物质。电阻将会导致电子流通量的变化,电阻越小,电子流通量越大,反之亦然。没有电阻或电阻很小的物质称其为电导体,简称导体。不能形成电流传输的物质称为电绝缘体,简称绝缘体。

 

在物理学中,用电阻(Resistance)来表示导体对电流阻碍作用的大小。导体的电阻越大,表示导体对电流的阻碍作用越大。不同的导体,电阻一般不同,电阻是导体本身的一种特性。电阻元件是对电流呈现阻碍作用的耗能元件。

 

电阻元件的电阻值大小一般与温度有关,衡量电阻受温度影响大小的物理量是温度系数,其定义为温度每升高1℃时电阻值发生变化的百分数。

 

电阻在电路中用“R”加数字表示,如:R1表示编号为1的电阻。电阻在电路中的主要作用为分流、限流、分压、偏置等。

 

1、参数识别:电阻的单位为欧姆(Ω),倍率单位有:千欧(KΩ),兆欧(MΩ)等。换算方法是:1兆欧=1000千欧=1000000欧电阻的参数标注方法有3种,即直标法、色标法和数标法。a、数标法主要用于贴片等小体积的电路,如:472 表示 47×100Ω(即4.7K); 104则表示100Kb、色环标注法使用最多,现举例如下:四色环电阻 五色环电阻(精密电阻)。

 

2、电阻的色标位置和倍率关系如下表所示:颜色 有效数字 倍率 允许偏差(%)银色 / x0.01 ±10金色 / x0.1 ±5黑色 0 +0 /棕色 1 x10 ±1红色 2 x100 ±2橙色 3 x1000 /黄色 4 x10000 /绿色 5 x100000 ±0.5蓝色 6 x1000000 ±0.2紫色 7 x10000000 ±0.1灰色 8 x100000000 /白色 9 x1000000000 / 

 

明星二:电容

 

电容(或电容量, Capacitance)指的是在给定电位差下的电荷储藏量;记为C,国际单位是法拉(F)。一般来说,电荷在电场中会受力而移动,当导体之间有了介质,则阻碍了电荷移动而使得电荷累积在导体上;造成电荷的累积储存,最常见的例子就是两片平行金属板。也是电容器的俗称。

1、电容在电路中一般用“C”加数字表示(如C13表示编号为13的电容)。电容是由两片金属膜紧靠,中间用绝缘材料隔开而组成的元件。电容的特性主要是隔直流通交流。电容容量的大小就是表示能贮存电能的大小,电容对交流信号的阻碍作用称为容抗,它与交流信号的频率和电容量有关。容抗XC=1/2πf c (f表示交流信号的频率,C表示电容容量)电话机中常用电容的种类有电解电容、瓷片电容、贴片电容、独石电容、钽电容和涤纶电容等。 请登陆:输配电设备网 浏览更多信息

 

2、识别方法:电容的识别方法与电阻的识别方法基本相同,分直标法、色标法和数标法3种。电容的基本单位用法拉(F)表示,其它单位还有:毫法(mF)、微法(uF)、纳法(nF)、皮法(pF)。其中:1法拉=103毫法=106微法=109纳法=1012皮法容量大的电容其容量值在电容上直接标明,如10 uF/16V容量小的电容其容量值在电容上用字母表示或数字表示字母表示法:1m=1000 uF 1P2=1.2PF 1n=1000PF 数字表示法:一般用三位数字表示容量大小,前两位表示有效数字,第三位数字是倍率。如:102表示10×102PF=1000PF 224表示22×104PF=0.22 uF3、电容容量误差表符 号 F G J K L M允许误差 ±1% ±2% ±5% ±10% ±15% ±20%如:一瓷片电容为104J表示容量为0. 1 uF、误差为±5%。

 

明星三:晶体二极管

 

晶体二极管(crystaldiode)固态电子器件中的半导体两端器件。这些器件主要的特征是具有非线性的电流-电压特性。此后随着半导体材料和工艺技术的发展,利用不同的半导体材料、掺杂分布、几何结构,研制出结构种类繁多、功能用途各异的多种晶体二极管。制造材料有锗、硅及化合物半导体。晶体二极管可用来产生、控制、接收、变换、放大信号和进行能量转换等。

晶体二极管在电路中常用“D”加数字表示,如: D5表示编号为5的二极管。

 

1、作用:二极管的主要特性是单向导电性,也就是在正向电压的作用下,导通电阻很小;而在反向电压作用下导通电阻极大或无穷大。正因为二极管具有上述特性,无绳电话机中常把它用在整流、隔离、稳压、极性保护、编码控制、调频调制和静噪等电路中。电话机里使用的晶体二极管按作用可分为:整流二极管(如1N4004)、隔离二极管(如1N4148)、肖特基二极管(如BAT85)、发光二极管、稳压二极管等。

 

2、识别方法:二极管的识别很简单,小功率二极管的N极(负极),在二极管外表大多采用一种色圈标出来,有些二极管也用二极管专用符号来表示P极(正极)或N极(负极),也有采用符号标志为“P”、“N”来确定二极管极性的。发光二极管的正负极可从引脚长短来识别,长脚为正,短脚为负。

 

3、测试注意事项:用数字式万用表去测二极管时,红表笔接二极管的正极,黑表笔接二极管的负极,此时测得的阻值才是二极管的正向导通阻值,这与指针式万用表的表笔接法刚好相反。

 

4、常用的1N4000系列二极管耐压比较如下:型号 1N40011N40021N4003 1N4004 1N40051N40061N4007耐压(V) 50 100 200 400 600 800 1000电流(A) 均为1 。

 

明星四:稳压二极管

 

稳压二极管(又叫齐纳二极管),此二极管是一种直到临界反向击穿电压前都具有很高电阻的半导体器件.

稳压二极管在电路中常用“ZD”加数字表示,如:ZD5表示编号为5的稳压管。

 

1、稳压二极管的稳压原理:稳压二极管的特点就是击穿后,其两端的电压基本保持不变。这样,当把稳压管接入电路以后,若由于电源电压发生波动,或其它原因造成电路中各点电压变动时,负载两端的电压将基本保持不变。

 

2、故障特点:稳压二极管的故障主要表现在开路、短路和稳压值不稳定。在这3种故障中,前一种故障表现出电源电压升高;后2种故障表现为电源电压变低到零伏或输出不稳定。常用稳压二极管的型号及稳压值如下表:型 号 1N47281N4729 1N4730 1N4732 1N4733 1N4734 1N4735 1N4744 1N4750 1N4751 1N4761稳压值 3.3V 3.6V 3.9V 4.7V 5.1V 5.6V 6.2V 15V 27V 30V 75V 。

明星五:电感

 

电感:当线圈通过电流后,在线圈中形成磁场感应,感应磁场又会产生感应电流来抵制通过线圈中的电流。我们把这种电流与线圈的相互作用关系称其为电的感抗,也就是电感,单位是“亨利”(H)。也可利用此性质制成电感元件。

 


电感在电路中常用“L”加数字表示,如:L6表示编号为6的电感。电感线圈是将绝缘的导线在绝缘的骨架上绕一定的圈数制成。直流可通过线圈,直流电阻就是导线本身的电阻,压降很小;当交流信号通过线圈时,线圈两端将会产生自感电动势,自感电动势的方向与外加电压的方向相反,阻碍交流的通过,所以电感的特性是通直流阻交流,频率越高,线圈阻抗越大。电感在电路中可与电容组成振荡电路。电感一般有直标法和色标法,色标法与电阻类似。如:棕、黑、金、金表示1uH(误差5%)的电感。

 

电感的基本单位为:亨(H) 换算单位有:1H=103mH=106uH。

 

明星六:变容二极管

 

变容二极管(Varactor Diodes)又称"可变电抗二极管"。是一种利用PN结电容(势垒电容)与其反向偏置电压Vr的依赖关系及原理制成的二极管,其结构如右图所示。


管变容二极管是根据普通二极管内部 “PN结” 的结电容能随外加反向电压的变化而变化这一原理专门设计出来的一种特殊二极管。变容二极管在无绳电话机中主要用在手机或座机的高频调制电路上,实现低频信号调制到高频信号上,并发射出去。在工作状态,变容二极管调制电压一般加到负极上,使变容二极管的内部结电容容量随调制电压的变化而变化。变容二极管发生故障,主要表现为漏电或性能变差:(1)发生漏电现象时,高频调制电路将不工作或调制性能变差。(2)变容性能变差时,高频调制电路的工作不稳定,使调制后的高频信号发送到对方被对方接收后产生失真。出现上述情况之一时,就应该更换同型号的变容二极管。

 

明星七:晶体三极管

 

晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把正块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,排列方式有PNP和NPN两种。


晶体三极管在电路中常用“Q”加数字表示,如:Q17表示编号为17的三极管。

 

1、特点:晶体三极管(简称三极管)是内部含有2个PN结,并且具有放大能力的特殊器件。它分NPN型和PNP型两种类型,这两种类型的三极管从工作特性上可互相弥补,所谓OTL电路中的对管就是由PNP型和NPN型配对使用。电话机中常用的PNP型三极管有:A92、9015等型号;NPN型三极管有:A42、9014、9018、9013、9012等型号。

 

2、晶体三极管主要用于放大电路中起放大作用,在常见电路中有三种接法。为了便于比较,将晶体管三种接法电路所具有的特点列于下表,供大家参考。名称 共发射极电路共集电极电路(射极输出器) 共基极电路输入阻抗 中(几百欧~几千欧) 大(几十千欧以上) 小(几欧~几十欧)输出阻抗 中(几千欧~几十千欧) 小(几欧~几十欧)大(几十千欧~几百千欧)电压放大倍数 大 小(小于1并接近于1)大电流放大倍数 大(几十) 大(几十) 小(小于1并接近于1)功率放大倍数大(约30~40分贝) 小(约10分贝) 中(约15~20分贝)频率特性高频差 好 好续表应用 多级放大器中间级,低频放大 输入级、输出级或作阻抗匹配用 高频或宽频带电路及恒流源电路 。

 

明星八:场效应管

 

场效应晶体管(Field Effect Transistor缩写(FET))简称场效应管。由多数载流子参与导电,也称为单极型晶体管。它属于电压控制型半导体器件。具有输入电阻高(108~109Ω)、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,现已成为双极型晶体管和功率晶体管的强大竞争者。


1、场效应晶体管具有较高输入阻抗和低噪声等优点,因而也被广泛应用于各种电子设备中。尤其用场效管做整个电子设备的输入级,可以获得一般晶体管很难达到的性能。

 

2、场效应管分成结型和绝缘栅型两大类,其控制原理都是一样的。如图1-1-1是两种型号的表示符号:

 

3、场效应管与晶体管的比较

 

(1)场效应管是电压控制元件,而晶体管是电流控制元件。在只允许从信号源取较少电流的情况下,应选用场效应管;而在信号电压较低,又允许从信号源取较多电流的条件下,应选用晶体管。

 

(2)场效应管是利用多数载流子导电,所以称之为单极型器件,而晶体管是即有多数载流子,也利用少数载流子导电。被称之为双极型器件。

 

(3)有些场效应管的源极和漏极可以互换使用,栅压也可正可负,灵活性比晶体管好。

 

(4)场效应管能在很小电流和很低电压的条件下工作,而且它的制造工艺可以很方便地把很多场效应管集成在一块硅片上,因此场效应管在大规模集成电路中得到了广泛的应用。

 

明星九:传感器

 

传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其他装置或器官

 

 

国家标准GB7665-87对传感器下的定义是:“能感受规定的被测量件并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。

 

“传感器”在新韦式大词典中定义为:

 

“从一个系统接受功率,通常以另一种形式将功率送到第二个系统中的器件”。

 

根据这个定义,传感器的作用是将一种能量转换成另一种能量形式,所以不少学者也用“换能器-Transducer”来称谓“传感器-Sensor”。

 

明星十:变压器

 

变压器(Transformer)是利用电磁感应的原理来改变交流电压的装置,主要构件是初级线圈、次级线圈和铁心(磁芯)。在电器设备和无线电路中,常用作升降电压、匹配阻抗,安全隔离等。在发电机中,不管是线圈运动通过磁场或磁场运动通过固定线圈,均能在线圈中感应电势,此两种情况,磁通的值均不变,但与线圈相交链的磁通数量却有变动,这是互感应的原理。变压器就是一种利用电磁互感应,变换电压,电流和阻抗的器件。变压器的功能主要有:电压变换;电流变换,阻抗变换;隔离;稳压(磁饱和变压器)等。

 


共27条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]