[Maker] AVR 을 이용한 자작 RC만들기 - 02.ATmega128 chip 설정, H/W 연결하고 LED점등해보기( ATmega128 chip setting, H / W connection and LED lighting)

in kr •  8 years ago  (edited)

이번 포스팅에서는 128을 사용하기 위한 프로그램 AVR Studio7 프로젝트 생성과 코딩후 빌드, 그리고 H/W 연결하는 부분까지 알아 보도록 하겠습니다.

모듈과 PC의 물리적 연결

프로그램을 셋업하기 위해서는 하드웨어의 연결이 필요합니다. 다음 링크
[Maker] AVR 을 이용한 자작 RC만들기 - 00.개요(Create Your Own RC with AVR - Overview)
페이지에 무슨 물품(제일 기본이되는 모듈)을 사야하는지 나와있습니다. 추가로 빵판(정식이름은 브레드 보드입니다.)이라는 회로 연결 판과 저항과 LED를 구매 하시면됩니다.

01HW연결-02.png
이게 빵판 사진입니다. 가로형이든 세로형이든 아무 상과없습니다.

디바이스-빵판 구매링크 →크기는 더 작은 빵판도 있습니다. 하지만 나중에 회로도 연결할때 넓rp 사용해야만 할때가 옵니다. 소자(칩, 저항, 스위치, IC, LED등등)

* 지금 구매한 모듈(AB-M128PRO-A)에서는 Port G에서 지원하는 테스트용 LED 가 있습니다.(아래 그림 동그란 노란색이 LED위치 입니다.) 회로도 연결을 할 필요 없이 점등을 할수있어서 이걸로 시작해 보도록 하겠습니다.*

구성도

구성도1.PNG

구성도입니다. 모듈에 전원공급을 해주고 PC와 모듈을 연결시켜 놓은 모습입니다. PC에서 모듈을통해 128chip에게 코딩한 내용을 다운로딩해주는 것입니다. 그러면 chip에서 다운받은 코딩내용에 따라 동작하게됩니다.

주의점

아답타 또는 모든 전자제품의에서의 정격전압은 중요합니다. 전원부의 전압이 다르거나 극성을 잘못 연결하면 chip이바로 사망해 버립니다. 조심합시다~!
이렇게 하드웨어 연결은 끝이 났습니다. 그다음엔 소프트웨어 AVR Studio7로 넘어 가갔습니다.

프로젝트 생성 그리고 코딩~!

차 첫화면에서 새로운 프로젝트를 선택합니다. 01첫빌드전-00.png
네모칸에 새로운 프로젝트를 클릭해서 생성합니다.

01첫빌드전-01.png
코딩언어를 설정하고 아래 프로젝트 이름을 정한다음에 클릭~!!

01첫빌드전-02.png
하드웨어 chip종류를 정하는 페이지입니다. 우리사용할 계열은 ATmega입니다.

01첫빌드전-03.png
사용할 chip은 128A이 내 모델입니다. 팀을 드리자면 모든 chip(IC)에는 모델 넘버가 적혀있습니다. 그 넘버대로 데이터 시트를 찾아서 공부하면 됩니다. 확인클릭 이제 막 기본 셋팅은 끝난 것 입니다.

// LED를 연결하여  1초간격으로 꺼졌다가 켜지는 매우 간단한 실습을 할예정입니다.
#include <avr/io.h>
#define F_CPU 16000000UL // 16 MHz
#include <util/delay.h>

int main()
{
    //초기설정 포트설정
    DDRG=0b00000011;     //포트G 출력용으로 설정하는 또 다른 방법(현재테스트에서 사용할 포트)
    DDRA=0xff;          //포트A 출력용으로 설정
    DDRB=0x00;           //포트B 입력용으로 설정

    while(1) 
    {
        PORTG=0xff;      //포트 G 모든 핀 출력(신호 1)
        _delay_ms(1000);  //1초점등(1ms = 0.0001s)
        PORTG=0x00;     //포트 G 모든 핀 출력정지(신호 0)
        _delay_ms(1000); //1초소등
    }
}

위와 같이 코딩했다. 코딩이 잘 되었나 알아보는 방법은 두가지가 있습니다. 상단 메뉴를 따라 Bulid → Bulid Solutions 를 선택한다. 아니면 F7을 누르면된다. 코딩이 잘되면 Error List에 다음과 같이 뜨게 됩니다.

01첫빌드전-06.png
아무런 에러가 없으니 이제 모듈을 연결 한뒤에 다운로딩해 주기만하면된됩니다.
아 ~ 코딩내용을 간단히 설명하자면 LED를 출력할 포트는 G포트 입니다. G포트를 출력모드로 만들어 주어야 합니다. 그 명령어가 DDRG = 0b00000011; 입니다. 여기서 사용된 0b는 이진법으로 포트 설정입니다. 0x는 16진수 포트 설정법입니다.
포트설정이 끝난 다음 while문을 통해 반복명령을 내리게 됩니다. while문은 while(조건)양식으로 구성이되는데 while(1)이라면 무한 반복 while(0)이면 한번 실행한뒤 끝나게 됩니다. 현재 while(1)이니까 무한 반복되겠습니다.
그내용은 포트G를 1초 간격으로 점등했다 소등했다 하는 명령입니다.

다운로딩기 셋팅

제가 사용할 다운로딩 기기도 디바이스마트에서 구매한것입니다.
디바이스마트 - AD-USBISP v6.0
AD-USBISP v6.0드라이버 → 필수 설치!!

그다음 상단메뉴 Tools - Add Target... 설정 클릭 그럼 창이 뜨는데 아래와 같이 맞춰주시면됩니다.

01isp다운로드-00.png

메뉴에서 Tools - Device Programming 클릭!! 여기서는 사용모듈을 다시 설정하게 됩니다. 처음 프로젝트를 설정할 때 처럼 같은 칩으로 셋팅하면됩니다. 그다음 Apply버튼 클릭!! 그럼 ISP Clock항목이 뜨게됩니다. 그다음 아까 코딩이 검증된 파일위치를 설정해 주고 다운로딩하기위해 memories 클릭!

01isp다운로드-01.png

여기서는 Flash롬에 넣어줄 파일방식을 hex로 바꾸어 주겠습니다. 옆 회색칸.... 을 클릭하여 hex파일로 바꿔 주시면됩니다. 보통 클릭하면 동을 프로젝트 파일폴더로 열리기 때문에 금방 찾으실 수 있습니다. 그다음 Program 클릭~!

01isp다운로드-02.png

이상이 없다면 LED가 1초 간격으로 점등이 될 것입니다. 이상이 있다면 에러가 뜨겠죠? 가끔씩 다운로더충돌이 나거나 칩이 망가지면 에러가 나게됩니다. 충돌이 나면 좀 쉬었다가(재부팅또는 프로그램 리셋) 다시 하면됩니다. 하지만 정말 칩이 망가진거면 AS를 보내야 합니다.(검색어로 '128칩살리기'라고 치시면 꼼수로 살리는 법이 나옵니다.) 다음 포스팅은 빵판과 모듈의 회로 구성을 보여드리겠습니다. 이전 포스팅은 아래 링크를 참고하세요~!

[Maker] AVR 을 이용한 자작 RC만들기 - 00.개요(Create Your Own RC with AVR - Overview)
[Maker] AVR 을 이용한 자작 RC만들기 - 01.AVR Studio7 설치(Create Your Own RC with AVR - AVR Studio7 Install)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

good job~

ㅋㅋ댓글감사합니당

빵판을 여기서 보게될 줄이야..ㅋㅋ 잘 읽고 갑니다~

  ·  8 years ago (edited)

빵판을 알아보시다니 영광입니다 ㅋㅋ 댓글과 보팅감사합니당~~

멋져요! ㅎㅎ

되도록이면 자주 올리고 싶은데 퇴근하고 나면 피곤해서 정신없이 자버리네요 ㅠㅠ 꾸준히 포스팅하겠습니다. 응원해 주셔서 감사합니다~

Congratulations @kview! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

If you want to support the SteemitBoard project, your upvote for this notification is welcome!