AtmelStudio7 (AVRStudio7) 프로그램 다운로딩

앞에서 AtmelStudio7을 이용하여 컴파일 하는 방법을 포스팅 하였습니다. 이제 AVR 보드에 프로그램을 다운로딩하는 방법을 알아보겠습니다.
(요즘은 보드에 프로그램 넣는 것을 ‘업로딩’이라고도 합니다.)

 

프로그래밍 설정

[Tools] => [Device Programming]를 실행합니다.

[WAT-ISP29] AVR ISP 가 연결된 포트를 선택합니다.

 

Device 를 선택합니다.

 

[Apply]를 클릭하면 더 자세한 설정창이 표시됩니다.

 

설정은 보드 환경에 맞게 해주시고, 잘 모르면 Close로 닫아도 됩니다.

 

[Start Without Debugging]으로 다운로드 후 실행을 합니다.

 

PORTB에 연결된 LED 가 약 1초 간격으로 ON/OFF 를 반복합니다.

 

아래와 같이 ‘ISP on STK500’ 상태에서 프로그래밍 다운로딩이 가능합니다.
만약 ‘Simulator’ 상태라면 클릭하여 변경할 수 있습니다.

 

이 예제는 아래의 코드를 사용하였습니다.

 

AVR ISP 자료들

AVR Studio4
AVR Studio7

 

 

AVR ISP 프로그램 케이블 제품구매

WAT-AVR ISP (10핀 플랫케이블) 는 http://kit128.com/goods/view?no=10 에서
WAT-AVR ISP (6핀 케이블) 는 http://kit128.com/goods/view?no=4 에서

WAT-ISP79 AVR ISP(표준10핀) 케이스 포함은 http://kit128.com/goods/view?no=79 에서
WAT-ISP79 AVR ISP(표준10핀) (케이스 미포함)은 http://kit128.com/goods/view?no=113 에서

[WAT-ISP29] USB AVR ISP 프로그램 케이블 (표준10핀)는 http://kit128.com/goods/view?no=29 에서 구매하실수 있습니다.

 


Posted by WhiteAT

댓글을 달아 주세요

 

준비

 

- 프로그램 설치: http://whiteat.com/260

(WinAVR, AVRStudio 가 설치되어 있어야 ATMEGA128에 프로그램을 할 수 있습니다.)

 

- 프로그램 라이팅 방법: 다운로드

(직접 작성한 프로그램을 ATMEGA128 에 라이팅 하는 방법입니다.)

 

- ATMEGA128 초급 키트 (http://kit128.com/goods/view.php?seq=57 )

 

 

 

 

 

 

LED 회전 ON/OFF

 

PORTE에 연결된 8개의 LED 가 ON/OFF 하면서 시계방향으로 회전하는 예제입니다.

이 예제는 EX_01_01과 동일합니다. (http://whiteat.com/57204 참조)

 

/*

EX_01_01.c

 

PORTE에연결된LED 순차적으로ON 하기

 

AVRStudio 4.18

2012-01-08

 

홈페이지: http://whiteat.com

MCU자료실: http://avr128.com

쇼핑몰: http://kit128.com

 

*/

 

#include <avr/io.h>

 

// 일정시간딜레이(약1초)

void Delay()

{

    register unsigned long i;

    for(i = 0; i < 300000; i++)

    {

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");    

    }

}

 

int main()

{

    DDRE = 0xFF; // ALL OUTPUT

    PORTE = 0xFE;    // PORTE.0 LED ON

 

    while(1)

    {

        Delay();

 

        if(PORTE == 0x7F)    // 마지막LED 가ON 되었다면.

        {

            // 처음LED ON 되게

            PORTE = 0xFE;    // PORTE.0 LED ON

        }

        else                // 그렇지않다면

        {

            PORTE <<= 1;    // 한칸이동(PORTE = PORTE<<1; 와동일)

            PORTE |= 1;     // 마지막LED 는OFF (PORTE = PORTE | 0x01; 와동일)

        }

    }

}

 

 

 

 


 

 

 

 

 

 

 

 

 

LED 반복 ON/OFF

 

PORTA에 연결된 8개의 LED 를 교대로 ON/OFF 하는 예제입니다.

 

#include <avr/io.h>

 

// 일정시간딜레이(약초)

void Delay()

{

    register unsigned long i;

    for(i = 0; i < 300000; i++)

    {

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

        asm volatile(" POP R0 ");

        asm volatile(" PUSH R0 ");

     asm volatile(" POP R0 ");    

    }

}

 

int main()

{

    DDRA = 0xFF;

    PORTA = 0x55; // 0, 2, 4, 6 bit LED OFF

 

 

    while(1)

    {

        PORTA = 0x55; // 0, 2, 4, 6 bit LED OFF

         Delay();

 

        PORTA = 0xAA; // 1, 3, 5, 7 bit LED OFF

        Delay();

 

    }

}

 

 

 

 

 

 




 

ATMEGA128 로 LED 를 ON/OFF 하는 예제를 다루어 보았습니다.

 

감사합니다.

 

'AVR 예제' 카테고리의 다른 글

OUTPUT 실험, WAT-AVR128  (0) 2013.05.30
Posted by WhiteAT

댓글을 달아 주세요

WAT-AVR128_PLUS 모듈

AVR키트 2013. 4. 8. 17:21




WAT-AVR128 모듈과
확장 보드의 기능을 합친 모듈 입니다.



WAT-AVR128 보드 얼.pdf

WATAVR128_manual.pdf

AVR128 모듈을 다른 보드에 연결하여 사용할수 있는 확장 보드입니다.



PORTA,
PORTB,
PORTC,
PORTD,
PORTE,
PORTF

등의 포트를 다른 보드와 연결해서 사용할 수 있습니다.

 

 

 

 

 

 

 

 

쇼핑몰에서 구매하기

 

 

 

 

 

Posted by WhiteAT

댓글을 달아 주세요

WAT-LED

전자 키트 2013. 4. 8. 16:15
 


WAT-AVR128 모듈과 연결하여 LED ON/OFF 실험을 할수 있는 모듈입니다.

 

 

 



 

 

LED 를 타원 형태로 배치하여 LED 회전(정방향, 역방향), 이동 등의 다양한 실험을 할 수 있습니다.

 

 

 

 

/*

  EX_01_01.c

 

  PORTE에연결된LED 무한히 회전하기

 

  Main Clock : 11.0592Mhz 

 

  AVRStudio  4.18

  2012-01-08

 

  홈페이지:  http://whiteat.com

  쇼핑몰:    http://kit128.com

 

*/

 

#include <avr/io.h>

 

// 일정시간딜레이

void Delay()

{

         register unsigned long i;

         for(i = 0; i < 300000; i++)

         {

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                  asm volatile(" PUSH  R0 ");

                  asm volatile(" POP   R0 ");

                 asm volatile(" PUSH  R0 ");

                 asm volatile(" POP   R0 ");

                 asm volatile(" PUSH  R0 ");

    asm volatile(" POP   R0 ");     

         }

}

 

int main()

{

         DDRE = 0xFF; // ALL OUTPUT

         PORTE = 0xFE;         // PORTE.0    LED ON

 

         while(1)

         {

                  Delay();

 

                  if(PORTE == 0x7F)    // 마지막LED ON 되었다면.

                  {

                           // 처음LED ON 되게

                           PORTE = 0xFE;         // PORTA.0    LED ON

                  }

                  else                               // 그렇지않다면

                  {

                           PORTE <<= 1;         // 한칸이동한후

                           PORTE |= 1;            // 마지막LED OFF 되게

                  }

         }

}

 

 


Posted by WhiteAT

댓글을 달아 주세요

 

 

 

 

AT45DB041D 데이터 플래시를 SPI 로 구동할 수 있는 모듈입니다.

MCU 의 구동에 추가적인 메모리가 필요할 때 SPI 기능을 실험할 때

적합한 모듈입니다.

WAT-AVR128 에 바로 연결하여 사용할 수 있습니다.

 

 


 






ATMEGA128 용 소스코드

 

/*

         EX_06_01.c

 

         SPI DataFlash 읽고쓰는예제입니다.

 

  SPI 를초기화한후

  데이터를쓰고읽은후

  쓰고읽은데이터가동일한지확인합니다.

 

         AVRStudio  4.18

         2013-03-08

 

 

*/ 

 

#include <stdio.h>

 

#include <avr/io.h>

#include "WAT128.h"

#include "AT45DB161D.h"

 

 

BYTE Data[256];   // w

BYTE ReadData[256];

 

 

int main()

{

  const BYTE BufferNum =AT45DB_BUFFER_1;

  const BYTE PageNum =4;

 

  DDRA = 0xFF;

  PORTA = 0xFF;

 

  // AT45DB SPI 초기화  

  SpiInit();

  SFlash_GetID();

 

  // 버퍼로한번써줘야한다.(중요)

  PageToBuffer(1,0);

 

  // Data 에임의의값

  for(int i=0;i<256;i++)

  {

    Data[i] = i;

  }

 

  // Data 값을버퍼에넣기

  SFlash_WriteBuffer(BufferNum,0,Data,256);

 

  // 버퍼값을페이지(실제저장할위치)에쓰기

  SFlash_BufferToPage(BufferNum, PageNum, 1);

 

 

  // 읽어올변수(ReadData)에임의의값쓰기

  for(int i=0;i<256;i++)

  {

    ReadData[i] = 0xff;

  }

 

  // 페이지데이터를버퍼로가져오기

  PageToBuffer(BufferNum,PageNum);

 

  // 버퍼데이터를ReadData로가져오기

  GetMemBuffer(ReadData);

 

  //

  for(int i=0;i<256;i++)

  {

    if(ReadData[i] != Data[i] )

    {

      while (1)

      {

        // 쓰고읽은데이터가다르다면

        PORTA = 0x55;

 

      }

    }

  }

 

  // 쓰고읽은데이터가동일하다면

  PORTA = 0xf0;;

  while(1)

  {    

  }

}       

 


Posted by WhiteAT

댓글을 달아 주세요

 

다운로드

매뉴얼: WAT-IO_ADC매뉴얼.pdf  

펌웨어 소스코드: EX_09_03.zip

   

 

 

 

 

제품 소개

   

WAT-IO&ADC 모듈은 AVR, Cortex-M3, PIC 등의 MCU와 10P Flat 케이블을 연결하여 Input/Output을 실험할 수 있는 모듈입니다. FND, LED, BUZZER 을 제어할 수 있으며 가변저항, CDS(빛의 밝기), 딥 스위치, 로터리 스위치의 값을 읽을 수 있는 제품입니다.

 

 

특징

 

항목

내용

FND

4 digit

LED

8 port

BUZZER

1 port (5V)

가변저항

5K

CDS

CDS

딥 스위치

8 channel

로터리 스위치

10R

크기

85 mm x 85 mm

인터페이스

Digital Input/Output

 

 

구조

    

   

 

 

외형

 

 

 

 

 

 

 

 

회로도

 

 

 

외부 인터페이스

 

 

커넥터

 

 

 

 

번호

핀명

설명

1

D0

DATA (bit 0)

2

D1

DATA (bit 1)

3

D2

DATA (bit 2)

4

D3

DATA (bit 3)

5

D4

DATA (bit 4)

6

D5

DATA (bit 5)

7

D6

DATA (bit 6)

8

D7

DATA (bit 7)

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< FND DATA >

 

번호

핀명

설명

1

RO0

로터리 스위치 핀 0

2

RO1

로터리 스위치 핀 1

3

RO2

로터리 스위치 핀 2

4

RO3

로터리 스위치 핀 3

5

FND0

FND 0 선택 핀

6

FND1

FND 1 선택 핀

7

FND2

FND 2 선택 핀

8

FND3

FND 3 선택 핀

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< FND SELECT, ROTARY SWITCH >

 

번호

핀명

설명

1

LED0

LED 0 제어 핀

2

LED1

LED 1 제어 핀

3

LED2

LED 2 제어 핀

4

LED3

LED 3 제어 핀

5

LED4

LED 4 제어 핀

6

LED5

LED 5 제어 핀

7

LED6

LED 6 제어 핀

8

LED7

LED 7 제어 핀

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< LED >

 

 

 

번호

핀명

설명

1

AVCC

ADC 컨버터용 전압

2

AREF

ADC 컨버터용 기준 전압

3

CDS

CDS 센서 연결 핀

4

VR

가변저항 연결 핀

5

   

6

   

7

   

8

BUZ

부저 연결 핀

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< ADC >

 

번호

핀명

설명

1

DIP0

딥스위치 1번 핀

2

DIP1

딥스위치 2번 핀

3

DIP2

딥스위치 3번 핀

4

DIP3

딥스위치 4번 핀

5

DIP4

딥스위치 5번 핀

6

DIP5

딥스위치 6번 핀

7

DIP6

딥스위치 7번 핀

8

DIP7

딥스위치 8번 핀

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< DIP SWITCH >

 

 

ATMEGA128 모듈에 연결

 

WAT-AVR128 모듈의 PORTA는 LED, PORTB는 DIP SWITCH, PORTC는 FND SELECT, PORTE는 FND DATA, PORTE는 ADC 에 연결하여 PC 프로그램에서 제어 및 상태를 실시간으로 모니터링 하는 예제입니다.

 

 

 

WAT-AVR128 모듈

WAT-IO&ADC 모듈

PORTA

FND DATA

PORTB

 

PORTC

FND SELECT, ROTARY SWITCH

PORTD

DIP SWITCH

PORTE

LED

PORTF

ADC

 

 

ATEMGA128 펌웨어 코드

  /*

    EX_09_03.c

 

    USART0 로보드의상태PC로전송

    PC에서LED, BUZZER, FND 제어

    AVRStudio 4.18

*/

 

#include <avr/io.h>

#include "WAT128.h"

 

BYTE g_FNDData[4]={1,2,3,4};

BYTE g_BUZZER = 0;

BYTE g_LED = 0;

 

UINT16 g_adcCDS;    // CDS 값보관

UINT16 g_adcVR;    // 가변저항값보관

 

void OperDisplayFND()

{

    DisplayFND4(g_FNDData[0],g_FNDData[1],g_FNDData[2],g_FNDData[3]);

}

 

INT16 g_byteOperPCTXTimer = 0;

void OperPCTX()

{

    if(--g_byteOperPCTXTimer>0)

        return;

 

    PutChar0(0x02);                        // 0 시작신호

    PutChar0(PIND);                        // 1 DIP SWITCH

    PutChar0(GetRotaryInt());             // 2 ROTARY

    PutChar0(g_adcCDS>>8);                // 3 CDS 상위값

    PutChar0(g_adcCDS);                // 4 CDS 하위값

    PutChar0((g_adcVR)>>8 &0xFF); // 5 가변저항상위값

    PutChar0(g_adcVR&0xFF);                // 6 가변저항하위값

    PutChar0(0x03); // 7

    PutChar0(0xCC);                        // 8 체크섬

    PutChar0(0x03);                        // 9 끝신호

 

    g_byteOperPCTXTimer = 20;

 

}

 

// 가변저항, CDS 값을ADC로읽기

void OperReadADC()

{

    INT16 uiTemp; // 임시변수

 

    g_adcCDS = 0;

    // 노이즈를생각해서값을번읽어평균을낸다.

 

    for(uiTemp = 0; uiTemp<16;uiTemp++)

    {

        ADMUX=0x40 | 0x00;

        ADCSRA = 0xD7;

        while((ADCSRA & 0x10) != 0X10);

        g_adcCDS += ADCL + (ADCH*256);

    }

 

    g_adcCDS>>=4;

 

    g_adcVR = 0;

    // 노이즈를생각해서값을번읽어평균을낸다.

 

    for(uiTemp = 0; uiTemp<16;uiTemp++)

    {

        ADMUX=0x40 | 0x01;

        ADCSRA = 0xD7;

        while((ADCSRA & 0x10) != 0X10);

        g_adcVR += ADCL + (ADCH*256);

    }

 

    g_adcVR>>=4;

}

 

int main()

{

 

    BUZZER_INIT; // BUZZER 초기화

    OpenSCI0(115200);    // USART 0 열기

 

    InitFND4(); // FND 초기화

 

    InitADC();    // ADC 초기화

 

    DisplayFND4(3,4,5,6);

    InitRotary();

    

    DDRD = 0x00; // 딥스위치를입력으로설정

    DDRE = 0xFE; // LED

 

 

    while(1)

    {

        BUZZER_OFF;

        OperDisplayFND();

        OperReadADC();

        

        OperPCTX();

 

        if(0x02 ==GetByte0())

        {

            UINT16 uiData = 0;

            uiData = GetByte0(); //1

            uiData<<=8;

            uiData += GetByte0(); //2

 

            //buzzer

            g_BUZZER = GetByte0();

 

                

            g_LED =    GetByte0(); //4

            GetByte0(); //5

            GetByte0(); //6

            GetByte0(); //7

            if(0xCC == GetByte0() && 0x03 == GetByte0() )

            {

                if( g_BUZZER)

                {

                    BUZZER_ON;

                    DelayMS(2);

                }

 

                // PC에서받은LED 값을출력

                PORTE =~((g_LED)&0xFC);

 

                // FND 표시

                g_FNDData[0]=((uiData/1000)%10);

                g_FNDData[1]=((uiData/100)%10);

                g_FNDData[2]=((uiData/10)%10);

                g_FNDData[3]=(uiData%10);

            }

        }    

    }

} 

 

윈도우 코드(통신 처리 부분)

private void tmrRxData_Tick(object sender, EventArgs e)

{

btnRxSignal.BackColor = Color.White;

 

 

if (null == m_serialPort) return;

if (!m_serialPort.IsOpen) return;

 

int iRecSize = m_serialPort.BytesToRead; // 수신된 데이터 갯수

 

 

// AVR에서 10바이트식 보내는데 10바이트 이상이 들어 왔는지 체크

if (iRecSize >= 10)

{

byte[] buff = new byte[iRecSize]; // 임시 변수

 

// 시리얼 포트에서 데이터를 가져오자.

m_serialPort.Read(buff, 0, iRecSize);

 

// 맨앞의 값이 0x02 인지 체크

if (buff[0] !=0x02 )

{

for(int i=0;i<iRecSize-1;i++)

{

buff[i] = buff[i+1];

}

}

 

 

if (buff[0] == 0x02 && buff[8] == 0xCC && buff[9] == 0x03)

{

this.txbRotaryValue.Text = buff[2].ToString();

 

this.btnDIP1.BackColor = ((buff[1] & 0x01) == 0x01) ? Color.White : Color.Green;

this.btnDIP2.BackColor = ((buff[1] & 0x02) == 0x02) ? Color.White : Color.Green;

this.btnDIP3.BackColor = ((buff[1] & 0x04) == 0x04) ? Color.White : Color.Green;

this.btnDIP4.BackColor = ((buff[1] & 0x08) == 0x08) ? Color.White : Color.Green;

this.btnDIP5.BackColor = ((buff[1] & 0x10) == 0x10) ? Color.White : Color.Green;

this.btnDIP6.BackColor = ((buff[1] & 0x20) == 0x20) ? Color.White : Color.Green;

this.btnDIP7.BackColor = ((buff[1] & 0x40) == 0x40) ? Color.White : Color.Green;

this.btnDIP8.BackColor = ((buff[1] & 0x80) == 0x80) ? Color.White : Color.Green;

 

 

this.trbCDS.Value = (Convert.ToInt32(buff[3]) << 8) + (Convert.ToInt32(buff[4]) << 0);

this.trbCDS.BackColor = Color.FromArgb((1024-this.trbCDS.Value) / 4, (1024-this.trbCDS.Value) / 4, (1024-this.trbCDS.Value) / 4);

this.trbVR.Value = (Convert.ToInt32(buff[5]) << 8) + (Convert.ToInt32(buff[6]) << 0);

 

 

 

btnRxSignal.BackColor = Color.Green;

}

}

 

// AVR 모드로 명령 전송

this.SendToBoard();

 

}

 

 

윈도우 프로그램에서 FND에 5634, LED 모두 OFF 값을 전송하며 ATMEGA128 보드에서 딥 스위치4번 OFF, CDS값 최대, 가변저항 값 최소, 로터리 스위치 값 3을 전송되면 아래와 같이 됩니다.

< WAT-IO&ADC에 연결한 윈도우 프로그램 >

윈도우 프로그램에서 FND에 5667, LED 3,5,7번 ON 값을 전송하며 ATMEGA128 보드에서 딥 스위치1,3,5,7,번 ON, CDS값 최대, 가변저항 값 최대, 로터리 스위치 값 9을 전송되면 아래와 같이 됩니다.


원문: http://whiteat.com/57035


 

Posted by WhiteAT

댓글을 달아 주세요

 

WAT-CLCD 매뉴얼:  WAT-CLCD.pdf    


 

제품 소개

 

WAT-CLCD 모듈은 16 x 2 배열 캐릭터 LCD 를 장착한 모듈로 AVR, ARM7, PIC, 8051 등의 MCU 와 10P Flat 케이블을 연결하여 영문, 한글, 도형, 그림 등을 출력할 수 있는 제품입니다

 

 

 

 

 

 

항목

내용

출력 문자수

16 x 2

보드 크기

85 mm x 85 mm

백라이트 밝기

가변저항으로 조절 가능

인터페이스

Digital Input/Output

푸쉬 스위치

5EA 제공

 

 

 

    

 

외형

 

 

 

 

 

 

회로도

 

 

 

 

 

 

외부 인터페이스

 

 



 

 

 

번호

핀명

설명

1

D0

DATA (bit 0)

2

D1

DATA (bit 1)

3

D2

DATA (bit 2)

4

D3

DATA (bit 3)

5

D4

DATA (bit 4)

6

D5

DATA (bit 5)

7

D6

DATA (bit 6)

8

D7

DATA (bit 7)

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< DATA PORT >

 

 

 

번호

핀명

설명

1

/CS1

스위치1

2

/CS2

Data/Instruction

3

/RST

스위치2

4

RW

GLCD Read/Write

5

RS

스위치3

6

E

Enable

7

SW2

스위치4

8

SW1

스위치5

9

VCC

전원 ( DC 5V)

10

GND

그라운드

< CONTROL PORT >

 

 

 

 

원문은 http://whiteat.com/53668 에 있습니다.

 


Posted by WhiteAT

댓글을 달아 주세요

  

 

WAT-AVR128 모듈과 WAT-GLCD 모듈을 연결하여
128x64 배열의 Graphics LCD (모델명: GS-GB1286433YFYJ-C/R )를 제어해 보겠습니다.

 

 

 

 

 

 

 

 

LCD 의 데이터 선은 ATMEGA128의 PORTB 에 연결하고, 컨트롤 선은 PORTC를 사용합니다.

VR1의 5K 가변 저항은 Graphics LCD의 백라이트 밝기를 조절할 수 있습니다.

 

 

그래픽 LCD 에 우측 그림처럼 출력하고 3번째 줄부터는 영문'E'를 계속 출력하는 예제입니다. 이때 현재 위치에 커서를 표시해야 합니다.

화이트앳

WhiteAT.com

 

 

 

 

 

 

 

 

원문은 http://avr128.com 에 있습니다.

 

 

 

 

주요 코드

 

main.c 일부

/*

    

필요한보드

    1. WAT-AVR128 (모듈)

    2. WAT-AVR128 EXT (확장보드)

    3. WAT-GLCD (모노그래픽LCD)

 

기능

    그래픽LCD 에커서있는영문을표시한다.

 

 

    http://whiteat.com -> 업체홈페이지

    http://avr128.com -> ATMEGA128 자료실

 

    

    최종수정일: 2011-10-30

 

*/

 

 

#include <avr/io.h>

#include "WAT128.h"

 

 

int main()

{

 

    GLCD_Init();

    GLCD_ShowCursor(1);    // 커서를보이게하자

 

    GLCD_String(0,0," 화이트앳 ");

    GLCD_String(1,0," WhiteAT.com ");

 

    while(1)

    {

        // 약200ms 마다'E' 출력

        GLCD_English('E',0);

        DelayMS(200);

    }

}

 

 

 

 

 

 

 

다운로드 ( AVRStudio용)

매뉴얼: WAT-GLCD.pdf

펌웨어: EX_02_03.zip


Posted by WhiteAT

댓글을 달아 주세요

 

 

PORTA의 0 ~ 7 포트에 LED 8개가 연결되어 있고 LED에 불이 들어오게 하려면 해당되는 포트에 '0'을 출력하면 됩니다. PORTE 에 연결된 딥스위치 ON/OFF로 LED 를 제어할 수 있습니다. 딥스위치 1번을 ON 하면 D0가 ON, 딥스위치 1번을 OFF 하면 D0가 OFF 되고, 나머지 딥스위치 2 ~ 7번와 LED도 마찬가지로 ON/OFF 하는 예제입니다.

 

 

DIP SWITCH 1번 ON

●○○○○○○○

DIP SWITCH 1,2번 ON

●●○○○○○○

DIP SWITCH 5번 ON

○○○○●○○○

DIP SWITCH 모두 ON

●●●●●●●●

PORTA 에 LED, PORTE에는 딥스위치가 연결되며, 실험에 사용할 회로와 WAT보드의 연결 방법은 아래와 같습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

원문은 http://avr128.com 에 있습니다.

 

 

 

 

주요 코드

 

main.c 일부

/*

    EX_01_02.c

 

    PORTA의0 ~ 7 포트에LED 8개가연결되어있고

    LED에불이들어오게하려면해당되는포트에

    ''을출력하면됩니다.

    PORTE 에연결된딥스위치ON/OFF로LED 를제어할수있습니다.

    딥스위치1번을ON 하면D0가ON,

    딥스위치1번을OFF 하면D0가OFF 되고,

    나머지딥스위치2 ~ 7번와LED도

    마찬가지로ON/OFF 하는예제입니다.

 

         

 

    AVRStudio 4.18

    2011-08-25

 

    최신코드와다른예제는홈페이지에있습니다.

    http://avr128.com

    http://kit128.com

 

*/

 

#include <avr/io.h>

 

 

int main()

{

    DDRA = 0xFF;     // PORTA ALL OUTPUT

    PORTA = 0xFF;    // ALL LED ON

 

    DDRE = 0x00;    // INPUT for DIP SWITCH

 

    while(1)

    {

        PORTA = PINE; // 딥스위치값PORTA 로바로출력

    }

}

 

 

 

 

 

 

 

전체 소스 ( AVRStudio용)

 

 

 

 

Posted by WhiteAT

댓글을 달아 주세요

 

 

컴파일하여 생성된 결과 파일(헥사파일)을 다음과 같은 방법으로 라이팅 할 수 있습니다.

- Ponyprog 프로그램과 프린터 포트를 이용








 

< PONYPROG 실행 화면 >

 

 

 

 


http://www.lancos.com                  <= 여기에서 다운로드할 수 있다.

http://www.lancos.com/ppwin95.html     <= 조금더 자세한 주소

 



< PONYPROG 프로그램 기본적인 사용 방법 >
먼저 사용하는 Device Family 를 선택한다.

 

 

 

 

 

다음으로 사용하는 Device Type 를 선택한다.

 

 

 

 

 

다음으로 프로그램을 라이팅에 사용할 포트을 선정한다.
아래는 병렬 포트(LPT1)으로 셋팅하는 예이다.

 

 < PONYPROG 프로그램 FUSE 셋팅 >

 

 

 

 


하드웨어에 맞게 비트를 설정해 주어야 한다.

아래 메뉴를 선택하여 Configuration Bilts 창을 연다.

 

 

 

 

 

 

아래 예는 8Mhz 로 외부 XTAL 를 사용하는 설정이다.

 

 

 

 

 

 

< PONYPROG 프로그램 라이팅 >
기본적인 세팅은 끝났으며 이제 헥사파일을 라이팅 하면 된다.
메뉴를 선택한 후

 

 

 

 

 

라이팅할 헥사 파일을 열고,

 

 

 

 

메뉴를 선택하여 라이팅하면 라이팅이 진행됩니다.

 

     

 



=======================================================================================
Writing 속도 빠르게 하는 방법

PonyProg(Parallel Port) ISP가 느려서 사용하지 않는 분들은
한번, 하기 사항을 참고해 보시기 바랍니다.

1. 사용프로그램: PonyProg v2.06f
2. ISP형식: Parallel Port
3. 사용MCU: ATmega128
4. 사용환경: WindowsXP
-> PonyProg2000디렉토리에 들어 있는
     PONYPROG2000.INI 파일 설정중에서
     SPIBusSpeed=NORMAL을 SPIBusSpeed=FAST로 변경하니
     ISP Writing속도가 2배 정도 향상 되었습니다.







http://kit128.com/goods/view.php?seq=9 에서
케이블을 포함하여 6,600원에 저렴하게 판매하고 있습니다.







Posted by WhiteAT

댓글을 달아 주세요