1 / 18

AVR_M4_232 User Guide

AVR_M4_232 User Guide. 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.

ordell
Download Presentation

AVR_M4_232 User Guide

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AVR_M4_232 User Guide www.SangSangDom.com

  2. 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

  3. 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

  4. 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

  5. control MCU Serial channel 2 3 2 Channel1 LCON RCON AVR Channel2 1:1, 1:2 1:3, 1:4 통신 가능 2 3 2 Channel3 Channel4 확장 Memory 32K x 8 bit memory 버퍼 1.3 Functionality • 4 Channel 의 Serial 통신 가능 • 1 : 1~4 방식의 Serial 통신 가능 • 32K x 8 Bit 외부 메모리 장착 SangSangDom

  6. Bit (0x74) Read/Write Initial Value 7 6 5 4 3 2 1 0 XMCRA SRE SRL2 SRL1 SRL0 SRW11 SRW10 SRW01 SRW00 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 SRL2 SRL1 SRL0 Sector Limits 0 0 0 Lower sector = 없음 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 2. User Control 2.1 외부 인터페이스 레지스터 설정 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) 비트 : 외부 데이터 메모리의 상 • 위 섹터에 해당하는 웨이트 사이클을 설정 • SRW00~01 (Wait-state Select Bits for Upper Sector) 비트 : 외부 데이터 메모리의 하 • 위 섹터에 해당하는 웨이트 사이클을 설정 SRWn1 SRWn0 웨이트 사이클의 수 0 0 0 웨이트 0 1 Read/Write 신호에 1개의 웨이트 1 0 Read/Write 신호에 2개의 웨이트 1 1 Read/Write 신호에 2개 + 다음 어드레스 출력 전에 1개의 웨이트 SangSangDom

  7. Bit (0x75) Read/Write Initial Value 7 6 5 4 3 2 1 0 XMCRB XMBK - - - - XMM2 XMM1 XMM0 R/W R R R R R/W R/W R/W 0 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와 기능을 겸하고 있는 어드레스 버스의 상위 비트가 어느 부분까지 어드레스 버스 신호로 사용될지를 설정. - 외부 인터페이스 레지스터 설정 예 7 6 5 4 3 2 1 0 XMCRA 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

  8. Tx0 Rx0 Tx1 Rx1 Tx2 Rx2 Tx3 Rx3 GND 2.2 RS232 Channel Interface RS232 Driver를 통하여 외부의 RS232 Terminal과 연결되는 Connector로써 4개의 채널을 동시에 연결하여 사용할 수 있다. 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

  9. 2.3 AVR PORT Interface AVR 의 각각의 포트를 사용자가 보다 쉽게 사용할 수 있도록 확장한 외부 핀 이며 LCON과 RCON으로 나뉘어 사용할 수 있다 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 Table 1-2 Connector LCON Pinout LCON 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 Table 1-3 Connector RCON Pinout RCON SangSangDom

  10. 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 6 1 3 5 2.5 Power 5V 표준 전압을 사용한다. Table 1-5 Power Pinout 1 2 SangSangDom

  11. 3. Schematics SangSangDom

  12. SangSangDom

  13. 4. 하이퍼터미널 하이퍼터미널을 통하여 각 Channel의 통신을 확인 할 수 있다. 하이퍼터미널은 『시작 -> 프로그램 -> 보조프로그램 -> 통신하이퍼터미널』순으로 실행 할 수 있다. 이름(N)입력은 사용자가 원하는 이름을 입력 하고 첫 번째 아이콘을 선택한 다음 확인을 누르자. 연결에 사용할 모뎀(N)은 PC에 시리얼 포트가 1개 있다면 COM1 2개 있다면 시리얼 캐이블을 연결할 포트에 따라 COM1, COM2를 맞추어 선택 하면 된다. SangSangDom

  14. 포트 설정은 비트/초, 데이터 비트(D)패리티(P), 정지 비트(S), 흐름 제어(F)등 그림과 같이 설정 하면 된다. 모든 설정이 완료하면 다음과 같은 실행 화면이 나온다. 이 상태에서 키보드를 누르면 눌려진 Key 값에 따른 ASCII 코드값이 시리얼 포트를 통하여 PC 밖으로 송신 된다. 그리고 시리얼 포트를 통하여 입력된 데이터는 창에 표시된다. 그림 시리얼 통신을 통하여 a문자를 10번 수신한 결과이다. SangSangDom

  15. 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

  16. 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

  17. 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

  18. 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

More Related