存档

2007年4月 的存档

中断去抖

2007年4月25日

中断时间很宝贵,不能有任何延时,只能在里面设置N多的标志位,出中断处理所有需要响应的程序。

按键去抖,我的做法是:
1、响应按键中断后做一个按键开始的标志位,并开始定时器。
2、在定时器20ms后判断按键还存在不,再过20ms后再判断,如果都有按键,说明是真的有按键。
3、关闭定时器,清按键开始标志位,并执行按键程序。

Jacob 技术

各种存储器解惑

2007年4月19日

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。

举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通过记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来 Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

目前Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一快的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba。

Jacob 技术

无线串口

2007年4月17日

给小车做了个无线串口,超再生模块做的,比市面上买的无线数传设备差多了,波特率上不去,最高9600,4800比较稳定,不过用来调试小车应该是足够了。

原理很简单就是把串口数据通过无线模块发送出去,因为无线模块没有数据传送时是低电平的,而串口数据正好相反,所以加了块7404反向,连单片机也省了。手头上没有74HC04,用的LS的,可能波特率提不上去也有这个因素吧。芯片取电接收端用的usb口直接取电,发送端把串口1号角改成5V电源线了。谁能告诉我RS232怎么偷电?MAX232出来的电平过7805以后只有3.5V左右了,完全不能用。难道要加开关电源?

另外S12的串口程序写出来了,简简单单的发送数据,呵呵。

从Freescale申请的样片参加电子设计大赛的时候送过来了,两片9S12A512,两片MC33886,芯片价值300多块,邮费600多。。。。只能说明Freescale真有钱。费了好大周折好不容易从学校那里搞的33886竟然能这么容易到手。

Jacob 技术

智能小车进度20070410

2007年4月10日

调试了10路ATD转换,实现红外管测量路径。红外管有一只损坏,需要更换。十个红外对管性能不一,需要一个一个调整。

调试S12的ECT模块,实现定时计数,从而实现霍尔速度反馈。但是没有量化到时间,需要用示波器调的精确到ms级。

下面需要调的是S12的串行口和无线数传模块。

飞思卡尔的MC33886学校不一定能提供,能从学校搞到最好,如果搞不到就申请样片或者尝试用mos管替代。

Jacob 技术

智能小车进度20070409

2007年4月9日

昨天实现了PWM控制舵机转向,测试的时候出了个小差错,测试用的是函数发生器,输出方波信号,但是这个方波信号不能是函数输出,必须要TTL输出,也就是0-5V,而不是-5V到5V。TTL输出才正常。

还完成了摄像头采样的中断部分。中断向量的地方还不是很清楚。

今天焊接了前头的红外传感器部分,晚上去实验室调试下。

至于整体代码,比赛后再公布吧

Freescale新公布的CW4.6总体上来说还是比较好用的,编译使用与3.1版还是有很大区别的,不过容易上手。

Jacob 技术

为Windows Server2003企业版安装红外驱动

2007年4月6日

最近受病毒骚扰,重装系统时装了Windows Server2003+SP2,结果其他的问题没了,发现系统识别不出来我的所有红外设备,打印机,手机都用不了了。于是找到了这个办法。。。。

Windows Server2003企业版默认是不支持红外的。如果你跟我一样使用这个版本,并且需要使用红外打印机之类的东西,那么用这个XP下的驱动程序。使用方法是解压,右键点irda_install.inf选安装。但是上面的方法只能装完驱动,但是不能装相关的红外监视服务,红外打印机还是永不起来。安装方法是把所有的inf复制到Windows\Inf目录下然后重新安装红外的设备的驱动.然后它会提示缺少一些文件,去驱动解压目录找。

Jacob 建站

verilog中reg和wire类型的区别和用法

2007年4月1日

reg相当于存储单元,wire相当于物理连线

Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。z代表高阻状态或浮空量。

线型数据包括wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。

两者的区别是:即存器型数据保持最后一次的赋值,而线型数据需要持续的驱动

输入端口可以由net/reg驱动,但输入端口只能是net;输出端口可以使net/reg类型,输出端口只能驱动net;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型
用关键词inout声明一个双向端口, inout端口不能声明为寄存器类型,只能是net类型

Jacob 技术

阻塞赋值与非阻塞赋值

2007年4月1日

阻塞式(blocking)的操作符为 “ = ”
非阻塞式(non-blocking)的操作符为 “ <= ”

用verilog等硬件描述语言,心中要有电路的概念,阻塞赋值,可以认为只有一个步骤的操作,是在前一个赋值语句结束后再开始赋值的
而非阻塞赋值,可以看作两个步骤的过程,在赋值开始时,计算右边的值,在赋值结束时刻,计算左边的值

Jacob 技术

关于状态机

2007年4月1日

两段式FSM描述方法:1,采用同步时序描述状态转移。2,用组合逻辑判断状态转移条件。弱点是输出一般使用组合逻辑描述,若以产生毛刺,而且影响实现速率
三段式FSM描述方法:1,采用同步时序描述状态转移。2,采用组合逻辑判判断状态转移条件。3,用同步时序电路描述每个状态的输出。

Jacob 技术