[AVR]/AT90USB2012. 1. 24. 22:30

[AT90USB1287-EX] I1511 15" TFT LCD모듈 테스트

[AT90USB1287-EX] I1511 15" TFT LCD모듈 테스트



확장 포트는 표준 8bit 모드 TFT-LCD 모듈제어 포트를 연결할 수 있어 15" [I1511 TFT LCD] 모듈을 연결하여 테스트 가능하다.





AT90USB1287-EX I1151 TFT-LCD 드라이버 코드
Driver 코드에서 Enable 여부만 설정하면 코드 수정 없이 사용가능하다.
//-----------------------------------------------------------------------------
//TFT LCD Driver
#define TFT_DRV_HD66791                 0
#define TFT_DRV_COM44                   0
#define TFT_DRV_ST7735                  1
:





[AT90USB1287-EX] I1151 TFT-LCD 출력 테스트 결과


Posted by nexp

댓글을 달아 주세요

[AVR]/AT90USB2012. 1. 24. 17:46

[AT90USB1287-EX] AT90USB1287 TFT-LCD 출력 속도 테스트

[AT90USB1287-EX] AT90USB1287 TFT-LCD 출력 속도 테스트



16bit 240x400 한프레임 출력 시간은 140ms 정도 걸린다. 8비트 IO 제어 방식이라 빠른 속도를 기대하기는 힘들것 같다.


[AT90USB-EX] TFT LCD출력 속도 테스트 동영상






확장 포트는 표준 8bit 모드 TFT-LCD 모듈제어 포트를 연결할 수 있다.





[AT90USB-EX] TFT LCD Driver 코드
//-----------------------------------------------------------------------------
//TFT LCD Driver
#define TFT_DRV_HD66791                 0
#define TFT_DRV_COM44                   1
#define TFT_DRV_ST7735                    0

#define LCD_LAT_BIT      BIT4
#define LCD_LAT_PORT     PORTB
#define LCD_LAT_ON()     Sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF()     Cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT6
#define LCD_EN_PORT      PORTB
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      //BIT8
#define LCD_RST_PORT     //PORTB
#define LCD_RST_ON()     //Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF()     //Cbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT      BIT7
#define LCD_RS_PORT      PORTB
#define LCD_RS_OFF()     Cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT      BIT0
#define LCD_WR_PORT      PORTE
#define LCD_WR_OFF()     Cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON()      Sbi(LCD_WR_PORT, LCD_WR_BIT)

#define LCD_RD_BIT      BIT9
#define LCD_RD_PORT      PORTB
#define LCD_RD_OFF()     //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON()      //Sbi(LCD_RD_PORT, LCD_RD_BIT)

#define LCD_BL_BIT      BIT5
#define LCD_BL_PORT      PORTB
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define _LCD_DAT_OUT(Data)    PORTA = (Data>>8);\
                                     LCD_DATA_LATCH();\
                                     PORTA = (Data&0xFF);

#define TFTGpioInit()     Sbi(DDRB, BIT4|BIT5|BIT6|BIT7); Sbi(DDRA, 0xFF); Sbi(DDRE, BIT0);
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[AVR]/AT90USB2012. 1. 23. 23:40

[AT90USB1287-EX] 기본 테스트 - ADC (광센서 테스트)

[AT90USB1287-EX] 기본 테스트 - ADC (광센서 테스트)


[AT90USB1287-EX] 보드에는 ADC를 테스트 할 수 있는 CdS센서가 ADC2에 연결되어 있다.





AT90USB1287의 ADC는 확장포트 CN36에 모두 연결되어 있으므로 기타 ADC나 GPIO로 사용가능하다.






AT90USB1287 ADC 드라이버 코드
ATMega128과 다르게 ADCSR레지스터 명이 다르므로 수정이 필요하다.
//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;

 ADMUX = port&7;
 ADC_SR |= ADC_START_CONVERSION;

 while(!(ADC_SR & ADC_COMPLETE));

 value = ADCL;
 value = (ADCH<<8) | value;

 return value;
}



AT90USB1287 ADC 테스트 예제 소스 코드
#include "system.h"
#include "serial.h"
#include "adc.h"

int main(void)
{
 //시스템 초기화
 SystemInit();
 
 //LED포트 초기화
 Led1Init();
 Led1On();

 Led2Init();
 Led2On();

 //UART Init
 DebugInit(BAUD_57600);
 DebugPrint("[AT90USB1287-EX] Test Program - ADC\r\n");

 //ADC 초기화
 AdcInit();

 while(1)
 {
  DebugPrint("ADC=%d\r\n", AdcRead(2));
  Delay(100);
 }
}


Posted by nexp

댓글을 달아 주세요

[AVR]/AT90USB2012. 1. 23. 23:30

[AT90USB1287-EX] 기본 테스트 - UART

[AT90USB1287-EX] 기본 테스트 - UART




AT90USB1287은 UART가 1포트가 있다. ATMega128과 호환을 위해 UART1에 디버깅을 위한 USB2UART 모듈을 연결할 수 있도록 했다.




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))



1Byte 전송함수
void U1_PutByte(unsigned char Data)
{
  u1_WaitForSend();
  u1_TxData(Data);;
}

1Byte 수신함수
unsigned char U1_GetByte(void)
{
 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; 
  }
 }
}
//-----------------------------------------------------------------------------
Posted by nexp

댓글을 달아 주세요

[AVR]/AT90USB2012. 1. 23. 23:00

[AT90USB1287-EX] 기본 테스트 - LED 제어

[AT90USB1287-EX] 기본 테스트 - LED 제어




[AT90USB1287-EX] 보드 동작 테스트를 위한 가장 기본적인 방법으로 LED를 이용할 수 있다. AT90USB1287을 사용할 경우 PE4, PE5에 LED가 연결되어 있고 ATMega128을 이용할 경우 PG3, PG4에 연결된다.

90USB1287-EX] LED 회로도




[AT90USB1287-EX] LED Driver코드
//-----------------------------------------------------------------------------
// On board LED
#define LED1_PROT     PORTE
#define LED1_BIT     BIT4
#define Led1Init()     Sbi(DDRE, LED1_BIT)
#define Led1Off()     Sbi(LED1_PROT, LED1_BIT)
#define Led1On()     Cbi(LED1_PROT, LED1_BIT)
#define Led1Toggle()     Tbi(LED1_PROT, LED1_BIT) 

#define LED2_PROT     PORTE
#define LED2_BIT     BIT5
#define Led2Init()     Sbi(DDRE, LED2_BIT)
#define Led2Off()     Sbi(LED2_PROT, LED2_BIT)
#define Led2On()     Cbi(LED2_PROT, LED2_BIT)
#define Led2Toggle()     Tbi(LED2_PROT, LED2_BIT)  
//-----------------------------------------------------------------------------


AT90USB1287 LED제어 테스트 예제 코드
#include "system.h"

//-----------------------------------------------------------------------------
int main(void)
{
 //시스템 초기화
 SystemInit();
 
 //LED포트 초기화
 Led1Init();
 Led1On();

 Led2Init();
 Led2Off();

 //LED 점등
 while(1)
 {
  Led1Toggle();
  Led2Toggle();
  Delay(300);
 }
}
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요