新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR单片机Atmega128外扩RAM

AVR单片机Atmega128外扩RAM

作者:时间:2013-12-12来源:网络收藏


为保证数据采集的准确性和适时性,需要精确确定采样时间,做到采集和处理两不误。由于温度信号变化比较慢,而且比较有线性规律。所以设定通道0采集振动信号,通道1采集温度信号,振动信号的采样率为温度信号的50倍。即先进行50次振动信号采集后,切换通道,进行温度信号的采集,之后再切换到振动采集通道。对ADC转换启动噪声抑制功能,采用中断编程。ATmega128采用外部16MHz时钟。(由于Can已经是一种比较成熟和常用的总线技术,在此不做过多介绍)

AVR单片机Atmega128外扩RAM

硬件连接和普通的51单片机外扩是一样的。

AVR单片机Atmega128外扩RAM

内存分布。

以下是测试程序:

// Target : ATMEGA128
// Crystal : 7.3728Mhz
// Modifed By : Moxudong
// Date : 2010.03

#includeavr/io.h>
#includeutil/delay.h>
#include avr/interrupt.h> //中断函数头文件

#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
//默认的系统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();
}



评论


相关推荐

技术专区

关闭