推荐阅读最新更新时间:2024-11-06 15:47
关于单片机死机的一些问题
最近的一个项目中测试系统的高低温实验,结果意外的发现经过高低温实验后(80℃到-20摄氏度)单片机有些已经死机了,所以不得不着手研究一下这个问题,在网上查阅资料后,基本上可以归结于以下几个问题: 1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象 2. 中断变量处理不妥。若定义某些会在中断中修改的 全局变量 ,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些 变量定义 时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。 3. 地址溢出,常见错误为指针操作错误。我要
[单片机]
80C32E单片机与TLV2548串行A/D的接口设计
O 引言 TLV2548是TI公司生产的12位、多通道、小尺寸、低功耗、高速串行A/D转换芯片,它有一个专与DSP连接的帧同步(FS)信号,故可广泛用于DSP高速数据采集系统中。 MCS-51系列单片机历经了多年的发展,其应用技术已十分稳定可靠。TLV2548尺寸小、接口简单。且这两种芯片都有过上天飞行的经历,因此,可以适用低成本、控制简单、数据处理量不大、可靠性要求较高的航天产品中。 为此,本文将介绍80C32E单片机与TLV2548的接口电路及其控制程序的设计方法。 1 接口电路设计 80C32E与TLV2548的接口电路如图1所示。 TLV2548提供了一个SPI串口。80C3
[单片机]
AVR单片机定时器输出PWM的设计及注意问题
一、定时/计数器PWM设计要点 根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。 3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,
[单片机]
单片机系统中断的基本过程
在单片机系统中,我们把产生中断的请求源称为中断源,它是指引起中断发生的事件、设备、部件。中断源可以是外部设备,如打印机、键盘、鼠标等,它们与计算机进行输入/输出数据交换时需向CPU发出中断请求。 一般计算机系统允许有多个中断源,当几个中断源同时向CPU发出中断请求,一般情况下CPU会优先处理最紧急的中断请求,计算机必须根据中断源的轻重缓急进行排队,这就必须给每个中断源的中断请求赋予一个中断优先级,以反映每个中断源的中断请求响应的优先程度。 单片机系统通常有多个中断源,经常会出现多个中断源同时申请中断的情况。但是CPU在每一个时刻,只能执行一个中断,此时,CPU将会根据中断源的重要程度执行中断。程序开发人员在程序设计的过程
[单片机]
一种P89LPC93X单片机控制的大功率铅酸电池充电器设计
随着全球环保意识的增强,使用铅酸电池的各种车辆不断进入人们的视野,然而目前世界上用于铅酸电池的充电器却是五花八门。这些充电器造成铅酸电池过充或充电不足的现象时有发生,后果是铅酸电池的使用寿命降低。在大功率铅酸电池充电器的设计中,减小功率损失,按照经验的优化曲线实现充电,是保障铅酸电池使用寿命的理想方法。为此,笔者设计一种单片机控制的实用大功率铅酸电池充电器。 1 充电器的硬件结构 在充电器初级回路的主电源设计中,采用了PFC+移相全桥的拓扑结构,在充电器次级回路设计中,为了实现对电池状态的监控,并能按照经验的优化曲线对电池进行充电,加入了单片机控制。这种充电器的硬件结构框图如图1所示。 在充电器的输入回路中,
[单片机]
用单片机实现基于I2C串行总线的音频处理系统
目前,消费类电子产品(如彩电、音响等)的功能多样化使得控制电路变得更为复杂。而Philips公司推出的集成电路芯片间总线I2CBUS(Inter ICBUS)是目前众多总线中最简洁有效、使用也为广泛的一种总线格式。I2C总线通常是以硬件来实现的,这就要求所选器件必须具有I2C总线接口,但目前广泛使用的MCS-51系列单片机并不具备I2C总线的专用硬件部分。本文结合笔者采用单片机8031实现对具有I2C总线接口的立体声音频处理芯片TDA7313的控制,介绍了I2C总线以及基于I2C串行总线的单片机应用系统的设计方法和程序。 1 I2C总线简介 1.1 I2C总线的组成 I2C串行总线是用双向数据线(SDA)和串行时钟线(
[单片机]
ARMLinux(mini2440)串口与51单片机的9位串口通讯
当51单片机的串口模式在方式2或方式3时为9位通讯方式,即当串行数据第9位为 1 时,前8位数据指示的是用来和主机通讯的从机地址;当串行数据第9位为 0 时,前8位数据则用为真正的数据。具体请参考: https://www.eeworld.com.cn/mcu/2011/0621/article_4424_1.html 而FriendlyARM的mini2440可以设置的数据位数为5~8位,即CS5,CS6,CS7,CS8。关于Linux串口的编程教学请参见: http://www.adamjiang.com/pukiwiki/index.php?Linux串口编程详解#ec39e271 查阅了一下前人的做法,有两种:1.硬方
[单片机]
51单片机+8155芯片的交通灯程序
单片机源程序如下: #include reg52.h # include absacc.h #define uchar unsigned char //定义为uchar类型 #define uint unsigned int //定义为uint类型 # define COM XBYTE //控制字地址(总控制,决定了PA/B/C是写还是读等) # define PA XBYTE //控制PA地址(总控制写的是读时,里面存的是读的值; // 写的是写时,里面要写入控制值) # define PB X
[单片机]