新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機Atmega128外擴RAM

AVR單片機Atmega128外擴RAM

作者: 時間:2013-12-12 來源:網(wǎng)絡(luò) 收藏


為保證數(shù)據(jù)采集的準(zhǔn)確性和適時性,需要精確確定采樣時間,做到采集和處理兩不誤。由于溫度信號變化比較慢,而且比較有線性規(guī)律。所以設(shè)定通道0采集振動信號,通道1采集溫度信號,振動信號的采樣率為溫度信號的50倍。即先進行50次振動信號采集后,切換通道,進行溫度信號的采集,之后再切換到振動采集通道。對ADC轉(zhuǎn)換啟動噪聲抑制功能,采用中斷編程。ATmega128采用外部16MHz時鐘。(由于Can已經(jīng)是一種比較成熟和常用的總線技術(shù),在此不做過多介紹)

AVR單片機Atmega128外擴RAM

硬件連接和普通的51單片機外擴是一樣的。

AVR單片機Atmega128外擴RAM

內(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();
}



關(guān)鍵詞: AVR單片機 Atmega128 外擴RAM

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉