[INTERFACE]/AVR_W5100_EVM2008. 4. 21. 23:42

[Mega128 EVM]rev2 보드 관련 자료 - AVR Mega128 + Ethernet Module

[Mega128 EVM]rev2 보드 관련 자료 - AVR Mega128 + Ethernet Module

사용자 삽입 이미지


회로도:



[Mega128 EVM] rev2를 새롭게 만들었다. 기존 보드의 회로적인 실수도 수정하고 몇가지 보완해서 만들었다. 기본적인 형태나 배치는 동일하게 구성했다. PCB가 없서서 새롭게 만들어야 할 기회가 있었는데 시간 관계상 치명적 버그만 수정하는 형태이다.
기존 Ethernet LINK LED를 보드에 구성했던 것을 RJ45커넥터의 LED있는것으로 대체 하였다.



기존 보드와 거의 유사하지만.. USB커넥터 및 VR, 온도 센서가 추가 되었다.



USB는 아무래도 미니타입이 작고 많이 쓰는 커넥터라 수정했고 VR및 온도센서(LM35)을 추가하여  보드상에서 간단한 테스트를 해 볼수 있도록 했다.



기존에는 Serial0 + SPI가 빠져 있던 부분을 Seril0 + Serial1로 변경했다.



핀맵을 동일하게 해서 기존 확장보드를 이용할 수 있도록 했다. 모든 포트 빠져 있고 VR, S/W, PWM, TFT LCD등을 테스트 해 볼수 있다.


Posted by nexp

댓글을 달아 주세요

  1. 신봉수

    [Mega128 EVM]rev2 보드는 어디서 구할수 있나요?

    2008.09.12 01:02 [ ADDR : EDIT/ DEL : REPLY ]
  2. 광춘

    mega128 EVM rev2 구매하고싶습니다. 어디서 구매할수있는지요 gohgoh@empal.com 연락바랍니다.

    2009.08.25 11:11 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/AVR_W5100_EVM2007. 12. 27. 20:14

[Mega128 EVM] Usb2Serail Test

[Mega128 EVM] Usb2Serail Test

사용자 삽입 이미지


ex03_serial.zip

 

CP2012 칩의 드라이버 파일은 아래 링크에서 최신파일을 받을 수 있다.

  CP210x_VCP_Win2K.exe

 http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx



[Mega128 EVM]의 USB2Serial은 UART1에 연결되어 있고 [/mega128_evm/00_hal/config.h]파일에 시리얼 출력 관련 정의가 되어 있다.


//UART1을 사용하기 위해
#define _UART1_ENABLE
#define _HAL_MEGA128_UART
//#define _UART0_ENABLE

//-----------------------------------------------------------------------------
#if 0
#define U0_printf      printf
#define DebugPrint      U0_printf
#define DebugInit      U0_Init
#define DebugGetByte     U0_GetByte
#define DebugIsByte      U0_IsGetByte
#endif


#if 1
#define DebugPrint      printf
#define DebugInit      U1_Init
#define DebugGetByte     U1_GetByte
#define DebugIsByte      U1_IsGetByte
#endif
//-----------------------------------------------------------------------------


예제 소스

//-----------------------------------------------------------------------------<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?xml:namespace prefix = o />

// Main Routine

//-----------------------------------------------------------------------------

int main(void)

{

             SystemInit();

             //Serial Init

             DebugInit(BAUD_115200);

             DebugPrint("Mega128 EVM Serial Test Program.\r\n");

             //Init LED

             Led1Init();

             while(1)

             {

                           if(DebugIsByte())

                           {

                                        switch(DebugGetByte())

                                        {

                                                     case '1':

                                                                  Led1On();

                                                                  DebugPrint("LED1 On\r\n");

                                                                  break;

                                                    

                                                     case '2':

                                                                  Led1Off();

                                                                  DebugPrint("LED1 Off\r\n");

                                                                  break;

                                        }

                           }

             }

}

//-----------------------------------------------------------------------------


Posted by nexp
TAG ATMEGA128, AVR

댓글을 달아 주세요

  1. 참고 : C#을 이용한 시리얼 포트 제어 - Mega128 LED제어( http://nexp.tistory.com/272 )

    2008.04.29 00:41 신고 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/AVR_W5100_EVM2007. 12. 26. 21:10

[Mega128 EVM]스위치 제어

[Mega128 EVM]스위치 제어
사용자 삽입 이미지

환경 설정 및 드라이버 파일
참고




[Mega128 EVM]의 OnBoard Switch는 PD0/INT0에 연결되어 있어 간단한 스위치 On/Off테스를 할 수 있고 외부 인터럽트 테스트에도 사용될 수 있다.



#define SW1_BIT    BIT0
#define SW1_PORT   PORTD
#define Sw1Init()   Cbi(DDRD, SW1_BIT)
#define GetSw1()   !(PIND&SW1_BIT)
#define WaitForSw1()  while(GetSw1())

//-----------------------------------------------------------------------------<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

// Main Routine

//-----------------------------------------------------------------------------

int main(void)

{

             //Init System

             SystemInit();

             //Init LED

             Led1Init();

             Led1Off();

            

             //Switch Init

             Sw1Init();

             while(1)

             {

                           if(GetSw1())

                           {

                                        Led1On();

                                        Delay(200);

                           }

                           else

                           {

                                        Led1Off();

                           }

             }

}

//-----------------------------------------------------------------------------

Posted by nexp
TAG ATMEGA128, AVR

댓글을 달아 주세요

[INTERFACE]/WIZNET_EVM2007. 12. 11. 18:54

[W5100 EVM]Simple TCP-Client Example


[W5100 EVM]Simple TCP-Client 예제 - AVR128
사용자 삽입 이미지
[W5100 EVM]모듈을 이용하여 간단한 TCP-Client 예제를 작성해 보겠습니다.
 
 
코드구조
현제 예제는 AVR Studio(GCC)를 이용하여 작성되었지만 레이어를 두어 다른 CPU나 컴파이러에서도 쉽게 포팅 가능하도록 구성되어 있습니다.
전체 폴더 구조는
[00_hal] : 하드웨어 종속적인 데이터 파일
[01_drv] : 각종 드라이버 관련 파일
[ex0_..] : 사용자 Application
 
로 구성되어 있고 Wiznet칩 관련 드라이버는 [01_drv/wiznet/..]폴더에 있습니다.
사용자 삽입 이미지
 
 
 
 
버스모드 설정
W5100의 Access모드는 DIRECT_MODE, INDIRECT_MODE, SPI_MODE가 있고 자신의 하드웨어에 맞게 설정하면 됩니다.
DIRECT_MODE가 가장 속도는 빠르지만 Data-8, Address-14 Ctl-5 많은 제어핀이 필요하므로 하드웨어가 복잡해 집니다.
SPI_MODE는 속도는 느리지만 MOSI, MISO, SCLK, CS, INT의 5핀만으로 가능하므로 소형 마이컴에 적합 합니다.
INDIRECT_MODE는 Address핀을 사용하지 않아 핀을 좀더 줄인 모드로 동작할 수 있습니다. At91SAM7과 같이 포트가 적은 CPU는 이 방법을 쓰면 속도도 유지하면서 포트를 줄일 수 있는 방법입니다.
 
예제는 간단히 테스트 목적이므로 SPI방식으로 설정 했습니다.
 
[/01_drv/wiznet\mcu/types.h] 파일에서 버스모드를 설정할 수 있습니다.
 
//#define __DEF_IINCHIP_BUS__           __DEF_IINCHIP_DIRECT_MODE__
//#define __DEF_IINCHIP_BUS__           __DEF_IINCHIP_INDIRECT_MODE__

  #define __DEF_IINCHIP_BUS__            __DEF_IINCHIP_SPI_MODE__             //Enable SPI_mode
 
 
 
SPI방식 연결회로도
 
 /INT단자는 인터럽트 방식을 사용하지 않을때는 연결하지 않아도 됩니다. 간단히 폴링방식 테스트만 원한다면 인터럽트는 이용하지 않아도 되고 대부분의 예제는 폴링방식으로 가능합니다.
사용자 삽입 이미지
[ExpBoard]에서 AVR을 이용한 SPI방식으로 연결
 
사용자 삽입 이미지
 
 
 
 
DIRECT_MODE 연결 회로도
사용자 삽입 이미지
 
 
 
 
 
 
네트웍초기화
사용자 삽입 이미지
 
Source IP, Destiantion IP, Gateway ip등은 간단히 define으로 정의하여 자신의 네트웍 환경에 맞도록 설정해 줍니다.
 
 
클라이언트의 일은 접속되기를 수동적으로 기다는 서버와의 통신을 시작 하는 것이다.
TCP클라이언트가 수행하는 4가지 단계
1)socket()을 이사용하여 TCP소켓 생성
2)connect()함수를 이용하여 서버와의 연결을 설정
3)send(), recv()함수를 이용하여 데이터 송수신
3)close()함수로 연결 종료
 
 
메인 함수
프로그램 자체는 상당히 간단하게 작성 했습니다.
InitWiznet(), init_timer(), NetInit() 함수로 W5100을 초기화 하고
ProcessTcpClient()함수에서 이더넷을 수신되는 데이터를 감시 하다 데이터가 들어오면 recv()함수로 수신된 데이터 만큼 읽어올 수 있습니다.
len = recv(SOCK_MYTEST, data_buf, len);
 
데이터를 전송할 경우는 send()함수를 이용하여 데이터를 원하는 길이만큼 전송하면 됩니다.
send(SOCK_MYTEST, data_buf, len);
 
 
 
//-----------------------------------------------------------------------------
// Main Routine
//-----------------------------------------------------------------------------
int main(void)
{
   SystemInit();
 
   //Serial Init
   U0_Init(BAUD_115200);
   DebugPrint("Wiznet W5100 Test Program.\r\n");
 
   //W5100 Chip Initialize
   //----------------------------
   InitWiznet();
 
   NetInit();
   //----------------------------
 
   //Display Net Configuration
   GetNetConfig();
 
   while (1)
   {
      //TCP Client Process
      ProcessTcpClient();
   }  
}
//-----------------------------------------------------------------------------
 


실행결과

클라언트 모드로 동작하며 서버로 부터 데이터가 전송되면 시리얼 포트로 전송된 데이터를 출력하는 예제의 터미널 결과값 입니다.

사용자 삽입 이미지
Posted by nexp

댓글을 달아 주세요

[INTERFACE]/AVR_W5100_EVM2007. 11. 25. 10:47

[Mega128 EVM]보드 관련 자료

[Mega128 EVM] 보드 관련자료

사용자 삽입 이미지



보드 구성
PCB상에서 AVR Mega128, AT90USB1287를 적용할 수 있도록 구성하였고 전원은 3.3V, 5V 설정할 수 있도록 했다.
이더넷는 Ethernet MAC + Phy + Hward Wired TCP/IP Chip W5100을 이용하여 소프프트웨어 부담이 없이 이더넷을 적용할 수 있도록 했다. SPI, BUS direct/indirect모드로 제어할 수 있도록 설정할 수 있다.
USB to Serial(CP2101)칩을 두어 간단히 시리얼 통신이 가능하다.
보드에 디버깅용 LED 2개와 1개의 스위치를 두어 보드만으로 간단히 테스트 가능하다. LED는 PWM, SW는 INT단자에 연결되어 PWM및 INT테스트 가능하다.



회로도



Application Expention Board





PCB수정사항
회로 틀린것을 알고 있었지만 급하게 발주하다보니 수정할 시간이 없었다. 차후 버젼은 좀더 기능 올리고 수정 사항 추가 해야 겠다.
W5100쪽의 리셋핀이 연결되지 않았다. 59(RESET)번핀과 JP1 5번핀 연결요망, 60번핀이 NC이므로 59, 60번핀을 리셋으로 연결하면 된다.


W5100의 크리스탈의 C24, C25사이에 1M옴 저항이 필요 하다.  없으면 클럭이 불안해 지는군..

 


SPI Data Flash 수정
Data Falsh AT45DBxx를 사용하려면 SPI의 MISO핀이 중복으로 연결되어 수정이 필요하다.
급하게 하다보니 실수한 곳이 많다... ㅠㅠ

Posted by nexp

댓글을 달아 주세요