저 전력 소모를 위해서는 MCU 포트로 부터 새어나가는 전류를 막아야 한다.

저전력에서의 최선의 방법은 MCU 를 최대한 많이 쉴 수 있는 시간을 마련하는게 최고의 방법이지만, 이건 기본적으로 하기 때문에 (IDLE MODE, STOP MODE) 서술하지 않는다.
또 저전력 소모에서는 크리스탈이나 오실레이터를 낮은 클럭대로 사용하면 크게 줄일 수 있다. (하.지.만. 인터럽트나 그 밖에 타이밍과 관련된 것들을 모두 다시 조정해야 하기 때문에 시작부터 정하는 것이 좋다.)

크게 줄이는 것은 아니지만 특히나 배터리를 사용하는 기기라면 0.01 mA 라도 적게 먹게 해야 1 초라도 더 버틸 수 있기 때문에 필요하다.

일단 포트 설정 방법은 IDLE MODE 에서도 통한다.

1. 모든 포트는 Output 포트로 설정한다.

2. 모든 포트를 Low로 설정한다.

딱 이 두가지 작업뿐이다. (간단하다!)

물론 항상 쓰는 포트에 대해서는 필요한 세팅을 해야 하지만, 잠깐씩 쓴다면 전환해 놓는 것이 전력소모를 줄이는데 좋다.

이 방법을 사용하면 정전기로 인한 충격에 대해서도 조금 더 강해질 수 있다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2006/12/04 16:19 2006/12/04 16:19
Posted by TylorSTYLE™
일단 이것은 정식 방법인지는 모른다.
꽁수일 수도 있고, 뭐... 일단 잘 되니 OK ! !

보통 SmartOption 은 MDS 장비와 타겟 보드를 이용하여 개발할 때에는 사용하지 않는다.
타겟에 딥 스위치나 점퍼로 SmartOption 을 설정하게 되어있거나, 설정이 필요없는 MCU 도 있기 때문에 SmartOption 을 롬의 지정된 영역에 넣을 필요가 없다.

하지만 양산시에는 예기가 달라진다.
양산시에는 SmartOption 을 조정하는 스위치 같은 것들은 넣을 수 없다. ( 딥 스위치나 점퍼를 이용한 세팅은 개발 편의를 위해 타겟만의 특수 기능이라고 보면 된다.)

양산시 사용할 인텔 표준 헥사 규격(Intel-Standard HEX Format) 으로 헥사 파일을 생성해 대량 롬 라이터(갱 라이터를 말한다)를 이용해 MCU 의 롬을 구울경우, 즉 대량생산시에는 헥사파일로 컴파일 결과물을 만들어야 하기 때문에 사용한다.

Intel-Standard Hex 규격에 대한 자료 ( 열기 )


먼저 사용할 삼성 MCU 에 데이터 쉬트를 보자!
데이터 쉬트는 삼성 반도체나 AllDataSheet 를 이용하면 된다.

S3F9488 의 경우 2-3 페이지에 스마트 옵션과 관련된 내용이 있다.

이제 상세 설명으로....
스마트 옵션 코드는 롬 코드에 존재해야되는데, 데이터 쉬트상에 보면 롬의 0x003C 번지부터 순서대로 4 개의 영역(4 Byte)에 이 코드를 넣으라고, 한다.
설정에 대한 내용은 데이터 쉬트를 참고하도록 하고...

이제 IAR 에서 간단하게 3 줄만 넣자.

/*코드 상단에*/   __code const unsigned char SmartOption[4] @ 0x003C = { 0x00, 0x00, 0xD8, 0x04 }   unsigned char SOTemp;........./*리셋 함수내에 위치*/   SOTemp = SmartOption[0];

__code 는 컴파일러 지시자로서 컴파일러에게 해당 변수 내용을 롬 코드로 만들라는 명령이다.
후반부에 @ 0x003C 는 주소를 표현하며 이 부분이 없을 경우 컴파일러 마음대로 위치시키게 된다.
이 함수는 램에 존재하지 않고 직접 롬에서 데이터를 읽기 때문에 램을 절약할 수 있다.
특히 __code 는 절대 변해선 안되는 코드일 경우에 좋다.

하단에 변수 선언과 선언한 변수에 데이터를 넣는 작업은 컴파일러 때문에 하는 작업이다.

컴파일러마다 특성이 다르기 때문에 약간씩은 다르지만 기본적으로 사용되지 않는 함수, 변수, 상수 등은 컴파일시 자동으로 제외된다. (물론 제외 안하는 것들도 있을 수 있으며, IAR 의 경우 사용 안하는 것들은 컴파일 하지 않는다.)
그렇기 때문에 강제로 딱 한번, MCU 가 리셋되었을 때(전원인가시, 리셋이 걸렸을 때) 리셋 부분에서 대충 데이터를 넣도록 하는것일 뿐, 큰 의미가 없다.

일단 이 방법의 강점은 걍 코딩하면서 쓴다는 것과, 급하게 스마트 옵션 변경시 HEX 파일에서 해당 부분을 수정하면 된다는 것이다. (물론 위에 걸어놓은 인텔 표준 헥사 규격을 알고 있어야 된다.)
이올린에 북마크하기(0) 이올린에 추천하기(0)
2006/11/01 02:14 2006/11/01 02:14
Posted by TylorSTYLE™

사용법 : PUSU <소스>

<소스>의 값을 스텍 포인터가 가르키는 곳에 넣는다.
단, <소스>의 하위 레지스터 값은 현재 가르키는 곳 + 1 에 넣고, <소스>의 상위 레지스터 값은 현재 가르키는 곳에 넣는다.
즉, PUSH 는 1 Byte (8 Bit)의 데이터를 처리한다.
그리고 이 명령은 스텍을 제어하는 명령이다. ( 스텍의 데이터 인·아웃 구조를 알아야 이해 가능 )

이올린에 북마크하기
2006/08/21 11:11 2006/08/21 11:11
Posted by TylorSTYLE™

사용법 : POP <목적지>

스텍 포인터가 가르키는 값을 <목적지> 에 넣는다.
단, 가르키던 곳의 데이터는 하위 레지스터에 넣고, 가르키던 곳 + 1 의 데이터는 상위 레지스터에 넣는다.
즉, POP 는 1 Byte (8 Bit)의 데이터를 처리한다.
그리고 이 명령은 스텍을 제어하는 명령이다. ( 스텍의 데이터 인·아웃 구조를 알아야 이해 가능 )

이올린에 북마크하기
2006/08/21 11:07 2006/08/21 11:07
Posted by TylorSTYLE™

사용법 : XCH <목적지>, <소스>

<목적지> 와 <소스> 를 그냥 바꾼다.
4 Bit MCU 지만 8 Bit 씩도 바꾸기가 가능하다.

XCHI 에 대해 사장님께서 설명해주시길 삼성 MCU가 NEC 쪽 영향을 받아 4 Bit MCU 임에도
불구하고 8 Bit 연산이 가능하다고 하셨다.
(상세한 건 여기저기 잘 알아보고 올리겠다.)

영어로 표현하자면 SWAP 이라고 표현하면 정확하다.

tmp = a;
a = b;
b = tmp;

이렇게 표현하면 정확하다고 볼 수 있겠다!!

이올린에 북마크하기
2006/08/18 20:21 2006/08/18 20:21
Posted by TylorSTYLE™

BLOG main image

카테고리

전체 (119)
Freeware (2)
SAMSUNG MCU (14)
Embedded Linux (10)
AE32000(EAGLE) (2)
Mac OS X (5)
신변잡기 (48)
디지털 회로 (1)
Programming (12)
무선 네트워크 (15)
Computer (5)
사용기 (5)

글 보관함

124

87

-35 days

today : 17

Daum 블로거뉴스
믹시