ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ELECTRONICS] ATmega328 LED 깜빡거리기
    ELECTRONICS 2019. 6. 28. 11:16

    펌웨어 신삥.. ATmega128로 시작하면 좋겠지만 따로 구매할 필요 없이 기존에 가지고 있던 아두이노 우노의 ATmega328로 시작했습니다.

    반드시 보고 넘어가야 할 ATmega328의 핀 배열입니다.

    ATmega328은 핀 28개로 구성되어 있는데,

    디지털 전원핀 2개 아날로그 전원핀 3개를 제외한 23개의 핀을 통해 데이터 교환이 이루어집니다.

    *아두이노의 경우 9번과 10번 핀에 16MHz의 크리스털을 연결해서 ATmega328을 위한 클록을 공급하기 위해 사용되고

    1번 핀은 리셋핀으로 사용되기 때문에 20개의 핀을 통해 데이터 교환이 이루어집니다.

     

    PB,PC,PD에서 P는 Port를 의미합니다.

    ATmega328은 8비트 CPI를 포함하고 있기 때문에 한 번에 처리할 수 있는 데이터의 크기는 8비트입니다.

     

    펌웨어를 처음 시작할 때 팀장님의 소스코드를 봤는데 이상한 이름의 변수가 있어서 물어봤더니 전용 레지스터를 변수로 쓰는거라는 어려운 정보를.. 얻고 또 한참을 헤맸는데..!

    ATmega328P의 레지스터 이름을 보려면 'iom328p.h' 파일을 열어보면 됩니다.

    레지스터 이름이 정의되어 있고 각 비트에 이름이 정해져있어서 아주 쉽고! 간편하게 사용할 수 있습니다.

     

    오늘은 LED를 깜빡거려보겠습니다.

     Atmel Studio 7.0을 켜고 파일-새로 만들기-프로젝트를 선택합니다.

    다이얼로그에서 GCC C Executable Project를 선택하고 프로젝트의 이름과 파일이 저장될 위치를 선택합니다.

    그런 다음 OK를 누르면 MCU를 선택할 수 있는 창이 뜹니다.

    ATmega328P를 선택하고 OK를 누르면 프로젝트가 생성됩니다.

    이제 코드를 작성해봅시다. 아주 간단합니다!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #define F_CPU 16000000L
    #include <avr/io.h>
    #include <util/delay.h>
     
     
    int main(void)
    {
        DDRB = 0x20;
        
        /* Replace with your application code */
        while (1) 
        {
            PORTB = 0x00; //LED 끄기
            _delay_ms(1000);
            PORTB = 0x20; //LED 켜기
            _delay_ms(1000);
        }
        return 1;
    }
     

    이렇게 작성하고 빌드를 하면?

    프로젝트가 저장된 파일 안에 Debug폴더가 생기고, hex 파일이 생성됩니다.

    Tools(도구) - Add Target : 타켓의 포트를 설정합니다.

    Tools(도구) - Device Programming - Memories 탭에서 Flash부분에 hex 파일을 지정하고 Progam 버튼을 누르면 아두이노 우노 보드에 붙어있는 LED가 1초마다 깜빡거리는 것을 확인할 수 있습니다.

    'ELECTRONICS' 카테고리의 다른 글

    [ELECTRONICS] Atmel Studio 사용하기  (2) 2019.05.31
    [ELECTRONICS] ATmega328 개발 준비  (0) 2019.05.31
Designed by Tistory.