[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

댓글을 달아 주세요

[MODULE]/DotMatrix2009. 1. 5. 22:02

DOT_8x8 Module Board 관련자료

DOT_8x8 Module Board 관련자료



회로도



테스트 예제 소스코드





테스트 보드



보드 제작시 주의 사항
보드 사이즈 때무에 ISP를 위한 커넥터가 필요해서 제작 했다.



ISP를 위한 리셋핀을 빼두지 않아서 프로그램 하기위해 PB4(/SS)신호에 리셋핀을 따로 점퍼를 날렸다.



테스트 동영상

Posted by nexp

댓글을 달아 주세요

[MODULE]/DotMatrix2009. 1. 2. 21:21

DOT_8x8 Module Board 제작

DOT_8x8 Module Board 제작



2 color DOT Matrix LMD12088BSRG 를 이용한 소형 보드를 제작했다. MCU는 쉽게 구할 수 있는 ATmega16을 이용하였다.





테스트 보드 제작

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

댓글을 달아 주세요