디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

유리한과 함께하는 AVR로 임베디드 개념쌔우기 - #3. Hello World!

유리한갤로그로 이동합니다. 2007.06.27 01:24:25
조회 4262 추천 0 댓글 16






유리한과 함께하는 AVR로 임베디드 개념쌔우기 - Chapter 3.Hello World! (Ver. 0.1)


프로그래밍 세계 입문에 Hello World! 가 있다면
임베디드 세계에는 LED 깜빡이기가 있다.


일단 뭔진 몰라도 ATMega128의 pinout을 보자.




d0052452_01061816.jpg

atmega128칩의 다리에 대한 내용이지.

PA0부터 PG4까지가 입출력 포트이고
나머지는 전원 넣어주고 접지시켜주고 리셋시켜주는 용도로 사용하는 핀들이야.


일단 실습에서 입출력관련해서 사용할 레지스터는 PORTx , DDRx, PINx 세가지.


그럼 형이 발로 그린 회로도를 보도록 하자.



P0~P7이 보이고 저항타고 LED 타고 GND(접지.극성으로 치면 -)로 빠지지?
저항은 330을 달도록 하자.저항 색은 등등갈흑이 되겠네. 칩저항이라면 331.혹은 3300.

ATMega128(이하 128)은 포트가 총 7개가 있는데 PG는 좀 특별해. 쓰지 말도록 하자..
(기억이 잘 안나..뭐가 특별했었는지..ㅡㅡ;; 하여간 핀이 8개가 아니니 실습하기 애매하다.)


8비트 프로세서 답게 포트 하나당 핀이 여덟게. 즉 8비트 인거지.
(32비트인at91sam7s(arm7)의 경우 포트가 하나뿐이지만.. PA0~PA31까지..핀수가 조낸 많다.)


회로도의 P0~P7을 커넥터 처리하던지 그냥 점프 날리던지 해서
128의 Px0~7까지 엮어주자.


난 PD0~7에 엮었다고 치고 계속할께.
(일단 PD는 PORTD의 줄임말이야.)


일단 기본 소스부터 보여줄께.


#include<avr/io.h>  //필수적으로 include시킨다 입출력 관련 헤더파일이다.

int main(void)
{
    DDRD=0xff;
    PORTD=0xff;
    while(1);   // 임베디드는 특성상 프로그램이 종료되면 어디로 튈지 모른다..그래서 종료시키지 않는다.
    return 0;   // 그래도 표준지킨다고 main이 int형이 아니면 워닝을 쏟아낸다.
}


/*
아.. 생각해보니 툴 쓰는법도 안알려줬구나..
그건 내일 시간내서 하기로 하자.ㅎㅎ;;
*/


기껏해야 8줄짜리 코드..

나머지는 다 알테고..
DDRD는 뭐고 PORTD는 뭐냐?
자. 일단 헤더파일을 디벼보자.


/* Input Pins, Port D */
#define PIND      _SFR_IO8(0x10)

/* Data Direction Register, Port D */
#define DDRD      _SFR_IO8(0x11)

/* Data Register, Port D */
#define PORTD     _SFR_IO8(0x12)

이것만 간추렸다.
그럼또 _SFR_I08이 뭐냐? 가 문제가 되겠지?

또 뒤져보다보면
#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + 0x20)
이 발견된다

그렇다면 DDRD는 결국 0x11+0x20. _MMIO_BYTE(0x31)이라는 얘기?
가도가도 끝이 안보인다.

하지만 이제 마지막..
#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))
이라고 되어있다.

저멀리 돌아돌아왔지만 결국

*(volatile uint8_t *)(0x31) 이네?
(uint8_t는 unsigned char 타입이라는뜻.언사인드 인트 8bit type.)

*(volatile uint8_t *)(0x31)=0xff라는 뜻인데..
별이 두개씩나 나왔으니 눈앞이 어지럽지?


그냥 풀어 말하면 0x31이라는 주소에 0xff라는 값을 넣으라는거다.
이해가 안된다고?
unsigned char* DDRD=0x31;
*DDRD=0xff;
쯤으로 이해하면 이해되나?(근데 저렇게 쓰면 에러날게다.)

그럼 0x31에는 뭐가 들어있는걸까?


자, 128의 메모리 구조를 보자.
보다시피 0xff까지는 레지스터영역이다.



그럼 레지스터라는 얘기겠고..
0x31에 해당하는 레지스터를 찾아봤더니

DDRD가 맞구나! (괄호안에 들어있는게 절대주소. 괄호밖에 있는게 offset주소.)


그럼 데이터시트를 다시 뒤져서 I/O 쪽을 뒤져봤더니,, 레지스터에 대한 설명이 있다!



d0052452_01061392.jpg




PORTD 는 데이터 레지스터. R/W 가능하고 초기값은 0이고..
DDRD는 데이터 입출력 방향을 결정한다네. (1이면 출력 0이면 입력)
PIND는 입력 전용이고 Read만 가능한 놈이라고 써있다.

고로 DDRD=0xff; 는 PORTD를 모조리 출력핀으로 쓰겠다는 말씀 되겠다.

PORTD는 더 설명할 필요 없지?
0xff를 줬으니 모든 led에 불이 들어온다!

(0xff는 1111 1111 이다. avr을 하다보면 2진수,16진수랑 친해지게 될거다.
진수 개념 없으면 때려쳐!! )

그럼 0xaa를 주면 1010 1010 이니 한놈걸러 한놈씩 들어와 있겠지?

한개의 비트가 한개의 핀을 책임진다!
1을 주면 5v신호가 나가고 0을 주면 0v에 수렴하는 전압이 나간다.

이 개념만 잡는다면 avr은 이미 발 아래에 와있는거다!

이래저래 복잡하게 설명한것 같지만..

세줄 요약 해줄께.

DDRx 는 x포트의 입출력을 결정한다.
PORTx에 데이터를 넣으면 외부로 출력이 나간다.
프로세서는 입출력만 할줄 알면 60%는 끝난거다.



일단 내일 출근해야되니까 이정도만 해서 올리고 자야겠다.

내일 수정겸 툴 사용법까지 올릴께.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 우리나라를 대표해서 UN 연설자로 내보내고 싶은 스타는? 운영자 25/09/29 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47614 65
2893741 노인개씹버러지새끼들 요즘 100세인생이라고 안해서 좋다 ㅋㅋㅋ [1] 타이밍뒷.통수한방(1.213) 15:32 14 0
2893739 추석 연휴 업소 가는 형들 꿀팁 반값 꿀팁 풀게ㅅㅅㅅ [1] ㅇㅇ(39.7) 15:26 15 0
2893738 좆븅신이 지가 잘난줄 아는 이유 프갤러(210.217) 15:15 25 2
2893737 진짜 개발자가 설명 못하는이유 [1] 프갤러(210.217) 15:11 24 1
2893736 이제 개인용으로 램 64기가정도는 충분히 [7] ㅇㄷ(211.234) 15:00 32 0
2893735 가짜개발자 진짜개발자 구분법 [2] 발명도둑잡기(118.235) 14:58 32 0
2893734 결혼식 갔다왔다 [1] 발명도둑잡기(118.235) 14:57 15 0
2893733 시원하당 ♥냥덩이♥갤로그로 이동합니다. 14:43 14 0
2893731 동생 동영상편집 하고 싶다는데 중고나라에서 30짜리 컴으로 될까?? ㅇㅇ(223.39) 14:17 15 0
2893730 대한민국에 쓰레기들 생각하니까 짱개가 땡기네 프갤러(210.217) 13:41 20 0
2893729 정치가 ㄹㅇ 역겨움 프갤러(210.217) 13:22 25 0
2893728 카카오같은거 보면 개발자들 ㄹㅇ 띨방한 애들밖에 없는듯 [4] 프갤러(210.217) 13:11 66 1
2893727 나는내향적이야 나는조현병이야 손발이시립디다갤로그로 이동합니다. 12:36 26 0
2893725 창업 조언 발명도둑잡기(118.235) 12:23 21 0
2893724 프로그래밍 이야기가 1도 없노 ㅇㅇ(218.157) 12:23 28 0
2893723 신은 왜 쓰레기 같은 새끼한테 시간을 줬을까? 프갤러(210.217) 12:14 32 1
2893722 앱 오버레이 컴포넌트들 다 만들었다 [1] 노력갤로그로 이동합니다. 11:44 34 0
2893721 인공지능, ai 국비하면 취업 가능? [4] cvs.갤로그로 이동합니다. 11:24 64 0
2893720 [이스트소프트] AI 교육받고 제주 자연 속 워케이션 즐기자! [1] [ESTsoft]oreumi-camp(125.183) 10:39 43 1
2893719 뭔지랄을해야 이딴나라에서 태어날수있는거지 [1] 타이밍뒷.통수한방(1.213) 10:35 29 0
2893718 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 10:09 29 0
2893717 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09:33 26 0
2893716 수..숨막혀..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:31 20 0
2893714 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:26 24 0
2893713 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 09:25 30 0
2893712 의정부역 PC방 ㅇㅇ(223.38) 08:40 18 0
2893711 앱공장 해볼만함? 프갤러(180.231) 08:12 25 0
2893692 넥도리아 양념 헌돈 돼지 갈비 추석을 향해 전진. [1] 넥도리아2025(220.74) 06:22 26 0
2893675 음기 충전 발명도둑잡기(118.216) 05:13 50 0
2893673 조심해라 프갤러(211.118) 04:44 45 0
2893671 스포티파이 개인정보 국방부로 팔려나가는 건 시간문제 발명도둑잡기(118.216) 04:16 24 0
2893666 이 패션 진짜 올 가을 유행인가요? 발명도둑잡기(118.235) 04:01 27 0
2893665 스포티파이 인공지능 규제 발표 [1] 발명도둑잡기(118.235) 03:56 32 0
2893663 “엡스타인, 정보기관과 연관됐나” 의혹 여전… 美 정부는 침묵 발명도둑잡기(118.235) 03:36 21 0
2893655 흐름 상징 발명도둑잡기(118.235) 02:54 30 0
2893649 한국 국회, 정부, 법원은 여전히 미군위안부같은 정치를 하고 있다 발명도둑잡기(118.216) 02:42 20 0
2893644 사실 세대론으로 비판하면 안되고 생산수단 가진자를 비판해야 발명도둑잡기(118.235) 01:57 25 0
2893642 오늘의 소설, 영화 실마리: 성매매자 데이터베이스가 외국 정보기관에 발명도둑잡기(118.235) 01:52 17 0
2893641 엠스타인 명단 공개 예정인 의원 발명도둑잡기(118.235) 01:38 21 0
2893639 형님들 스타트업은 원래 조용한가요? [4] ㅇㅇ(106.101) 01:16 83 0
2893638 이직 하고 싶은데 물경력이라 방법이 없다.. [1] ㅇㅇ(175.197) 01:16 39 0
2893637 BTS (방탄소년단) 'Dynamite' 발명도둑잡기(118.216) 01:07 20 0
2893636 먹고 살려고 안해본 일이 없는데, IT 프리랜서 장점은 [1] ㅆㅇㅆ(124.216) 01:06 62 0
2893635 내가 느끼는게 랜딩 페이지 하나 작성에 15만 ㅆㅇㅆ찡갤로그로 이동합니다. 00:59 38 0
2893634 프리로 협업 몇번해봤는데 항상 느끼지만 ㅆㅇㅆ찡갤로그로 이동합니다. 00:56 42 0
2893632 어차피 개발하다보면 서로 지식의 빈곳이 있을수밖에 없어서 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 00:48 67 0
2893631 신해철, 싸이-Dear America [1] 발명도둑잡기(118.216) 00:38 32 0
2893629 우리나라가 소프트웨어 강국이 되려면 ㅇㅇ(121.168) 00:30 29 0
2893628 한국 10년뒤엔 러스트충들 국비찍어될듯 타이밍뒷.통수한방(1.213) 00:29 55 0
뉴스 '은수 좋은 날' 김영광, 미스터리한 미술강사의 아슬아슬한 이중생활! 극과 극 텐션으로 안방극장 장악! 디시트렌드 10.02
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2