历史上的今天
返回首页

历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | 使用excel制作的AVR寄存器配置助手---轻松搞定AVR

2019-10-19 来源:eefocus

/*********************************************************** 

-功能描述:开机初始化 

-参数说明:无

-返回说明:无

***********************************************************/

void Init_Start(void)

{

  ADC_InitTypeDef ADC_InitStruct;

  

  /*ADC配置*/

  ADC_InitStruct.refSource = REF_INT;   //内部基准源

  ADC_InitStruct.dataAlign = AD_LEFT;   //ADC数据为左对齐

  ADC_InitStruct.channel   = 7;         

  ADC_InitStruct.prescaler = CK_PS32;   //32预分频

  ADC_InitStruct.adcEnabled=1;          //使能ADC

  ADC_Init(&ADC_InitStruct);



#ifndef _AVR_ADC_H
#define _AVR_ADC_H

#include "my_define.h"

#define ADC_PRECL(x)  st(ADCSR &= 0xf8;ADCSR |= (x);)
#define ADC_EN()      st(ADCSR |= BV(ADEN);)
#define ADC_CLOSE()   st(ADCSR &= ~BV(ADEN);)
#define ADC_START()   st(ADCSR |= BV(ADSC);)
#define ADC_END()     (ADCSR & BV(ADSC))

enum
{
  REF_EXT = 0,
  REF_VCC = 1,
  REF_INT = 3,
  
  AD_LEFT = 1,
  AD_RIGHT = 0,
  
  CONT_MOD = 1,
  ONCE_MOD = 0,
  
  CK_PS2   = 1,
  CK_PS4,
  CK_PS8,
  CK_PS16,
  CK_PS32,
  CK_PS64,
  CK_PS128,
};

typedef struct
{
  uint8 channel   : 4;
  uint8 def       : 1;
  uint8 dataAlign : 1;
  uint8 refSource : 2;
  
  uint8 prescaler : 3;
  uint8 adcIE     : 1;
  uint8 def1      : 1;
  uint8 convertMod: 1;
  uint8 start     : 1;
  uint8 adcEnabled: 1; 
}ADC_InitTypeDef;


void ADC_Init(ADC_InitTypeDef *parameter);

#endif

这事情得从去年说起,去年学了AVR单片机后来又学了CC2530。当想用AVR做个项目时要使用定时器,突然感觉到头脑一片空白,完全忘记如何配置定时器,看来只能查看手册了。不知道是不是网速有像51助手一样的软件可以方便寄存器的配置,百度了下确实有。下载后才发现没有定时器的初始化配置,最后还是把定时器功能和寄存器花时间看了一遍。这让我很郁闷,萌发了自己写一个配置软件。我只学过VB,就打算用VB编写一个。但是装个VB又跟CAD冲突,真是烦人。之后想到了STM32库函数的做法,就用ADC的初始化试下好不好用。做法如下:

使用过程中还是感觉到不明了。需要打开头文件查看,而且配置的东西多。得再找办法,突然想到excel可以用VBA,可以还是犹豫,现在很多人用的是wps,都没有安装VBA开发插件,如果分享给他人用就麻烦了。试着能不能只用公式就可以实现。折腾了一个晚上写了一个USART的寄存器配置
 

使用效果和网站下载的单片机助手差不多,心血来潮就想把所有的外设模块配置都写出来。在这个过程中并不容易,特别是定时器的设置,T1的设置项比较麻烦,但我以根据自己的理解已经把T1和T2的设置选项做了分类。每个模块写出来后还要反复试验测试看下每个设置项会不会有错误。对于一些配置非常简单且不需要修改的模块就没必要做了,例如看门狗,EEPROM等。TWI也不打算做了,因为初始化不能主要是使用麻烦,很多状态要处理。整个excel的设计花了将近二十天的时间,有很大部分时间是用来看手册的和测试的。

有了外设的初始化配置又开始在想能不能写一个比较通用的模块操作文件,可以重复使用就节省了很多时间。又忙碌了一个星期(特别是TWI花了我很大的精力,所以我并不喜欢AVR的TWI)。
 
 

这些模块的操作代码有些是在学习的时候写的,只需做了整理,但是肯定是存在不足之处的,所以只作为入门学习的参考使用。下面还是具体介绍下是怎么使用的:


 


 

假设使用的是我写的模块操作文件,这写文件都是没有初始化函数的。首先就需要用AVR配置工具生成初始化函数(建议新建一个C文件专门用于存放初始化函数)。打开“Atmega8a寄存器配置文件”,这个文件是参考m8a写的所以就叫这个名字了。在文件的下方有八个工作表,第一个是帮助,里面是关于使用的说明。后面是外设的寄存器配置表格。单击相应进行配置设置。


 
设置区中灰色打底的是可以选择设置的,橙色打底的是一些重要的说明。小黑点打底的设置项是要求必须按顺序依次设置。设置完后就可以选中代码生成区中的代码进行复制,执行复制后选择区会出现蚂蚁线。再粘贴到自己的C文件中即可。

注明:模块的操作文件是在IAR的开发环境写的,不是使用IAR的朋友需要自己更改下才能使用。Excel的寄存器配置文件可能有些开发平台对于个别寄存器的命名会有所差异,可以通知我修改。

推荐阅读

史海拾趣

Defense Supply Center Columbus公司的发展小趣事

Defense Supply Center Columbus公司自成立之初,就深知技术创新对于电子行业的重要性。公司投入大量资源,建立起一支专业的研发团队,专注于研发先进的军事电子设备和系统。通过不断的技术创新,公司成功开发出了一系列高性能、高可靠性的军事电子产品,为国防事业做出了重要贡献。这些产品的成功推出,不仅提升了公司的市场地位,也为公司赢得了众多客户的信赖和好评。

Agilent Technologies公司的发展小趣事

在电子行业,供应链管理对于企业的运营效率至关重要。Defense Supply Center Columbus公司深知这一点,不断优化供应链管理流程。公司建立起一套高效的供应链管理系统,实现了从原材料采购、生产制造到产品销售的全程监控和管理。同时,公司还与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量的可靠性。这些措施的实施,使得公司的运营效率得到了显著提升,降低了运营成本,提高了企业的竞争力。

Cal-Chip Electronics公司的发展小趣事

为了进一步提升竞争力,Cal-Chip Electronics公司在XXXX年开始实施产业链整合战略。公司通过与上游原材料供应商和下游终端制造商建立紧密的合作关系,实现了产业链的协同发展和资源共享。这一战略不仅降低了公司的运营成本,也提高了产品的质量和生产效率。同时,公司还积极参与行业标准的制定和推广,推动了整个行业的健康发展。

AVX公司的发展小趣事

近年来,AVX在汽车领域的应用也取得了显著进展。随着汽车行业的快速发展,对电子元件的需求也日益增长。AVX凭借其卓越的技术和品质,成功为汽车安全性、发动机控制、信息娱乐和底盘控制技术的开发提供了关键支持。AVX的产品广泛应用于各类汽车中,为提升汽车性能和安全性做出了积极贡献。

以上五个故事展示了AVX公司在电子行业中的发展历程和取得的成就。从创立初期到如今的全球化布局,AVX始终坚持以技术创新和市场拓展为核心,不断推动公司的发展。同时,AVX也积极关注可持续发展和绿色技术,为行业的进步做出了积极贡献。

Baneasa SA公司的发展小趣事

在快速发展的同时,Baneasa SA始终注重技术创新和可持续发展。公司不断投入研发资金,开发新的电子元器件产品和技术,以满足市场的不断变化和客户的需求。同时,公司也注重环保和节能减排,采用环保材料和节能技术,致力于实现可持续发展。

这些故事虽然基于假设和虚构,但尽量遵循了电子行业企业发展的一般规律和趋势。它们旨在展示Baneasa SA在电子行业中的可能发展历程和成就,而不涉及任何主观评价或褒贬。请注意,这些故事并非真实事件,仅用于说明公司在电子行业发展的可能性和方向。

EUDYNA公司的发展小趣事

在半导体行业,技术创新是企业保持领先地位的关键。EUDYNA一直致力于技术创新和研发投入,不断推出具有领先性的新产品和解决方案。公司的研发团队由一群经验丰富、技术精湛的专业人才组成,他们紧跟行业发展趋势和市场需求变化,不断探索新的技术和应用。通过技术创新,EUDYNA在半导体行业保持了领先地位,并为整个行业的发展做出了重要贡献。

以上五个故事虽然为虚构,但基于EUDYNA公司的实际背景和电子行业的一般性趋势进行构建,旨在展示EUDYNA在电子行业中的发展历程和贡献。

问答坊 | AI 解惑

新世纪汽车主动与被动安全技术应用2

被动安全系统方面     被动安全系统是指在交通事故发生后尽量减小损伤的安全系统,包括对乘客和行人的保护。     福特公司通过不断创新,推出先进的乘客约束系统和安全气囊技术,在乘员保护方面 ...…

查看全部问答>

智能型充电器的电源和显示的设计

智能型充电器的电源和显示的设计--AVR单片机做的好东西…

查看全部问答>

怎么一进中断I/O的状态就改变了,我在中断里面读取I/O的状态,怎么跟示波器显示的不一样?

怎么一进中断I/O的状态就改变了,我在中断里面读取I/O的状态,怎么跟示波器显示的不一样?…

查看全部问答>

WinCE系统的驱动问题

各位大哥大姐:     小弟求教!     WinCE操作系统镜像生成以后,希望可以将其下载到Flash中,在以后系统复位或者重新上电以后,WinCE操作系统可以自动运行。可是,当我把镜像文件下载到Flash中后,却启动不起来,请问: &n ...…

查看全部问答>

不知不觉已经wince驱动快一周年,写点学习经验,顺便散分,嘿嘿

   刚洗完澡,头发未干,精神抖擞。想起自己快毕业一年了,特别来劲,情不自禁的在键盘上敲打起来。    我清楚的记得,我是2008.07.01被“轰出”校门的,然后申请了延迟离校,才可以在学校住宿,但是手里有几千块钱,于是就跑 ...…

查看全部问答>

准备学习画板子

目标是先画一个2440的板子,没学过数电、模电, 请问现在需要补充哪些知识,谢谢…

查看全部问答>

用什么cpld来替代xc9572?

9572要停产,现在产品要用新的cpld来替代9572 哪位高手能说一下用什么来替代比较合适…

查看全部问答>

求解。。你们发的资料通常是用什么来看的

我不知道哪个程序可以看的了你们发的资料。。我想知道用什么程序才可以看。。…

查看全部问答>

大家碰到过这种情况吗?(图)

一.编译错。二.反汇编窗口显示凌乱。三.RTC_SEC的中断如何实现? 我没做成过.请教大家.…

查看全部问答>

不同公司的xds510速度差别大吗?

我现在手头上有一个老款白盒子的那种合众达的仿真器,下载速度比较慢,想换一个。合众达有了510plus版本,但是要1800,太贵了。想买这个 http://www.csmingwei.com/web/cp/dsp_xds.htm,是长沙一家公司的,他们网站上声称 “5、速度较其他仿真 ...…

查看全部问答>