User `s Guide

Download Report

Transcript User `s Guide

Technology for Imaginations
AVR_M4_232
User Guide
User ‘s Guide
Rev. 1.0
2009. 03. 01
Copyright SangSangDom, All Rights Reserved.
www.SangSangDom.com
Technology for Imaginations
Preface
Read This First
About This Manual
This users guide describes the characteristics, operation, and use of the
AVR_M4_232 Toolkit board. A complete circuit description as well as schematic
diagram is included.
How to Use This Manual
This document contains the following chapters:
 Chapter 1 - Introduction and Description
 Chapter 2 - User Control
 Chapter 3 – Schematics
 Chapter 4 – VHDL Code for CPLD
Related Documentation From SangSangDom
This document contains the following chapters:
SangSangDom
Technology for Imaginations
Contents
1. Introduction & Description
1.1 Features
1.2 Layout & Dimension
1.3 Functionality
2. User Control
2.1 외부 인터페이스 레지스터 설정
2.2 RS232 Channel Interface
2.3 AVR PORT Interface
2.4 ISP 통신
2.5 Power
3. Schematics
4. 하이퍼터미널
5. C-Code
SangSangDom
Technology for Imaginations
1. Introduction & Description
1.1 Features
AVR_M4_232
사용자의 목적에 따라 serial 통신 기능 제공 한다. 사용
자의 임으로 Atmega2560 에 입력된 값을 통하여 1:1,
1:2 1:3, 1:4 통신이 가능하다. 32 x 8Bit의 외부 메모
리를 확장 하여 좀더 폭넓은 사용이 가능하다.
- 외부메모리
32K x 8 LOW VOLTAGE CMOS STATIC RAM
- High-speed access times : 10 ns
- 칩이 deselect 일 때 자동으로 power down mode
- 3.3V 전압
- Three-state outputs
1.2 Layout
<Top>
<Bottom>
SangSangDom
Technology for Imaginations
1.3 Functionality
- 4 Channel 의 Serial 통신 가능
- 1 : 1~4 방식의 Serial 통신 가능
- 32K x 8 Bit 외부 메모리 장착
control
MCU
Serial channel
2
3
2
LCON
Channel1
Channel2
1:1, 1:2
1:3, 1:4
통신 가능
AVR
RCON
2
3
2
Channel3
Channel4
확장 Memory
버퍼
32K x 8 bit memory
SangSangDom
Technology for Imaginations
2. User Control
2.1 외부 인터페이스 레지스터 설정
XMCRA 레지스터 : 외부 데이터 메모리 영역의 액세스 신호들을 유효하도록 하며 메모리 영
역을 분할하거나 웨이트 사이클을 설정하는데 사용.
Bit
(0x74)
7
6
5
4
3
2
1
0
SRE
SRL2
SRL1
SRL0
SRW11
SRW10
SRW01
SRW00
Read/Write
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Initial Value
0
0
0
0
0
0
0
0
XMCRA
- SRE (External SRAM/XMEM Enable) 비트 : AD0~7, A8~15, ALE, WR, RD 등과 같
은
외부 데이터 메모리 영역의 엑세스 신호들을 유효하도록 함
- SRL0~2 (Wait-state Sector Limit) 비트 : 외부 데이터 메모리 영역을 2개의 섹터로 분
할
하여 이들 각 섹터에 별도로 웨이트 사이클을 설정
- SRW11~10 (Wait-state Select Bits for Upper Sector) 비트 : 외부 데이터 메모리의
상
위 섹터에 해당하는 웨이트 사이클을 설정
- SRL
SRW00~01
Select Bits for Upper Sector) 비트 : 외부 데이터 메모리의
SRL (Wait-state
SRL
Sector Limits
2
1
0
하
Lower sector = 없음
0 섹터에
0 해당하는
0
위
웨이트
사이클을
설정
Upper sector
= 0x2200~0xFFFF
0
1
0
Lower sector = 0x2200~0x3FFF
Upper sector = 0x4000~0xFFFF
0
1
1
Lower sector = 0x2200~0x5FFF
Upper sector = 0x6000~0xFFFF
1
0
0
Lower sector = 0x2200~0x7FFF
Upper sector = 0x8000~0xFFFF
1
0
1
Lower sector = 0x2200~0x9FFF
Upper sector = 0xA000~0xFFFF
1
1
0
Lower sector = 0x2200~0xBFFF
Upper sector = 0xC000~0xFFFF
1
1
1
Lower sector = 0x2200~0xDFFF
Upper sector = 0xE000~0xFFFF
SRWn1
SRWn0
0
0
웨이트 사이클의 수
0 웨이트
0
1
Read/Write 신호에 1개의 웨이트
1
0
Read/Write 신호에 2개의 웨이트
1
1
Read/Write 신호에 2개 + 다음 어드레스 출력 전에 1개의 웨이트
SangSangDom
Technology for Imaginations
-XMCRB 레지스터 : 버스 키퍼 기능을 설정하고 외부 데이터 메모리 어드레스의 상위 비
트 중에서 어디까지 어드레스 기능으로 사용할 것인지를 설정하는데 사용.
Bit
7
6
(0x75)
5
4
XMBK
Read/Write
R/W
Initial Value
0
3
2
1
0
-
-
R
R
-
-
XMM2
XMM1
XMM0
R
R
R/W
R/W
R/W
0
0
0
0
0
0
0
XMCRB
- XMBK (External Memory Bus-keeper Enable) 비트 : AD0 ~ AD7 신호가 3-스테
이트로 되어야 하는 동안에 이를 이전의 값으로 출력되도록 하는 Bus-Keeper 기능을 설
정.
- XMM0~2 (External Memory High Mask) 비트 : 포트 C와 기능을 겸하고 있는 어드
레스 버스의 상위 비트가 어느 부분까지 어드레스 버스 신호로 사용될지를 설정.
XMM2
XMM1
XMM0
어드레스 버스
포트 C
0
0
0
A8~A15 로 사용
없음
0
0
1
A8~A14 로 사용
PC7 로 사용
0
1
0
A8~A13 로 사용
PC6~PC7 로 사용
0
1
1
A8~A12 로 사용
PC5~PC7 로 사용
1
0
0
A8~A11 로 사용
PC4~PC7 로 사용
1
0
1
A8~A10 로 사용
PC3~PC7 로 사용
1
1
0
A8~A9 로 사용
PC2~PC7 로 사용
1
1
1
없음
PC0~PC7 로 사용
- 외부 인터페이스 레지스터 설정 예
7
6
5
4
3
2
1
0
1
SRE
0
SRL2
0
SRL1
0
SRL0
0
SRW11
0
SRW10
1
SRW01
1
SRW00
XMCRA
0
XMBK
0
-
0
-
0
-
0
-
0
XMM2
0
XMM1
0
XMM0
XMCRA
XMCRA 레지스터 (0x83)
-SRE 비트 : 외부 메모리 Enable
-SRL0~2 비트 : 외부 데이터 메모리의 섹터 영역 lower sector 와 upper sector 중
upper sector 로만 사용.
(upper sector=0x2200~0xFFFF)
-SRW00~11 비트 : 외부 메모리의 하의 섹터와 상위 섹터에 해당하는 웨이트 사이클을
사용하지 않음.
XMCRB 레지스터 (0x00)
-XMBK 비트 : Bus-keeper Disable
-XMM0~2 비트 : Address Bus A8~A15 로 사용 포트로는 사용하지 않음.
SangSangDom
Technology for Imaginations
2.2 RS232 Channel Interface
RS232 Driver를 통하여 외부의 RS232 Terminal과 연결되는 Connector로써 4개의
채널을 동시에 연결하여 사용할 수 있다.
Tx0 Rx0
Tx1 Rx1
Tx2 Rx2
Tx3 Rx3
GND
Table 1-1 Connector ECH Pinout
Pin Number
Signal
Description
CH1 - 1
CH1 TX
RS232 채널 1번의 TX 포트
CH1 - 2
CH1 RX
RS232 채널 1번의 RX 포트
CH1 - 3
CH1 GND
RS232 채널 1번의 GND
CH2 - 1
CH1 TX
RS232 채널 2번의 TX 포트
CH2 - 2
CH1 RX
RS232 채널 2번의 RX 포트
CH2 - 3
CH1 GND
RS232 채널 2번의 GND
CH3 - 1
CH3 TX
RS232 채널 3번의 TX 포트
CH3 - 2
CH3 RX
RS232 채널 3번의 RX 포트
CH3 - 3
CH1 GND
RS232 채널 3번의 GND
CH4 - 1
CH4 TX
RS232 채널 4번의 TX 포트
CH4 - 2
CH4 RX
RS232 채널 4번의 RX 포트
CH4 - 3
CH4 GND
RS232 채널 4번의 GND
SangSangDom
Technology for Imaginations
2.3 AVR PORT Interface
AVR 의 각각의 포트를 사용자가 보다 쉽게 사용할 수 있도록 확장한 외부 핀 이며 LCON과
RCON으로 나뉘어 사용할 수 있다
1
2
3
4
5
6
7
8
9
Table 1-2 Connector LCON Pinout
Pin Number
signal
Description
1
VCC
Power
10
1,30
GND
Ground
11
12
3~7
PH2~PH6
AVR PORTH2~PORTH6
13
14
8
PB0
AVR PORTB0
15
16
9~12
PB4~PB7
AVR PORTB4~PORTB7
17
18
13
PH7
AVR PORTH7
19
20
21
22
14~15
PG3~PG4
AVR PORTG3~PORTG4
23
24
16~23
PL0~PL7
AVR PORTL0~PORTL7
25
26
24~25
PD0~PD1
AVR PORTD0~PORTD1
27
28
26~29
PD4~PD7
AVR PORTD4~PORTD7
29
30
LCON
1
2
3
4
5
6
7
8
9
10
11
12
13
Table 1-3 Connector RCON Pinout
Pin Number
signal
Description
1
PE7
Power
2,30
GND
Ground
3~4
PE5~PE6
AVR PORTE5~PORTE6
14
5~6
PE3~PE4
AVR PORTE3~PORTE4
15
16
7
PG5
AVR PORTG5
17
18
8
PE2
AVR PORTE2
19
20
9, 11, 13, 15
PF1, PF3, PF5, PF7
AVR PORTF1, PORTF3, PORTF5, PORTF7
21
22
10, 12, 14, 16
PF0, PF2, PF4, PF6
AVR PORTF0, PORTF2, PORTF4, PORTF6
23
24
17, 19, 21, 23
PK1, PK3, PK5, PK7
AVR PORTK1, PORTK3, PORTK5, PORTK7
25
26
27
28
18, 20, 22, 24
PK0, PK2, PK4, PK6
AVR PORTF0, PORTF2, PORTF4, PORTF6
29
30
25, 27, 29
PJ7, PJ5, PJ3
AVR PORTJ7, PORTJ5, PORTJ3
26, 28, 30
PJ6, PJ4, PJ2
AVR PORTJ6, PORTJ4, PORTJ2
RCON
SangSangDom
Technology for Imaginations
2.4 ISP (In System Programming) 통신
MCU에 Program을 Write 할 수 있는 통신 단자로써 보드의 AVR에 Program을 Write 하여
사용 할 수 있다.
컴파일러를 통해 만들어진 HEX 파일이나 BIN 파일을 [PonyProg2000, ToastProg2005,
ISP_PGM v3.0, Codevision 등]을 이용하여 MCU에 Program을 Write 할 수 있다. 보드의
MCU은 AVR2560으로 ToastProg2005 에서 Program을 Write 기능이 제공 되고 있다.
Table 1-4 ISP Pinout
2
4
1
Pin Number
signal
Description
1
VCC
POWER
2
MISO
Master Input/Slave Output
3
MOSI
Master Output/Slave Input
4
SCK
Serial Clock
5
GND
Ground
6
RST
Reset
6
3
5
2.5 Power
5V 표준 전압을 사용한다.
Table 1-5 Power Pinout
1
2
Pin Number
signal
Description
1
VCC
POWER
2
GND
Ground
SangSangDom
Technology for Imaginations
3. Schematics
SangSangDom
Technology for Imaginations
SangSangDom
Technology for Imaginations
4. 하이퍼터미널
하이퍼터미널을 통하여 각 Channel의 통신을 확인 할 수 있다. 하이퍼터미널은 『시작 -> 프로그램
-> 보조프로그램 -> 통신하이퍼터미널』순으로 실행 할 수 있다.
이름(N)입력은 사용자가 원하는 이름을 입력 하고 첫 번째 아이콘을 선택한 다음 확인을 누르자.
연결에 사용할 모뎀(N)은 PC에 시리얼 포트가 1개 있다면 COM1 2개 있다면 시리얼 캐이블을 연결할
포트에 따라 COM1, COM2를 맞추어 선택 하면 된다.
SangSangDom
Technology for Imaginations
포트 설정은 비트/초, 데이터 비트(D)패리티(P), 정지 비트(S), 흐름 제어(F)등 그림과 같이 설정 하면
된다.
모든 설정이 완료하면 다음과 같은 실행 화면이 나온다. 이 상태에서 키보드를 누르면 눌려진
Key 값에 따른 ASCII 코드값이 시리얼 포트를 통하여 PC 밖으로 송신 된다. 그리고 시리얼
포트를 통하여 입력된 데이터는 창에 표시된다. 그림 시리얼 통신을 통하여 a문자를 10번 수
신한 결과이다.
SangSangDom
Technology for Imaginations
5. C-Code
하이퍼터미널을 통하여 얻은 결과는 다음 C-Code로 확인 할 있으며, Channel1~Channel4 까지 모
두 통신이 가능하다.
-Serial_Test.c
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
////////////////16MHz 클럭을 사용할때 보레이트/////////////////////
//
2400, 2800, 9600, 14.4k, 19.2k, 28.8k, 38.4k, 57.6k, 76.8k, 115.2k, 230.4k, 250k, 500k, 1M, 2M
// unsigned int baudrate[15]={ 832, 416, 207, 138, 103,
68,
51,
34,
25,
16,
8,
7, 3,
1, 0 };
unsigned char rx_data_flag0,rx_data_flag1,rx_data_flag2,rx_data_flag3;
unsigned char temp0[4], temp1, temp2, temp3, CMD;
unsigned char count; // received the number of data from PC
void delay(unsigned int dcnt)
{
while(dcnt--);
}
void init_system(void)
{
DDRE = 0xFE; //fnd_select serial0
PORTE = 0xFE;
DDRH = 0xFE; //fnd_select serial2
PORTH = 0xFE;
DDRD = 0xF0; //fnd_select serial1
PORTD = 0xFE;
DDRJ = 0xFE; //fnd_select serial3
PORTJ = 0xFE;
}
void AVR_init(void)
{
UBRR0 = 16;
// Baudrate 115.2k byte/sec
UCSR0A = 0x02; // Asynchronous normal mode, double baudrate
UCSR0B = 0x98; // 0x98 rx interrupt enable, 8 data, tx 0xD8, tx_empty 0xF8
UCSR0C = 0x06; // no parity, 1 stop, 8 data
temp0[0] = UDR0; // dummy read
}
void GM1_init(void)
{
UBRR1 = 16;
// Baudrate 115.2k byte/sec
UCSR1A = 0x02; // Asynchronous normal mode, double baudrate
UCSR1B = 0x98; // 0x98 rx interrupt enable, 8 data, tx 0xD8, tx_empty 0xF8
UCSR1C = 0x06; // no parity, 1 stop, 8 data
temp1 = UDR1; // dummy read
}
SangSangDom
Technology for Imaginations
void GM2_init(void)
{
UBRR2 = 16; // Baudrate 115.2k byte/sec
UCSR2A = 0x02; // Asynchronous normal mode, double baudrate
UCSR2B = 0x98; // 0x98 rx interrupt enable, 8 data, tx 0xD8, tx_empty 0xF8
UCSR2C = 0x06; // no parity, 1 stop, 8 data
temp2 = UDR2; // dummy read
}
void Serial_Test(void)
{
UBRR3 = 16; // Baudrate 115.2k byte/sec
UCSR3A = 0x02; // Asynchronous normal mode, double baudrate
UCSR3B = 0x98; // 0x98 rx interrupt enable, 8 data, tx 0xD8, tx_empty 0xF8
UCSR3C = 0x06; // no parity, 1 stop, 8 data
temp3 = UDR3; // dummy read
}
SIGNAL(SIG_USART0_RECV)
// PC
{
CMD = UDR0;
rx_data_flag0 = 1;
}
SIGNAL(SIG_USART1_RECV)
{
temp1 = UDR1;
rx_data_flag1 = 1;
}
SIGNAL(SIG_USART2_RECV)
{
temp2 = UDR2;
rx_data_flag2 = 1;
}
SIGNAL(SIG_USART3_RECV)
{
temp3 = UDR3;
rx_data_flag3 = 1;
}
void serial_tx0(unsigned char tx_data0)
{
while((UCSR0A&0x20) == 0x00);
UDR0 = tx_data0;
}
void serial_tx1(unsigned char tx_data1)
{
while((UCSR1A&0x20) == 0x00);
UDR1 = tx_data1;
}
SangSangDom
Technology for Imaginations
void serial_tx2(unsigned char tx_data2)
{
while((UCSR2A&0x20) == 0x00);
UDR2 = tx_data2;
}
void serial_tx3(unsigned char tx_data3)
{
while((UCSR3A&0x20) == 0x00);
UDR3 = tx_data3;
}
int main(void)
{
// I/O Port Init
init_system();
// Seriasl Init
AVR_init();
GM1_init();
GM2_init();
Serial_Test();
rx_data_flag0=0;
rx_data_flag1=0;
rx_data_flag2=0;
rx_data_flag3=0;
sei();
while(1)
{
if(rx_data_flag0 == 1) //PC -> SYSTEM
{
serial_tx0(CMD);
rx_data_flag0 = 0;
}
if(rx_data_flag1 == 1)
{
serial_tx1(temp1);
rx_data_flag1 = 0;
}
if(rx_data_flag2 == 1)
{
serial_tx2(temp2);
rx_data_flag2 = 0;
}
if(rx_data_flag3 == 1)
{
serial_tx3(temp3);
rx_data_flag3 = 0;
}
}
return 0;
}
SangSangDom
Technology for Imaginations
6. Tip
-외부메모리 Write/Read
unsigned char *xram = (unsigned char*)(0x2200); // 초기 주소 값 설정 하기
void main()
{
XMCRA = 0x83; //외부 메모리 섹터와 웨이트 사이클 설정
XMCRB = 0x00; //외부 메모리 Bus keeper disable, A8~A15 포트 설정
DDRA = 0xFF; //A 포트 사용
DDRC = 0xFF; //C 포트 사용
RAM_Write();
RAM_Read();
}
void RAM_Write() //2200 번지 부터 0x30값을 1씩 증하 하면서 2210 번지까지 쓰기
{
unsigned int j;
unsigned char data;
for(j=0; j<10; j++)
{
data = 0x30+j;
*(xram+j) = data;
}
}
void RAM_Read() //써온 데이터를 읽기
{
unsigned int i;
unsigned char data;
for(i=0; i<10; i++)
{
data = *(xram+i);
}
}
SangSangDom