MSP430 장비가 시작되지 않는 경우

기술노트 37778

아키텍처:

MSP430

컴포넌트:

general

업데이트:

2021-05-27 오전 10:56

소개

본 기술 노트는 MSP430 장비가 시작하지 않거나, 메인 함수에 도달하지 않는 경우에 대해서 다룹니다.

몇 가지 다른 증상

하드웨어가 아예 켜지지 않는 경우.

MSP430 장비가 "main()" 함수에 도달하지 않고 리셋되는 경우.

워치독 타이머가 초기화 동안 시간 초과되는 경우.

원인

만약 프로그램이 (4k가 넘을 정도로)많은 전역 초기화 데이터를 가진다면, cstartup 내부의 초기화 과정이 와치독 시간 초과 이전에 끝나지 않게 되고 장비는 리셋됩니다.

영향받은 파생모델

MSP430의 파생 모델 MSP430F1610, F1611과 F1612는 RAM이 크지만, 이 기술 노트는 RAM이 큰 모든 장치에 적용됩니다.

해결방법

초기화 단계 전에 와치독 타이머를 꺼야 합니다. 이 작업은 가급적이면 __low_level_init를 통해 수행되어야 합니다.

단계 (MSP430F1610, F1611 또는 F1612에 적용)

  • "low_level_init.c" (from ...\430\src\lib\)를 프로젝트 폴더에서 복사한다.
  • 복사 된 "low_level_init.c"를 프로젝트에 추가한다.
  • 복사본 "low_level_init.c"를 수정한다.
    • 파일에 다음을 추가하거나...
    • #include <msp430x16x.h>
    • ...다음을 추가...
    • #include <io430x16x.h>
    • __low_level_init() 함수내에 추가합니다.
    • WDTCTL = WDTPW + WDTHOLD;
  • 마지막으로 프로그램 상 어디에서 와치독이 활성화되게 할 것인지(필요한 경우) 고려해야 합니다. 이 경우 해당 위치에 적절한 C 소스를 추가합니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.