로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Arduino Open Source
아듀이노 함수의 상세설명
작성자 avrtools™        
작성일 2012/04/10
ㆍ추천: 0  ㆍ조회: 1834   
  플레시 메모리에 상수를 저장하고 읽는 함수
프로그램 메모리에 상수를 저장
글꼴 이나, 매우 많은 문자열을 SRAM에 저장하는 일반변수로 저장하면,
다름 변수와 작업영역의 충돌로 여러가지 문제점이 발생합니다.
이때는 프로그램 메모리인 FLASH ROM이나 EEPROM에 저장할 수 있습니다.
 
아듀이노 데시밀라나 M168 USB에 사용하는 ATMEGA168은 총 16K 바이트의 FLASH ROM과
1K 바이트의 SRAM, 그리고 1K 바이트의 EEPROM을 내장하고 있습니다.
 
먼저 FLASH ROM인 프로그램 메모리는 부트로더가 사용하는 공간 2K 바이트를 제외한
나머지 14K 바이트에는 부트로더가 실행코드를 업로드하는데 사용하고 있습니다.
 
프로그램 메모리의 남는 공간에 글꼴 같이 커다란 상수를 저장할 수 잇습니다.
2차원 배열을 사용해서 아래와 같이 8x8 영문 글꼴을 다음과 같이 정의합니다.
 
프로그램 메모리에 배열변수를 저장
SRAM에 저장하는 원래의 배열변수
uint8_t font[8]= { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 
프로그램 메모리(Flash ROM)에 저장하는 배열변수
 
// 먼저 프로그램 메모리에 저장하는 라이브러리를 부른다.
#include <avr/pgmspace.h>
PROGMEM uint8_t font[8]= { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 
아래와 같이 여러개의 배열변수를 집단으로 묶는 2차원 배열변수를 사용하기도 합니다.
// 먼저 프로그램 메모리에 저장하는 라이브러리를 부른다.
#include <avr/pgmspace.h>
 
// font[][8]은 [8]개로 된 문자변수를 줄의 갯수는 미확정 []으로 저장합니다.
prog_char font [] [8] ={
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
  { 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x00 },
};
 
프로그램 메모리에 저장된 배열변수 읽기
FLASH ROM에 저장된 글꼴을 부르는 방법은, 일반적인 배열변수 font[x][y]; 로는 읽을 수 없으며,
pgm_read_byte(&font[y][z]);를 사용해서, FLASH ROM에서 글꼴을 읽을 수 있습니다.
 
예를 들면 x=pgm_read_byte(&font[0][7]); 이라면,
x에 배열변수 font의 첫번째 배열에서 7번째 문자를 읽어 옵니다.
 
8개의 배열변수에 8개의 문자를 읽어 온다면,
char sram[8];
for (x =0; x <8; x++) sram[x] = pgm_read_byte(&font[0][x]);
 
이렇게 실행하면, font의 [0][0]에서 font [0][7] 까지 8개의 상수가, sram[0]에서 sram[7]까지 저장됩니다.
 
이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
AVRTOOLS™
   
  0
9999
윗글 변수의 크기
아래글 소프트웨어 Serial 함수
    N         제목    글쓴이 작성일 조회 추천
판매상품의 사용설명서는 다른 자료실에,,, avrtools™ 2011/08/30 (화) 1427 0
23 LCD 문자표시 (신형) avrtools™ 2012/04/12 (목) 2056 0
22 아듀이노 멜로디 연주 avrtools™ 2008/08/22 (금) 3395 0
21 아듀이노 4비트 LCD (구형) avrtools™ 2008/09/02 (화) 4248 0
20 아듀이노 가변저항 avrtools™ 2008/08/26 (화) 3047 0
19 직렬 데이터 이동(shift) 출력 avrtools™ 2012/04/10 (화) 1672 0
18 디지털 신호의 펄스폭을 측정하는 함수 avrtools™ 2012/04/10 (화) 1944 0
17 EEPROM 읽기, 쓰기 함수 avrtools™ 2012/04/10 (화) 2226 0
16 변수의 크기 avrtools™ 2012/04/10 (화) 1574 0
15 플레시 메모리에 상수를 저장하고 읽는 함수 avrtools™ 2012/04/10 (화) 1834 0
14 소프트웨어 Serial 함수 avrtools™ 2012/04/10 (화) 1758 0
13 아듀이노 터치스위치 [3] avrtools™ 2008/08/11 (월) 4063 0
12 아듀이노 shiftOut avrtools™ 2008/09/10 (수) 3301 0
11 아듀이노 스위치와 LED점등 avrtools™ 2008/08/13 (수) 4546 0
10 아듀이노의 주파수 출력 함수 avrtools™ 2009/10/20 (화) 2683 0
9 One Button Switch Library avrtools™ 2012/03/09 (금) 1796 0
8 아듀이노 논리연산 avrtools™ 2008/08/26 (화) 2941 0
7 아듀이노 PS2 키보드 읽기 avrtools™ 2008/09/10 (수) 3995 0
6 아듀이노 가로채기 함수 avrtools™ 2008/08/23 (토) 3126 0
5 아듀이노 전용명령 avrtools™ 2008/09/16 (화) 3874 0
4 아듀이노 PWM 출력과 타이머1 전용명령 avrtools™ 2008/08/19 (화) 3507 0
3 8비트 포트의 단일비트 조작방법 avrtools™ 2010/10/30 (토) 2310 0
2 직렬포트에서 문자를 받아 숫자 int로 저장 avrtools™ 2012/04/08 (일) 1647 0
1 직렬통신포트의 초기화 avrtools™ 2012/04/06 (금) 1436 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0