정의되지 않은 트랩으로 인해 컨트롤러가 재설정되는 dsPIC 30F4013의 두 가지 사례를 보았습니다. 왜 이런 함정들이 처음에 생겨 났는가는 여전히 미스터리이지만, 그것은 나의 즉각적인 질문이 아닙니다. 트랩이 발생하지 않아야 할지라도 항상 모든 트랩을 정의 하는 것이 좋은 프로그래밍 관행이라고 생각하기 시작했습니다 . 따라서 무작위 재설정 대신 적어도 명확한 오류 메시지가 나타납니다. 이것이 내가 모르는 표준 관행입니까? 이 연습에 고려해야 할 단점이 있습니까?
4
귀하의 질문에 대한 답변은 아니지만 얼마 전에 dsPIC 및 PIC24 시스템에서 이러한 종류의 증상으로 어려움을 겪었습니다. 필자의 경우 트랩은 16 비트 값에 대한 포인터를 역 참조하는 코드 비트에서 비롯 되었으며이 포인터는 원형 통신 버퍼를 가리 키기 때문에 홀수 (짝수) 값을 가졌으며 이전에는 없었습니다. 16 비트 값이 홀수 또는 짝수 경계에서 시작하는지 알 수 있습니다. XC16 컴파일러는 여기서 하드웨어의 끊김으로부터 사용자를 보호하지 않습니다. 나는이 기능을 위해 래퍼 매크로를 작성하여 2 8 비트 포인터 디 레프를 강제했습니다.
—
brhans