본문 바로가기

[AVR]/Mega16

[Mega16 EVM]USB(toSerial)테스트 예제 - 키보드로 LED제어

[Mega16 EVM]USB(toSerial)테스트 예제 - 키보드로 LED제어

사용자 삽입 이미지
 

Mega16 EVM의 USB to Serial테스트



전체 드라이버소스 -> http://cafe.naver.com/elab/776 


USBtoSerial CP2101가 장착되어 PC의 USB를 통해 시리얼 데이터를 전송할 수 있다. 따라서 터미널 창으로 키보드의 '1', '2', '3', '4'문자를 전송하고 이에 따라 Mega16의 시리얼포트로 전송받은 데이터를 처리하여 LED를 On/Off하는 예제를 작성해 보겠다.

먼저 시리얼 포트 관련 드라이버 함수는

#include "..\01_drv\serial.c"

에 정의 되어 있고 필요할때 include하고 _UART0_ENABLE를 정의하면된다. 계층구조라 필요없으면 주석처리하면 된다.


그리고 UART를 사용하기 위해 _UART0_ENABLE를 정의 해야 한다.

#define _UART0_ENABLE


시리얼 터미널 창으로 키보드를 눌러 키값을 전송하면 각각LED 가 점등되는것을 볼 수 있다.




시리얼 테스트 예제 소스

//UART0을 사용하기 위해

#define _UART0_ENABLE

#include "..\00_hal\system.h"

#include "..\01_drv\serial.c"

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

// Main Routine

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

int main(void)

{

        SystemInit();

        Led1Init();

        Led2Init();

        Led2On();

        Led1Off();

       

        //Serial Init

        U0_Init(BAUD_57600);

        U0_printf("Serial Test Program.\r\n");

        while(1)

        {

                if(U0_IsGetByte())

                {

                        switch(U0_GetByte())

                        {

                                case '1':

                                        Led1On();

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

                                        break;

                               

                                case '2':

                                        Led1Off();

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

                                        break;

                                case '3':

                                        Led2On();

                                        U0_printf("LED2 On\r\n");

                                        break;

                               

                                case '4':

                                        Led2Off();

                                        U0_printf("LED2 Off\r\n");

                                        break;

                        }

                }

        }



 

반응형