[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

댓글을 달아 주세요

[AVR]/Mega162009. 11. 12. 11:13

[AtMega16-SM EVM] Atmega32 보드 관련 자료

[AtMega16-SM EVM] Atmega32 보드 관련 자료



자주 사용하는 특수 기능핀들을 표준화해서 보드를 제작해 두면 여러모로 사용할 곳이 많다. 이번에 TQFP44핀의 Atmega16 시리즈를 몇가지 기능을 업데이트 하여 [SM-Type EVM] 으로 제작해 보았다.



MPU는 TQFP 44핀의 Atmega16, Atmega163, At9085335등이 가능하지만 ATmega32를 이용하여 조립했다.



옵션으로 [AVR-USB 소프트웨어 스택] 을 이용하면 USB기능을 사용할 수 있도록 했다. 평소에 USB전원으로 사용하다 필요할때 저항 3개만 연결하면 된다.



회로도








[SM-Type EVM]이라 USB2UART, Bluetooth, Zigbee와 같은 통신 모듈을 연결 가능하다.





AVR Mega16 확장 테스트 보드



네트웍 확장 보드를 이용하면 ENC28J60 이더넷 컨트롤러 모듈로 이더넷 테스트가 쉽게 가능해 진다.



W5100 이더넷 모듈 연결

Posted by nexp

댓글을 달아 주세요

[AVR]/Mega162007. 2. 12. 21:16

[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;

                        }

                }

        }



 

Posted by nexp
TAG atmega16

댓글을 달아 주세요

[AVR]/Mega162007. 2. 11. 23:16

[ATmega16x EVM] 그래픽 LCD제어 예제

[Mega16 EVM]Glcd 테스트 예제

사용자 삽입 이미지

AVR Atmega16과 초소형 그래픽 LCD모듈을 이용한 테스트 예제를 작성해 보았다.

전체 예제는 하드웨어부분을 철저히 분리한 계층구조로 되어 있어 예파일을 mega163_evm폴더에 적당한 디렉토리(ex03_glcd)에풀고 mega16_glcd.asp프로젝트 파일을 열면 된다.

[Mega16 EVM]보드의 핀맵은 [00_hal]폴더의 glcd_hal1815.h파일에 정의 되어 있다.

glcd sed1815 관련 드라이버파일은 [01_drv/glcd_1815]폴더에 있다.

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



GLCD테스트 화면


소스코드

//=============================================================================

// [Mega16 EVM] Test Program

//

// by http://nexp.tistory.com

//=============================================================================

/*

 - Glcd 1815 Test Program

*/

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

#include "..\01_drv\glcd_1815\glcd.h"

#include "..\01_drv\glcd_1815\glcd_dsp5x7font.h"

void main(void)

{

        //Initialize CPU

        SystemInit();

        Led1Init();

        GlcdInit();

    GlcdSetAddress(0,0);

        GlcdPutStr("GLCD 1815 Test");   

    GlcdSetAddress(0,2);

        GlcdPutStr("Mega16 EVM Board");

   

    GlcdSetAddress(0,4);

        GlcdPutStr("cafe.naver.com/elab");

   

        while (1)

        {

                Led1Toggle();

                Delay(700);

        }

}


Posted by nexp
TAG atmega16, GLCD

댓글을 달아 주세요

[AVR]/Mega162007. 2. 10. 22:15

[ATmega16x EVM] LED제어 예제

[ATmega16x EVM] LED제어 예제

사용자 삽입 이미지


AVR의 개발환경은 GCC (AVR Studio 4)를 이용했고 최대한 간단하게 작성하려고 노력했다.

AVR Studio에서 프로젝트를 하나 생성하고 옵션을 아래와 같이 설정한다.


[Mega16 EVM]보드에는 2개의 LED가 PB3, PC7포트에 각각 연결되어 있고 디버깅용으로 테스트 해 볼 수 있다.



LED제어를 위한 드라이버는 속도를 위해 간단히 define문으로  /00_hal/폴더에 [board.h]에 저장되어 있다.

Led1Init()함수로 초기화 해 주고 Led1On(), Led1Off()로 간단히 제어할 수 있다.

/*
//-----------------------------------------------------------------------------
// LED Driver
#define LED1_BIT       BIT3
#define LED1_PORT   PORTB
#define Led1Init()       Sbi(DDRB, LED1_BIT)
#define Led1On()       Cbi(LED1_PORT, LED1_BIT)
#define Led1Off()       Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()  Tbi(LED1_PORT, LED1_BIT)


#define LED2_BIT       BIT7
#define LED2_PORT   PORTC
#define Led2Init()       Sbi(DDRC, LED2_BIT)
#define Led2On()       Cbi(LED2_PORT, LED2_BIT)
#define Led2Off()       Sbi(LED2_PORT, LED2_BIT)
#define Led2Toggle()  Tbi(LED2_PORT, LED2_BIT)
//-----------------------------------------------------------------------------
*/



예제 소스코드 자체는 상당히 간단하다. 일정간격으로 LED를 점등하는 예제 이다.



//-----------------------------------------------------------------------------
// Main Routine
//-----------------------------------------------------------------------------
int main(void)
{
     SystemInit();


     Led1Init();
     Led2Init();

     Led2On();
     Led1Off();


     while(1)
     {
          Led1On();
          Led2Off();
          Delay(300);


          Led1Off();
          Led2On();
          Delay(300);
     }

}
//-----------------------------------------------------------------------------
























 









USB포트로 파워를 받고 LED점등 테스트 동영상

Posted by nexp
TAG atmega16

댓글을 달아 주세요