使用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  寄存器配置 引用地址:使用excel制作的AVR寄存器配置助手---轻松搞定AVR

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

推荐阅读最新更新时间:2024-11-04 14:55

AVR GCC对端口的操作指南
1. AVR GCC for AVR I.I/O端口API 1. BV 用法:BV(pos); 说明:将位定义转换成屏蔽码(MASK)。与头文件io.h里的位定义一起使用。例如,置位WDTOE和WDE可表示为“BV(WDTOE) | BV(WDE)” 2. bit_is_clear 用法:uint8_t bit_is_clear(uint8_t port, uint8_t bit); 描述:如果port的bit位清零则返回1。此函数调用sbic指令,故port应为有效地址。 3.bit_is_set 用法:uint8_t bit_is_set(uint8_t port, uint8_t bit); 描述:如果port的bit
[单片机]
基于AVR单片机的负荷缸多路遥控开关编解码实现
负荷缸是船舶电力核心发电机性能的负荷试验必备的重要工装设备,通过负荷试验,可以检验发电机长期工作的性能稳定的情况(静态特性)和对突加突卸负荷的应变能力(动态特性)。 AVR 单片机 " 单片机 具有高性能低价格的优点,在本文中利用 AVR 单片机 " 单片机 对发电机负荷缸的多路远程遥控开关量进行采集监控并进行数字信号编解码,用2芯的电缆取代原来40芯的粗电缆传输控制信号,有效地解决了工作中遇到的问题。    1 问题的提出   我们通过把由发电机供电的通电极板放到负荷缸水电阻中,用充气升降极板和补给水调节水电阻大小的方法控制试验发电机所带负荷的大小,对发电机的性能进行试验。体积庞大的负荷缸一般放置在码头,在船
[单片机]
基于<font color='red'>AVR</font>单片机的负荷缸多路遥控开关编解码实现
使用Atmel Studio7和USBasp烧写器烧写AVR单片机
很多教程中都提供使用Atmel Studio和MKII对AVR单片机进行烧写,但民间使用最多的烧写器是物美价廉的USBasp,10元左右的价格比200元的MKII亲民多了。但是在Atmel Studio中不可以直接使用USBasp进行烧写,于是通常需要借助其他软件,带来更多麻烦。 本文通过Atmel Studio的External Tools和Avrdude软件,达到可以在Atmel Studio中直接烧写单片机的目的。这样可以在开发环境中完成编程、编译和烧写,非常方便。 第一步:你需要有一个USBasp以及其驱动,驱动程序在网络上铺天盖地,在购买模块的时候向店家索要也可。在设备管理器中可以通过设定驱动搜索的路径来安装驱动
[单片机]
使用Atmel Studio7和USBasp烧写器烧写<font color='red'>AVR</font>单片机
关于AVR单片机如何入门以及学习单片机的一些建议
学习单片机对于我来说是一个痛苦的过程因为第一次接触单片机是大一的时候,那时候还没有学习数字电路和模拟电路这两本基础课,所以第一次接触连高低电平都没看懂,我第一次想把那几个数码管驱动起来又不知道译码器,因为还没学74系列的器件,还记得大一第一个寒假我借来了很多书其实那会儿也不知道怎么学,图书馆单片机的书很多但让一个什么都没学的人去看那本比较好更本就是空话,我把AVR,51,PIC都借来了,那时也没想到在网上看教学视频,其实后来才知道很多东西网上资料非常丰富,那都是后来才发现的了,我真正学懂单片机是大二上学期,虽然我刚开始时从51开始学的但后来因为一些原因我学习了AVR所以说从入门到真正理解单片机我是从AVR开始的。
[单片机]
AVR单片机IO使用注意事项及结构全攻略
为搞清IO结构,首先看看上拉和下拉电阻的作用。 一、上拉电阻 上拉就是将不确定的信号通过一个电阻钳位在高电平!电阻同时起限流作用!下拉同理! 上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流,下拉电阻是用来吸收电流。 1、在用TTL电路驱动CMOS电路时,若TTL的高电平低于CMOS要求的高电平的门限值(1,TTL电平: 输出高电平 2.4V,输出低电平 0.4V。在室温下,一般输出高电平是3.5V,输出低电平 是0.2V。最小输入高电平和低电平:输入高电平 =2.0V,输入低电平 =0.8V,噪声容限是 0.4V。 2,CMOS电平: 1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪
[单片机]
<font color='red'>AVR</font>单片机IO使用注意事项及结构全攻略
基于AVR单片机电风扇360度内摇头角度自由调节装置的实现
市场上大多数落地电风扇的摇头角度一般都在90度左右,而且摇头速度不可调节,人们在不同的环境和场合,常常根据实际情况希望能调节风扇的摇头角度和摇头的速度。在各类机电系统中,由于直流电机具有良好的起动、制动和调速性能,直流调速技术已广泛运用于工业领域,最常用的直流调速技术是脉宽调制 (PWM) 直流调速技术,它具有调速精度高、响应速度快、调速范围宽和耗损低等特点。本文介绍了基于新型AVR单片机169、旋转编码器AS5040及3966控制的直流电机构成的电风扇调节装置,能实现落地电风扇360度内摇头自由角度调节和摇头速度调节。 1 360度内摇头角度调节装置硬件设计 1.1 系统设计与工作原理 AVR169单片机是新一代RISC结
[单片机]
基于<font color='red'>AVR</font>单片机电风扇360度内摇头角度自由调节装置的实现
AVR单片机程序——电脑键盘(P/S2口协议)——pckey
#include avr/io.h #include avr/interrupt.h #include inttypes.h #include avr/delay.h #include avr/signal.h #include scancodes.h #include 74c922.h #define GETPSDATA() ((PIND PIND7)&0x1) //connect to PD7 #define GETPSCLK() ((PIND PIND2)&0x1) //connetc to PD2 static unsigned char IntNum = 0; //count the in
[单片机]
基于AVR和无线技术的远程水情监控系统
为了提高我国水资源的管理水平,更好地监控水利工程的安全运行,最大限度地合理利用水资源,提高水资源的利用率,充分发挥工程效益,兴建该监控自动化系统,可有效地改善管理人员的工作条件和减轻其劳动强度。远程水情监控系统采用先进的科学技术实现对水情数据的监测、远程实时传输及整编处理,是实现水资源合理利用、防洪抗旱、提高水文工作自动化管理水平的有效手段。针对我国水资源自动 化监控系统的发展现状和前景,与时俱进,基于无线通信方式,设计了适用于水利工程的无线分布式监控系统。 1 系统需求分析 该系统的设计旨在为各个水利部门在实施水利管理和调度提供有力的决策和参考依据,最终达到充分合理的利用现有水资源和防洪抗旱的目的。要实现系统的全程自动化
[单片机]
基于<font color='red'>AVR</font>和无线技术的远程水情监控系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved