'[INTERFACE]/AVR_W5100_EVM'에 해당되는 글 10건

  1. 2007.12.28 [Mega128 EVM] TCP Test Program
  2. 2007.12.27 [Mega128 EVM] Usb2Serail Test (1)
  3. 2007.12.26 [Mega128 EVM]스위치 제어
  4. 2007.11.25 [Mega128 EVM] LED Control - 개발환경 설정
  5. 2007.11.25 [Mega128 EVM]보드 관련 자료
[INTERFACE]/AVR_W5100_EVM2007. 12. 28. 01:34

[Mega128 EVM] TCP Test Program

사용자 삽입 이미지





Mega128 EVM의 이더넷 제어는 W5100를 이용하고 우선 간단히 테스트 하기 위해 속도는 좀 느리지만 SPI모드로 구동하여 테스트 해 보았다.

사용자 삽입 이미지















 

이더넷 제어 관련 파일은 ../mega128_evm/01_drv/wiznet 폴더에 있고 w5100.c, wiznet.c파일을 추가하면 된다.

사용자 삽입 이미지












네트웍 MAC, IP..등의 초기화 설정은 main에서 간단히 설정할 수 있다.

//-----------------------------------------------------------------------------
#define MY_NET_MAC   "\x00\x08\xDC\x00\x00\x00"  // MY Mac Address : 00.08.DC.00.00.00
#define MY_NET_SIP   0xC0A80003 // MY Source IP     : 192.168.0.3
#define MY_NET_GWIP   0xC0A80001 // MY Gateway IP    : 192.168.0.1
#define MY_CH_DESTIP  0xC0A80002 // MY Destination   : 192.168.0.2
      :

예제 소스코드

예제는 TCP Server로 구성하고 클라이언트로 부터 전송되는 데이들 받아서 그값에 따라 Mega128 EVM의 LED를 제어하도록 하였다. 자세한 설명은 추후에 계속....

void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)

{

        unsigned int i;

        if(pRcvBuffer[0] == CMD_LED_OUT)

        {

                if(pRcvBuffer[1] & 1)Led1On();

                else Led1Off();

                if(pRcvBuffer[1] & 2)Led2On();

                else Led2Off();

        }

               

        DebugPrint("Read Data[%d]\r\n", len);

       

        for(i=0;i<len;i++)

        {

                //if(i%16==0)DebugPrint("\r\n");

                DebugPrint("%02X ", pRcvBuffer[i]);

        }

        DebugPrint("\r\nReceive OK!\r\n");

}

//TCP-Server 처리

void ProcessTcpSever(void)

{

        int len;                                                

        unsigned char data_buf[TX_RX_MAX_BUF_SIZE];

        uint16 port = MY_LISTEN_PORT;

       

        switch (getSn_SR(SOCK_TCPS))

        {

        case SOCK_ESTABLISHED:

                //check Rx data

                if((len = getSn_RX_RSR(SOCK_TCPS)) > 0)                 

                {

                        //if Rx data size is lager than TX_RX_MAX_BUF_SIZE

                        if (len > TX_RX_MAX_BUF_SIZE) len = TX_RX_MAX_BUF_SIZE;       

                        //read the received data

                        len = recv(SOCK_TCPS, data_buf, len);

                                               

                        EthernetTest(data_buf, len);

                }              

                break;

               

        case SOCK_CLOSE_WAIT:                                   

                //If the client request to close

                disconnect(SOCK_TCPS);

               

                m_SokStatus1 = 0;

                break;

               

        case SOCK_CLOSED:

                if(!m_SokStatus1)

                {

                        m_SokStatus1 = 1;

                        DebugPrint("Connect.");

                }

               

                //reinitialize the socket

                if(socket(SOCK_TCPS,Sn_MR_TCP, port,0x20) == 0)

                {

                        DebugPrint("Fail to create socket.");

                        m_SokStatus1 = 0;

                }

                else

                {

                        listen(SOCK_TCPS);

                }

               

                break;

        }

}

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



터미널 창의 제어 메세지

사용자 삽입 이미지














호스트 프로그램
호스트 프로그램은 VB를 이용하여 간단히 TCP클라언트로 구성하고 서버로 접속해서 LED를 제어하도록 작성하였다.

사용자 삽입 이미지


실행 동영상
호스트 측의 LED버튼을 클릭하여 EVM보드의 LED를 제어하고 있다.

Posted by nexp

댓글을 달아 주세요

[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]/AVR_W5100_EVM2007. 11. 25. 20:40

[Mega128 EVM] LED Control - 개발환경 설정

[Mega128 EVM] LED Control


사용자 삽입 이미지



프로젝트 소스 :



프로젝트 파일 구조는 00_hal 하드웨어 의존 관련 파일, 01_drv의 하드웨어 독립의 Driver관련 파일,  ex01_led... application 파일 형태로 별도의 디렉토리가 구분된다.

mega128_evm.zip파일은 시스템 관련 파일로 00_hal, 01_drv로 구성이 되며 앞으로 드라이버 파일이 추가되거나  초기화 설정파일이 변경되면 추구 업데이트 되며... 모든 예제에 적용할 수 있도록 구성하였다.


프로젝트 환경은 AVR Strudio를 이용하였고, 하드웨어 시스템을 초기화하는 System.c를 반드시 포함해서 컴파일 해야 한다.

Serial을 사용한다면 Serial.c를 포함하면 된다.




[Mega128 EVM] 에는 보드 자체에 간단히 테스트 할 수 있는 LED가 PD6, PD7포트에 각각 연결되어 있다.
이 포트는 PWM기능이 있어 LED의 불 빛을 서서히 점등하는 등의 예제 테스트에도 사용될수 있다.

/00_hal/config.h 파일에 하드웨어 의존적인 LED제어 관련 포트를 설정하도록 되어 있다.

#define LED1_BIT   BIT6
#define LED1_PORT   PORTD
#define Led1Init()   Sbi(DDRD, LED1_BIT)
#define Led1On()   Cbi(LED1_PORT, LED1_BIT)
#define Led1Off()   Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()  Tbi(LED1_PORT, LED1_BIT)

#define LED2_BIT   BIT7
#define LED2_PORT   PORTD
#define Led2Init()   Sbi(DDRD, LED2_BIT)
#define Led2On()   Cbi(LED2_PORT, LED2_BIT)
#define Led2Off()   Sbi(LED2_PORT, LED2_BIT)
#define Led2Toggle()  Tbi(LED2_PORT, LED2_BIT)



LED 회로도



소스코드
LED를 주기적으로 점등하는 예제로 가장 간단하게 구성해서 쉽게 테스트 해 보았다.

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

// Main Routine

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

int main(void)

{

        //Init System

        SystemInit();

        //Init LED

        Led1Init();

        Led2Init();

        Led2On();

        Led1Off();

        while(1)

        {

                Led1On();

                Led2Off();

                Delay(300);

                Led1Off();

                Led2On();

                Delay(300);

        }

}

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


실행 동영상

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

댓글을 달아 주세요