存档

文章标签 ‘MCU’

智能小车进度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 技术

S12单片机BDM仿真器莫名损坏

2007年3月2日

学校做小车竞赛用的Freescale的S12系列单片机配了一个BDM调试器。清华的,芯片是MC86HC908JB8,昨天一直用的好好的,今天插电脑上就没反应了。无法识别,没有提示安装驱动。服了清华的这东西。。。。

还好该调试的程序都调试出来了,PWM和ADC基本都正常工作。

Jacob 技术

AVR单片机驱动I2C(TWI)器件

2007年2月19日

AVR系列单片机内置有TWI控制器,与标准I2C总线兼容。24C256是256K位串行EEPROM芯片,含有32768个字节。

今天调试通了M16的TWI接口,成功从AT24C256器件中写入和读出一个字节内容。程序省略了检验及错误处理部分,为了增强程序健壮性,实际应用中应加入。

主要程序清单及注释:

(程序仅从发送和接收一个字节为例,连续读写应该也差不多吧)

//发送模式

TWCR=0xa4; //发出START信号

while(!(TWCR & 0×80)); //等待TWINT置位,TWINT置位表示START信号已发出

TWDR=0xa0; //表示将要向从机发送数据,以及从机的地址

TWCR=0×84; //TWINT清零,启动发送地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWDR=0×01; //写入高字节储存器地址

TWCR=0×84; //TWINT清零,启动发送储存器地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWDR=0×01; //写入低字节储存器地址

TWCR=0×84; //TWINT清零,启动发送储存器地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWDR=0×55; //写入要储存的数据

TWCR=0×84; //TWINT清零,启动发送数据

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWCR=0×94; //发出STOP信号,数据开始写入储存器

//接受模式

TWCR=0xa4; //发出START信号

while(!(TWCR & 0×80)); //等待TWINT置位,TWINT置位表示START信号已发出

TWDR=0xa0; //发出伪写操作,及从机地址

TWCR=0×84; //TWINT清零,启动发送地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWDR=0×01; //写入要读取的高字节储存器地址

TWCR=0×84; //TWINT清零,启动发送储存器地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWDR=0×01; //写入要读取的低字节储存器地址

TWCR=0×84; //TWINT清零,启动发送储存器地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWCR=0xa4; //再次发出START信号

while(!(TWCR & 0×80)); //等待TWINT置位,TWINT置位表示START信号已发出

TWDR=0xa1; //发出读操作,及从机地址

TWCR=0×84; //TWINT清零,启动发送地址

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

TWCR=0×84; //要求从机发送数据

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示从机已发出数据

RECEIVE=TWDR; //读出数据

TWCR=0×94; //发出STOP信号,数据开始写入储存器

注:

连续写的时候只要多次循环下面三句即可:

TWDR=0×55; //写入要储存的数据

TWCR=0×84; //TWINT清零,启动发送数据

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示命令已发出

连续读的时候要多次循环这个:

TWCR=0xc4; //要求从机发送数据

while(!(TWCR&0×80)); //等待TWINT置位,TWINT置位表示从机已发出数据

RECEIVE=TWDR; //读出数据

Jacob 技术

3310手机屏的问题

2007年2月11日

今天用AVR驱动3310手机屏,发现了两个问题:
1。3310屏分辨率是6bank*84bit的,但是在写完一个bank84bit后继续写,不能自动转到下一个bank,会丢失18位的数据,第十九位开始写到下一个bank。
//知道了,可能是屏的问题,从阿莫那儿买的两块屏有一块有这个问题

2。3310说明文档中提到V这个为是控制垂直显示和水平显示的,但是在实际应用中不管是V=0还是V=1都是水平显示。
//这个还不知道,有空试试

以上两个问题不知道是不是属实。有待研究。

关于具体驱动的问题,整理好了再发上来

Jacob 技术

AVR单片机的主要特性(简要精华版)

2006年12月25日

  AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。

AVR的主要特性

  高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。

  早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。

  AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机 (CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为其后盾的。

   AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。

   AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。

  AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。

  AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。

  增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。

  面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。SPI支持主/从机等4种组合的多机通信。

  AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。

  AVR单片机具有多种省电休眠模式,且可宽电压运行(5-2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。

  AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器 /计数器、具替换功能的I/O端口…… )于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。

  综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。

Jacob 技术

Makefile批处理脚本通用模板

2006年11月29日

EXEC=hello
OBJS=hello1.o#hello2.o hello3.o
LIBS+= #-lcrypt -lm
all: $(EXEC)
$(EXEC):$(OBJS)
$(CC)$(CFLAGS)$(LDFLAGS) -o $(EXEC)$(OBJS)$(LIBS)
clean:
rm -f $(OBJS)$(EXEC)
#Note

Jacob 技术