IAR MCS-51 에서 Timer Interrupt 가 호출되지 않는 문제.

크리에이티브 커먼즈 라이선스
Creative Commons License

열심히 삽질하였다....

그리고, 하다하다 안되서 Linker listing 을 확인해 보니 Timer Interrupt 코드가 링크되지 않는 문제를 발견하였다.

문제의 발단 :

정말 아무생각 없이.... 정말 평소에는 나만의 명명규칙으로 이름을 잘 짓다가 정말 아무생각 없이 인터럽트 함수를 'TIMER0', 'TIMER1' 이라고 지었다. (요즘 내가 정신이 탈출한 상태다.)
#pragma vector=timer0
__interrupt void TIMER0(void)
{
... 블라블라 ...
}

#pragma vector=timer1
__interrupt void TIMER1(void)
{
... 블라블라 ...
}
평소같았으면 내가 고정으로 사용하는 "Timer_InterruptN" 이라는 명명을 하였을 텐데, 정말 아무생각 없었다.

그 결과 :

Global Interrupt 만 Enable 하면 시스템이 얼어버린다.

당연히 얼 수 밖에 없는게, 인터럽트가 발생해서 호출은 해야 겠는데 그 호출을 받을 함수가 링킹되지 않아버리니 중간에 떠버린 상태인 것이다.

Aㅏ................... 경고조차 없는 멋지고 깔쌈한 내 프로그램이 돌지 않는다니....

해결 방법 :

함수 이름을 바꾸었다. 그리고 빌드..., 그리고 Linker listing 을 확인해보니

생겼다!!!!!

아마도 IAR MCS-51 에서 TIMER0, TIMER1 과 같은 이름은 사용할 수 없는 것으로 보인다. (하지만 IAR 메뉴얼에는 관련 내용을 찾을 수 없다.)

교훈 :
분명 문제가 없는데 변수의 값이나 함수 호출에 문제가 발생한다.
Linker listing 생성을 활성화 하고 확인하도록 하자!
저작자 표시 비영리 동일 조건 변경 허락
Trackback 0 Comment 0

공유폴더 접근이 계정 로그인 창이 뜨지 않고, 접속 거부되는 문제에 대한 꼼수.

크리에이티브 커먼즈 라이선스
Creative Commons License
여러분!!! 인터넷에 나와있는거 다~ 안됩니다!! (나만...)

로그온 실패: 사용자는 이 컴퓨터에서는 요청된 로그온 유형을 허가받지 않았습니다.
Aㅏ... 도대체 어떻게 해야 하는거야......

서버에서도 생 난리, PC 에서도 생 난리를 피웠다...

도저히 안되겠다 싶어서 짱구를 신나게 굴리다가 떠오른 꼼수가 있어서 적용해 보았다.

"제어판"때기에 가서 "사용자 계정 및 가족 보호" 에 보면 "자격 증명 관리자" 라는 알아먹기도 어려운 한글이 적혀있다.
(관련 메뉴는 XP 에도 존재한다.)

이 설정으로 들어가면 아래와 같은 이상한 말만 적힌 화면을 만나게 된다.

정보처리기능사 자격으로는 안되겠니?

우리가 손봐줘야 할 것은 Windows 자격 증명이란 녀석이 되겠다.
뭔 말인지 모르는 창과의 조우에서 떨리는 손가락으로 살포시 "Windows 자격 증명 추가" 를 눌러주자.



그나마 알아먹을만한 말들이 있는 창이 나타났다.

인터넷 또는 네트워크 주소에는 컴퓨터 IP 주소나 DNS(도메인) 주소를 적어준다.
사용자 이름에는 당당하게 "Guest" 를 적는다.
암호는 "asldigufoq3i4ngfaj9we8ty2q3945yq974tyhwa" 로 적는다. (아무거나 막 적으라는 뜻입니다.)

그리고 확인 한번 눌러주고 나오면 해결!


참고로 이걸 해줘도 안된다면, 아직 서버측에 로그인 세션이 남아있는 상태라고 보면 된다.
서버로 사용하는 PC를 껐다 켜든지, 창을 모두 닫고 15 분을 기다리는지 (세션 Timeout 의 기본값이 15 분이다), 공유폴더 관리 메뉴를 잘 찾아들어가서 강제로 세션 종료를 때려준 다음 다시 접속하면....

웰컴이다 이자식아!!!

만세!!! 성공이다.
저작자 표시 비영리 동일 조건 변경 허락
Trackback 0 Comment 0