找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10878|回復: 18
收起左側(cè)

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

  [復制鏈接]
ID:108060 發(fā)表于 2016-3-9 16:36 | 顯示全部樓層 |閱讀模式
  1. /***********************************************************
  2. -功能描述:開機初始化
  3. -參數(shù)說明:無
  4. -返回說明:無
  5. ***********************************************************/
  6. void Init_Start(void)
  7. {
  8.   ADC_InitTypeDef ADC_InitStruct;
  9.   
  10.   /*ADC配置*/
  11.   ADC_InitStruct.refSource = REF_INT;   //內(nèi)部基準源
  12.   ADC_InitStruct.dataAlign = AD_LEFT;   //ADC數(shù)據(jù)為左對齊
  13.   ADC_InitStruct.channel   = 7;         
  14.   ADC_InitStruct.prescaler = CK_PS32;   //32預分頻
  15.   ADC_InitStruct.adcEnabled=1;          //使能ADC
  16.   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做個項目時要使用定時器,突然感覺到頭腦一片空白,完全忘記如何配置定時器,看來只能查看手冊了。不知道是不是網(wǎng)速有像51助手一樣的軟件可以方便寄存器的配置,百度了下確實有。下載后才發(fā)現(xiàn)沒有定時器的初始化配置,最后還是把定時器功能和寄存器花時間看了一遍。這讓我很郁悶,萌發(fā)了自己寫一個配置軟件。我只學過VB,就打算用VB編寫一個。但是裝個VB又跟CAD沖突,真是煩人。之后想到了STM32庫函數(shù)的做法,就用ADC的初始化試下好不好用。做法如下:




使用過程中還是感覺到不明了。需要打開頭文件查看,而且配置的東西多。得再找辦法,突然想到excel可以用VBA,可以還是猶豫,現(xiàn)在很多人用的是wps,都沒有安裝VBA開發(fā)插件,如果分享給他人用就麻煩了。試著能不能只用公式就可以實現(xiàn)。折騰了一個晚上寫了一個USART的寄存器配置
USART配置.JPG

使用效果和網(wǎng)站下載的單片機助手差不多,心血來潮就想把所有的外設(shè)模塊配置都寫出來。在這個過程中并不容易,特別是定時器的設(shè)置,T1的設(shè)置項比較麻煩,但我以根據(jù)自己的理解已經(jīng)把T1和T2的設(shè)置選項做了分類。每個模塊寫出來后還要反復試驗測試看下每個設(shè)置項會不會有錯誤。對于一些配置非常簡單且不需要修改的模塊就沒必要做了,例如看門狗,EEPROM等。TWI也不打算做了,因為初始化不能主要是使用麻煩,很多狀態(tài)要處理。整個excel的設(shè)計花了將近二十天的時間,有很大部分時間是用來看手冊的和測試的。
        有了外設(shè)的初始化配置又開始在想能不能寫一個比較通用的模塊操作文件,可以重復使用就節(jié)省了很多時間。又忙碌了一個星期(特別是TWI花了我很大的精力,所以我并不喜歡AVR的TWI)。

文件1.JPG
文件2.JPG


這些模塊的操作代碼有些是在學習的時候?qū)懙模恍枳隽苏,但是肯定是存在不足之處的,所以只作為入門學習的參考使用。下面還是具體介紹下是怎么使用的:


捕獲.JPG


定時器.jpg

          假設(shè)使用的是我寫的模塊操作文件,這寫文件都是沒有初始化函數(shù)的。首先就需要用AVR配置工具生成初始化函數(shù)(建議新建一個C文件專門用于存放初始化函數(shù))。打開“Atmega8a寄存器配置文件”,這個文件是參考m8a寫的所以就叫這個名字了。在文件的下方有八個工作表,第一個是幫助,里面是關(guān)于使用的說明。后面是外設(shè)的寄存器配置表格。單擊相應進行配置設(shè)置。



定時器設(shè)置.JPG
設(shè)置區(qū)中灰色打底的是可以選擇設(shè)置的,橙色打底的是一些重要的說明。小黑點打底的設(shè)置項是要求必須按順序依次設(shè)置。設(shè)置完后就可以選中代碼生成區(qū)中的代碼進行復制,執(zhí)行復制后選擇區(qū)會出現(xiàn)螞蟻線。再粘貼到自己的C文件中即可。


注明:模塊的操作文件是在IAR的開發(fā)環(huán)境寫的,不是使用IAR的朋友需要自己更改下才能使用。Excel的寄存器配置文件可能有些開發(fā)平臺對于個別寄存器的命名會有所差異,可以通知我修改。


Atmega8a寄存器配置.zip (64.4 KB, 下載次數(shù): 107)
模塊操作文件.zip (12.05 KB, 下載次數(shù): 71)



評分

參與人數(shù) 2黑幣 +130 收起 理由
HI-XM + 30 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:108060 發(fā)表于 2016-3-9 16:37 | 顯示全部樓層
排序全部亂了,不知道是怎么回事
回復

使用道具 舉報

ID:108060 發(fā)表于 2016-3-10 08:33 | 顯示全部樓層
http://www.torrancerestoration.com/bbs/dpj-45487-1.html

昨晚錄制了一個配置外部中斷、UASRT、ADC、定時器輸出PWM的視頻,感興趣的可以看下。
寫代碼的速度很慢,大家可以快進著看
回復

使用道具 舉報

ID:55127 發(fā)表于 2016-3-10 13:43 | 顯示全部樓層
下來學習下,謝謝!
回復

使用道具 舉報

ID:1 發(fā)表于 2016-3-10 16:48 | 顯示全部樓層
秉燭良宵 發(fā)表于 2016-3-9 16:37
排序全部亂了,不知道是怎么回事

謝謝分享黑幣已經(jīng)奉上,附件里面有完整的程序吧
回復

使用道具 舉報

ID:108060 發(fā)表于 2016-3-11 10:30 | 顯示全部樓層
admin 發(fā)表于 2016-3-10 16:48
謝謝分享黑幣已經(jīng)奉上,附件里面有完整的程序吧

附件里的外設(shè)操作函數(shù)都是完整的,而且TWI還是用中斷實現(xiàn),發(fā)送和接收數(shù)據(jù)非常簡單,把TWI的二十幾個狀態(tài)全部化簡了,但是函數(shù)是有做處理的。
回復

使用道具 舉報

ID:108060 發(fā)表于 2016-3-11 10:30 | 顯示全部樓層
這幾天在考慮寫一個STM32的庫函數(shù)配置助手,也打算嘗試用excel實現(xiàn),如果實在不行再換VB。有沒有感興趣的,可以一起來討論。AVR的配置文件好像沒有什么人下載,估計是玩AVR的人不多,發(fā)現(xiàn)很多初學者都是喜歡玩STC的偏多
回復

使用道具 舉報

ID:45777 發(fā)表于 2016-4-1 17:57 | 顯示全部樓層
學習學習,謝謝版主分享
回復

使用道具 舉報

ID:63812 發(fā)表于 2017-3-17 22:31 | 顯示全部樓層
這個非常好,有創(chuàng)意。
回復

使用道具 舉報

ID:196705 發(fā)表于 2017-6-4 00:15 | 顯示全部樓層
能放出單元格保護密碼嗎
回復

使用道具 舉報

ID:210602 發(fā)表于 2017-6-12 21:00 來自手機 | 顯示全部樓層
想學習,好東西
回復

使用道具 舉報

ID:249981 發(fā)表于 2017-11-20 12:25 | 顯示全部樓層
本帖最后由 davidchao 于 2017-11-21 13:01 編輯

樓主, 這個寄存器配置在Atmega16上是不是也是一樣的啊?
回復

使用道具 舉報

ID:116688 發(fā)表于 2018-1-8 00:22 | 顯示全部樓層
下來學習下,謝謝!
回復

使用道具 舉報

ID:120111 發(fā)表于 2018-4-21 05:58 來自手機 | 顯示全部樓層
秉燭良宵 發(fā)表于 2016-3-10 08:33
http://www.torrancerestoration.com/bbs/dpj-45487-1.html

昨晚錄制了一個配置外部中斷、UASRT、ADC、定時器輸出PWM的 ...

辛苦了,感謝樓主的無私奉獻
回復

使用道具 舉報

ID:316468 發(fā)表于 2018-4-26 23:18 | 顯示全部樓層
挺好,下來研究一下這個,excel的這些VBA功能還真不會用。
回復

使用道具 舉報

ID:455220 發(fā)表于 2018-12-26 14:43 | 顯示全部樓層
感謝樓主無私分享
回復

使用道具 舉報

ID:223761 發(fā)表于 2019-1-6 21:44 | 顯示全部樓層
非常好的資料,
回復

使用道具 舉報

ID:114509 發(fā)表于 2019-1-30 11:40 | 顯示全部樓層
秉燭良宵 發(fā)表于 2016-3-11 10:30
這幾天在考慮寫一個STM32的庫函數(shù)配置助手,也打算嘗試用excel實現(xiàn),如果實在不行再換VB。有沒有感興趣的, ...

正在學習AVR
回復

使用道具 舉報

ID:25103 發(fā)表于 2019-2-12 23:22 | 顯示全部樓層

下來學習下,謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表