[AVR]/Mega82018. 8. 22. 05:55

ATmega88 EVM - Atmel START UART 테스트 예제

ATmega88 EVM - Atmel START UART 테스트 예제




Atemel Studio로 새로운 Atmel START 프로젝트를 생성해서 


"Add software component" 메뉴로 UART 드라이버를 추가 한다.






UART_0 가 생성되고 설정을 클릭해 보면 핀맵 및 보레이트 등의 UART 관련 설정들을 설정할 수 있다.

그리고 printf 지원 여부도 선택 할 수 있다.





이후에 프로젝트 생성하면 기본 코드가 자동으로 생성된다.





자동 생성된 코드는 usart_basic.c 파일로 저장되어 있고 주요 함수를 보면 아래와 같다.

AVR UART 초기화 코드

int8_t USART_0_init()

{


// Module is in UART mode


/* Enable USART0 */

PRR &= ~(1 << PRUSART0);


#define BAUD 115200


#include <utils/setbaud.h>


UBRR0H = UBRRH_VALUE;

UBRR0L = UBRRL_VALUE;


UCSR0A = USE_2X << U2X0 /*  */

         | 0 << MPCM0;  /* Multi-processor Communication Mode: disabled */


UCSR0B = 1 << RXCIE0    /* RX Complete Interrupt Enable: enabled */

         | 0 << UDRIE0  /* USART Data Register Empty Interupt Enable: disabled */

         | 1 << RXEN0   /* Receiver Enable: enabled */

         | 1 << TXEN0   /* Transmitter Enable: enabled */

         | 0 << UCSZ02; /*  */


// UCSR0C = (0 << UMSEL01) | (0 << UMSEL00) /*  */

// | (0 << UPM01) | (0 << UPM00) /* Disabled */

// | 0 << USBS0 /* USART Stop Bit Select: disabled */

// | (1 << UCSZ01) | (1 << UCSZ00); /* 8-bit */


#if defined(__GNUC__)

stdout = &USART_0_stream;

#endif


return 0;

}



AVR UART 송수신 코드

void USART_0_write(const uint8_t data)

{

while (!(UCSR0A & (1 << UDRE0)))

;

UDR0 = data;

}



uint8_t USART_0_read()

{

while (!(UCSR0A & (1 << RXC0)))

;

return UDR0;

}





Posted by nexp

댓글을 달아 주세요

[AVR]/Mega82018. 8. 22. 05:54

#ATmega328 EVM 보드 제작 (ATMega88)

#ATmega328 EVM 보드 제작 (ATMega88)



여러 용도로 테스트 할 일이 있어 s-Type EVM 형태의 표준 핀맵을 따르는 테스트 보드를 제작 했다. 32핀 AVR의 다양한 페키지를 지원 하도록 해서 PCB하나로 기존 가지고 있던 AVR칩을 테스트 할수 있게 했다.



기존의 s-Type EVM타입의 표준 핀맵을 사용하기 때문에 확장 테스트 보드도 기존 보드에 호환해서 사용할 수 있다.







Posted by nexp

댓글을 달아 주세요

[AVR]/ATTiny2012. 12. 14. 15:25

[ATtiny10 EVM] 6핀초소형 AVR 보드 제작

[ATtiny10 EVM] 6핀초소형 AVR 보드 제작

 


타입의 초소형 MCU시장에 AVR도 들어왔다. Microchip사의 PIC10시리즈가 가장 작았는데 동일한 타입에 성능은 더 좋은 MCU를 출시 했다.


ATtiny10의 특징은 아래와 같다.

512/1024 Bytes FLASH
32 Bytes SRAM
12 MIPS Throughput at 12 MHz
One 16-bit Timer/Counter with Prescaler and Two PWM Channels
4-channel, 8-bit ADC
Idle Mode : 25uA at 1MHz and 1.8V
Power-down Mode: < 0.1uA at 1.8V

 

 

 

 


[SS-Type EVM] 확장 보드에 연결하여 테스트가능 하다.









[ATtiny10 EVM] 회로도

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[AVR]/Mega1282012. 5. 3. 21:20

AMega128 Ethernet Test 보드 - 테스트 하기

AMega128 Ethernet Test 보드 - 테스트 하기

 

 

 

 소스코드
테스트 소스코드 는 TCP 서버 테스트를 위한 예제코드

 


 

//-----------------------------------------------------------------------------
//수신데이터 처리
void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)
{
 unsigned int i;

 DebugPrint("Read Data[%d]\r\n", len);
 
 for(i=0;i<len;i++)
 {
  //if(i%16==0)DebugPrint("\r\n");
  DebugPrint("%c", pRcvBuffer[i]);
 }

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

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

 

 


 

USB2UART 를 위해 USB를 연결하고, 랜 캐이블을 연결한다.

  

 

CP2012 칩의 드라이버 파일은 아래 링크에서 최신파일을 받을 수 있다.

  CP210x_VCP_Win2K.exe

 http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

 

 

 

펌웨어 다운로드 하고 USB 연결후 하이퍼 터미널(보레이트 115200bps)에 아래와 같이 레지스터 정보를 표시되면 정상동작을 확인할 수 있다.

 

 

코드상에서 보드의 IP를 설정할 수 있다. 여기서는 192.168.0.100 , Port 5000 으로 설정되어 있다.

 // MY Source IP     : 192.168.0.100
#define MY_SOURCEIP {192,  168, 0,  100}

 

// MY Listen Port  : 5000

#define MY_LISTEN_PORT 5000      

 

 


 

테스트용 PC프로그램

PC측 호스트 프로그램은 TCP루프백 테스트를 할 수 있는 AX 플그램을 사용한다.

 


 

 

기본 테스트하기

1) TCP 연결

 

 

보드 IP 192.168.0.100, 5000으로 접속

 

 

정상적으로 접속되면 메세지가 출력된다.

 

 

 

테스트 메세지 전송

 

 

테스트로 100개의 데이터 전송

 

 

 

수신된 데이터 확인

하이퍼 터미널에서 수신된 데이터를 확인 할 수 있다.

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[AVR]/Mega162012. 4. 22. 17:37

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

[ATMega16-SM EVM] ADC 테스트 - TFT LCD 그래프 표시

 

 

 

 

ATMega16-SM EVM 보드에서 ADC포트는 PORTA PA7~PA0(ADC7~ADC0)에 연결되어 있고 가변저항으로 ADC값을 확인할 수 있다.

 

 

 

AVR ATMega16 ADC 드라이버 코드

ATMega32 의 경우 ADCSR레지스터가 ADCSRA로 변경되었다.

//------------------------------------------------------------------------------
// Function Routine
//ADC Initialize
void AdcInit(void)
{
 ADMUX = 0;
    ADCSR = ADC_ENABLE | ADC_PRESCALE_DIV32;
}

//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
 unsigned int value = 0;

 ADMUX = port&7;
 ADCSR |= ADC_START_CONVERSION;

 while(!(ADCSR & ADC_COMPLETE));

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

 return value;
}
//------------------------------------------------------------------------------

 

 

 

 

AVR ATMega16 ADC 테스트 예제코드

 

int main(void)
{
 char c;
 unsigned int adc;
 unsigned char buf[8];
 
 SystemInit();
 
 Led1Init();
 Led1On();

 //UART Init
 DebugInit(BAUD_115200);
 DebugPrint("ADC Test Program\r\n");
 
 AdcInit();

 while(1)
 {

  adc =  AdcRead(7);

  buf[0] = (adc>>8);
  buf[1] = (adc&0xFF);

  adc =  AdcRead(6);

 

  buf[2] = (adc>>8);
  buf[3] = (adc&0xFF);

  SendPacket(SRL_CMD_PLOTY, buf, 4);

 

  Delay(20);
 }
}

 

 

 

AtMega32 ADC 테스트 동영상 - TFT LCD그래프 표시

 

Posted by nexp

댓글을 달아 주세요