AVR單片機Atmega128外擴RAM
為保證數(shù)據(jù)采集的準確性和適時性,需要精確確定采樣時間,做到采集和處理兩不誤。由于溫度信號變化比較慢,而且比較有線性規(guī)律。所以設定通道0采集振動信號,通道1采集溫度信號,振動信號的采樣率為溫度信號的50倍。即先進行50次振動信號采集后,切換通道,進行溫度信號的采集,之后再切換到振動采集通道。對ADC轉(zhuǎn)換啟動噪聲抑制功能,采用中斷編程。ATmega128采用外部16MHz時鐘。(由于Can已經(jīng)是一種比較成熟和常用的總線技術,在此不做過多介紹)
硬件連接和普通的51單片機外擴是一樣的。
內(nèi)存分布。
以下是測試程序:
// Target : ATMEGA128
// Crystal : 7.3728Mhz
// Modifed By : Moxudong
// Date : 2010.03
#includeavr/io.h>
#includeutil/delay.h>
#include avr/interrupt.h> //中斷函數(shù)頭文件
#includestdio.h>
#includestring.h>
//PG0 0x65
#define WRL (PORTG=PORTG0XFE)
#define WRH (PORTG=PORTG|0X01)
//PG1
#define RDL (PORTG=PORTG0XFD)
#define RDH (PORTG=PORTG|0X02)
//PG2
#define ALEL (PORTG=PORTG0XFB)
#define ALEH (PORTG=PORTG|0X04)
//MCU時鐘頻率
#undef F_CPU
//#define F_CPU 7372800UL
//默認的系統(tǒng)BAUD
#define baud 115200
//#define fosc 7372800UL //晶振7.3728MHZ
#define fosc 16000000UL
//#define baud 9600//波特率
#define MCUBAUD9600 1
//declare memory mapped variables
//#define txbuf1_head 0x1100
//extern unsigned char txbuf1[256];
#define ext_PORT1 ((volatile unsigned char *)0x1100)
unsigned char *p=(unsigned char *)ext_PORT1;
unsigned char testramtable[4]={0x00,0x55,0xaa,0x00};
void Delay1ms(void)
{
unsigned int i;
for(i=0;i=(unsigned int)(16*143-2);i++);
}
void Delayxms(unsigned char ms)
{
unsigned char i;
for(i=0;i=ms;i++)
Delay1ms();
}
評論