[AT90USB1287-EX] 기본 테스트 - UART
AT90USB1287은 UART가 1포트가 있다. ATMega128과 호환을 위해 UART1에 디버깅을 위한 USB2UART 모듈을 연결할 수 있도록 했다.
USB2UART는 모듈을 이용하거나 CP2101을 보드에 실장하여 사용할 수 있는데 CP2101을 이용할 경우 AT90USB1287의 USB Device 기능과 겹치게 되므로 선택저항으로 선택해서 사용할 수 있다.
확장 UART포트
ATmega128 과 레지스터명이 약간 다르므로 수정할 필요가 있다.
AT90USB1287 UART드라이버 코드
1Byte 전송함수
1Byte 수신함수
AT90USB1287 UART테스트 예제 코드
USB2UART는 모듈을 이용하거나 CP2101을 보드에 실장하여 사용할 수 있는데 CP2101을 이용할 경우 AT90USB1287의 USB Device 기능과 겹치게 되므로 선택저항으로 선택해서 사용할 수 있다.
확장 UART포트
ATmega128 과 레지스터명이 약간 다르므로 수정할 필요가 있다.
AT90USB1287 UART드라이버 코드
#define _UART1_ENABLE
//-----------------------------------------------------------------------------
#if 1
#define DebugPrint U1_printf
#define DebugInit U1_Init
#define DebugGetByte U1_GetByte
#define DebugIsByte U1_IsGetByte
#endif
//-----------------------------------------------------------------------------
#elif (__MCU_TYPE__ == AVR_TYPE_USB1287)
//------------------------------------------------------
#define U1R_DATA UDR1
#define U1R_CSRA UCSR1A
#define U1R_CSRB UCSRB
#define U1R_UBRRH UBRRH
#define U1R_UBRRL UBRRL
#define U1R_UBRR UBRRL
#endif
#define u1_WaitForReceive() while(!(UCSR1A & 0x80))
#define u1_RxData() (UDR1)
#define u1_TxData(Data) (UDR1 = Data)
#define u1_WaitForSend() while(!(UCSR1A & 0x20))
//-----------------------------------------------------------------------------
#if 1
#define DebugPrint U1_printf
#define DebugInit U1_Init
#define DebugGetByte U1_GetByte
#define DebugIsByte U1_IsGetByte
#endif
//-----------------------------------------------------------------------------
#elif (__MCU_TYPE__ == AVR_TYPE_USB1287)
//------------------------------------------------------
#define U1R_DATA UDR1
#define U1R_CSRA UCSR1A
#define U1R_CSRB UCSRB
#define U1R_UBRRH UBRRH
#define U1R_UBRRL UBRRL
#define U1R_UBRR UBRRL
#endif
#define u1_WaitForReceive() while(!(UCSR1A & 0x80))
#define u1_RxData() (UDR1)
#define u1_TxData(Data) (UDR1 = Data)
#define u1_WaitForSend() while(!(UCSR1A & 0x20))
1Byte 전송함수
void U1_PutByte(unsigned char Data)
{
u1_WaitForSend();
u1_TxData(Data);;
}
{
u1_WaitForSend();
u1_TxData(Data);;
}
1Byte 수신함수
unsigned char U1_GetByte(void)
{
u1_WaitForReceive();
return u1_RxData();
}
{
u1_WaitForReceive();
return u1_RxData();
}
AT90USB1287 UART테스트 예제 코드
#include "system.h"
#include "serial.h"
//-----------------------------------------------------------------------------
int main(void)
{
//시스템 초기화
SystemInit();
//LED포트 초기화
Led1Init();
Led1On();
Led2Init();
Led2On();
//UART Init
DebugInit(BAUD_57600);
DebugPrint("[AT90USB1287-EX] Test Program - UART\r\n");
while(1)
{
switch(DebugGetByte())
{
case '0':
Led1On();
DebugPrint("LED1 On\r\n");
break;
case '1':
Led1Off();
DebugPrint("LED1 Off\r\n");
break;
}
}
}
//-----------------------------------------------------------------------------
#include "serial.h"
//-----------------------------------------------------------------------------
int main(void)
{
//시스템 초기화
SystemInit();
//LED포트 초기화
Led1Init();
Led1On();
Led2Init();
Led2On();
//UART Init
DebugInit(BAUD_57600);
DebugPrint("[AT90USB1287-EX] Test Program - UART\r\n");
while(1)
{
switch(DebugGetByte())
{
case '0':
Led1On();
DebugPrint("LED1 On\r\n");
break;
case '1':
Led1Off();
DebugPrint("LED1 Off\r\n");
break;
}
}
}
//-----------------------------------------------------------------------------
반응형