[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

댓글을 달아 주세요

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

[AT90USB1287-EX] 보드 제작 - AT90USB1287, ATMeaga128, 테스트 보드 제작

[AT90USB1287-EX] 보드 제작 - AT90USB1287, ATMeaga128,  테스트 보드 제작


AT90USB1287, ATMega128을 이용하여 [W5100 EVM] 이더넷,  [MP3 Module] (VS1033),  표준 8bit Mode [TFT-LCD MODULE] 등을 테스트 할 수 있는 보드를 제작했다.

기본적으로 AVR의 주요 기능을 테스트 할 수 있고, 주요 기능핀들은 확장 핀으로 할당되어 있다.
보드에는 USB2UART(CP2101), LED, CdS, 온도센서, 압력센서, IR 리모콘, MIC, Switch, 32kByte SRAM 등이 있어 AVR의 기본 기능을 테스트 할 수 있다.




AT90USB1287을 이용하면 USB Host기능을 테스트 할 수 있다. 메모리 스틱을 이용하여 MP3파일 출력이나 이더넷 FTP기능을 테스트 할 수 있다.




확장포트를 이용하여 TFT-LCD 모듈을 연결하여 테스트 가능하다.






표준 시리얼 핀맵을 이용해 USB2UART, Zigbee2UART, Bluetooth2UART, WiFi2UART 모듈을 연결할 수 있다.









Posted by nexp

댓글을 달아 주세요