안녕 하세요.
고수님들 질문 사항이 있어서요.
제가 AVR Studio 를 사용 하고 있는데
그것을 가지고 외부 메모리에 데이터를 저장 하고 가져 와서
시리얼 데이터 통신을 하고 싶은데
외부 메모리에 데이터를 저장 하고 읽는 것을 아무리 책을 봐도
모르겠네요.
고수님들의 소스 좀 부탁 드립니다.
/*
// ============================= Atmega8 CPU 테스트 프로그램 ===================
// 사용 CPU : ATmega128
// 날 짜 : 2011.07.-
// 버 전 : Ver1.0
// 작 성 자 : 박진오
// 컴파일러 : AVR Studio Build 692 - Version 4.18
// 내 용 : 외부 메모리 값을 읽어서
시리얼 통신(시리얼 포트1 사용)으로 값을 전송
시리얼 통신(bps:19200, no parity, 1 stop, 8 data)
// ----------------------------------------------------------------------------
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
//=============================================================================================================
// 변수 선언부
//=============================================================================================================
#define ext_data1 (*(volatile unsigned char *)0x8000)
#define ext_data2 (*(volatile unsigned int *)0x9000)
//=============================================================================================================
// 함수
//=============================================================================================================
void TX1_char(unsigned char data)
{
while((UCSR1A & 0x20) == 0x00);
UDR1 = data;
}
void TX1_string(char *string)
{
while(*string != '\0')
{
TX1_char(*string);
string++;
}
}
// -----------------------------------------------------------------------------
// MAIN
// -----------------------------------------------------------------------------
//
int main(void)
{
unsigned char i;
unsigned int j;
char send_buf[50];
UBRR1H = 0;
UBRR1L = 51; // 19200 bps
UCSR1A = 0x00; // asynchronous normal mode
UCSR1B = 0x18; // Rx/Tx enable, 8 data
UCSR1C = 0x06; // no parity, 1 stop, 8 data
MCUCR = 0x80; // enabled external memory and I/O
XMCRA = 0x44; // 0x1100~0x7FFF = 1 Wait, 0x8000~0xFFFF = 0 Wait
XMCRB = 0x80; // enabled bus keeper, use PC0~PC7 as address
ext_data1 = 'A';
i = ext_data1;
ext_data2 = 209;
j = ext_data2;
while(1)
{
TX1_char(0x02);
sprintf(send_buf," Ext_data1 = %c, Ext_data2 =%d",i,j);
TX1_string(send_buf);
TX1_char(0x03);
_delay_ms(1000);
}
}