使用excel制作的AVR寄存器配置助手---轻松搞定AVR

2019-10-19来源: eefocus关键字:excel制作  AVR  寄存器配置

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

-功能描述:开机初始化 

-参数说明:无

-返回说明:无

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

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的寄存器配置文件可能有些开发平台对于个别寄存器的命名会有所差异,可以通知我修改。

关键字:excel制作  AVR  寄存器配置 编辑:什么鱼 引用地址:http://news.pyfle.com/mcu/ic477682.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:avr单片机 PWM调速程序及原理图
下一篇:ATmega16单片机蓝牙串口控制程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

PC-DMIS推出灵活简便的Excel Report报告制作工具
作为全球第一个具有强大CAD功能和迄今为止安装数量最多的工业计量软件,PC-DMIS自推出以来受到了众多用户的喜爱。PC-DMIS不仅拥有专业的测量技术、简便的操作功能和广泛的兼容能力,还为用户提供了丰富详尽的多格式测量报告。 在众多检测报告样式中,Excel报告因其编辑简单、便于统计计算等诸多优点,越来越受用户青睐。但随着现代化生产规范的要求越来越高,通用型Excel报告往往难以满足用户实际需求。基于此,我们在PC-DMIS软件基础上进行了二次开发,为用户提供了操作简便、性价比超高的Excel Report报告制作工具。用户可以使用制作工具按照实际需求对Excel报告的样式进行设定。评价尺寸:开放的制作工具,每个评价
发表于 2017-08-31
PC-DMIS推出灵活简便的Excel Report报告制作工具
atmega128 bootloader程序在IAR-AVR下 linker文件的配置及原因
第一步:atmega128的片内flash分区描述在atmega128 datasheet的275页中有分区描述对应的在284页中,有具体的应用区与boot区的大小设置注意:Byte address = word address * 2这里的BOOT区首地址,$F000 = 0x1E000 根据手册中的描述,我们使用JTAG MKII 烧写器通过软件 Avr Studio 4,配置熔丝位 BOOTSZ为00注意:这里面的4096 words = 8K bytes 第二步:说明一下linker(.xcl)文件的作用好了,怎么让我们的程序烧写到flash中是在指定的0x1E000处呢?这就需要在link文件中指
发表于 2019-12-06
atmega128 bootloader程序在IAR-AVR下 linker文件的配置及原因
使用eclipse Arduino IDE开发 AVR程序
Types里面新建两项:*.ino 和*.pde,不建这两项的话没法编译。第三步:新建项目File-->new-->new Arduino sketch:Boards.txt file选项里有avr和sam的两种,我用的nano,所以选avr的。<ignore_js_op>
发表于 2019-12-06
使用eclipse Arduino IDE开发 AVR程序
AVR开发 Arduino方法(附二) 故障排除:烧录引导程序
在“内存子系统”一章中我们曾提到,Arduino UNO R3开发板上的ATMega328P有0.5KB的Flash空间用于引导程序;因为有引导程序的支持,Arduino可以使用串口上传程序而无需编程器。一般地,按下Arduino UNO R3开发板上的复位按键,13引脚上的LED快速的闪烁3下,代表引导程序正常启动。如果出现上传程序没有响应或复位时LED没有闪烁,排除硬件故障后,可以考虑重新烧录引导程序。(1) 使用USBasp编程器烧录引导程序Arduino IDE支持的编程器有AVRISP mkII,USBtinyISP和USBasp等,这里以USBasp为
发表于 2019-12-06
AVR开发 Arduino方法(附二) 故障排除:烧录引导程序
AVR开发 Arduino方法(七) 嵌入式操作系统FreeRTOS
<FreeRTOS_AVR.h> 3  4 const uint8_t LED_PIN = 13; 5 SemaphoreHandle_t sem; 6  7 static void Thread1(void* arg) { 8   while (1) { 9     xSemaphoreTake(sem, portMAX_DELAY);10     digitalWrite(LED_PIN, LOW);11   }12 }13 
发表于 2019-12-06
AVR开发 Arduino方法(六) 内存子系统
Arduino UNO R3主处理器ATMega328P的芯片内部拥有3种存储器:数据存储器,程序存储器和电可擦写可编程存储器;它们各自有不同的用途。1.数据存储器数据存储器是一块2KB大小的静态随机存储器(SRAM)。其中一部分空间分配给了通用寄存器和I/O寄存器,其余部分一般用于存储全局变量,堆栈数据和支持动态内存分配。它的存取速度快,但掉电后数据会丢失。2.程序存储器程序存储器是一块32KB大小的闪存(Flash),其中0.5KB用于引导程序。它可以多次擦写,掉电后数据不会丢失,一般用于存储程序。3.电可擦可编程只读存储器电可擦写可编程只读存储器(EEPROM)是一块1KB大小的独立数据存储空间。它和程序存
发表于 2019-12-06
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 pyfle.com, Inc. All rights reserved
极速快三 快乐赛车是属于彩票吗 快乐赛车代理资源怎么找 快乐赛车官方计划软件 快乐飞艇有官方吗 快乐赛车是正规福彩吗 福建11选5 快乐赛车怎么能接代理 快乐飞艇介绍 快乐飞艇