일반 [re] 어셈블리 관련 파일
- 도무지
- 조회 수 5186
- 2009.03.03. 04:08
[프로그램 이식 방법]
첨부된 파일(EngTmr_24.zip)의 압축을 풀면 다음 3개의 파일이 나온다.
1. EngTmr.avr -----> AVR 어셈블리 소스파일
2. EngTmr.hex -----> 컴파일된 HEX 파일
3. EngTmr.lst ------> 컴파일된 과정의 참고파일
4. 차속센서에 대한 연구자료 hwp 파일
위 3 파일은 모두 문서파일 형태이기 때문에 '메모장'에서 볼 수 있다.
이 세가지 파일 중 실제로 CPU 이식하는 파일은 EngTmr.hex 이다.
프리웨어인 PonyProg2000 이나 ToastProg2005 등의 AVR 이식프로그램을 사용하여
AVR에 써넣으면 된다.
###############################################################
# 프로그램 측면의 고찰 #
###############################################################
[차속 계산법]
첨부된 HWP 파일 참조
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[쿠션 프로그램]
차속을 카운터 해서 나온 속도를 곧 바로 적용하면 변화가 너무 심하므로 완충장치를 해야 한다.
16개의 레지스터에 순차적으로 밀어 넣어서 그 평균값을 적용하면 원만하게 해결된다.
사실 이 프로그램은 '속도계'에 필요한 프로그램이다.
'차속 스위치'나 '후열 장치'에는 '히스테리시스 방지 레벨'로 제어하기 때문에 굳이 적용할 필요는 없다.
+++ 히스테리시스 방지 레벨+++
예를 들어 50 Km에서 동작하는 차속 스위치를 프로그래밍 할 때
50Km 이상에서 ON 되고 50Km 미만에서 OFF 되게 했다고 가정하면
차량이 50Km 부근을 운행할 때 ON/OFF를 반복하게 된다.
그러므로 50Km에서 ON 되게 하고 40Km에서 OFF 되게 하여 레벨 차이를 두어서 발정을 방지해야 한다.
물론 차량 속도야 급격히 변하는 것은 아니겠지만
특히 수위레벨이나 밝기 레벨 등을 프로그래밍 할 때는 반드시 필요한 프로그램이다.
배수펌프로 물을 품어낼 때 수조에 어느 레벨 정도차면 펌프가 가동해야 하는데 펌프가 가동되면
물이 출렁거리게 된다. ON/OFF 레벨차이가 없다면 엄청나게 빠른 속도로 ON/OFF를 반복하게 되는 것이다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[채터링 및 서지 방지 프로그램]
기계적인 접점은 ON/할 때 접점이 1번 동작하는 것 같지만 전기적으로 분석하면 여러번 떨리면서 들어오게 된다.
CPU는 엄청나게 빠른 속도로 동작하므로 떨리는 수 만큼 입력처리 프로그램을 실행해 버린다.
또는 입력단에 어떤 요인에 의해서 서지 펄스가 간혹 들어오게 된다.
그러면 오동작을 하게 된다.
이런 현상을 방지하려면 입력에 콘덴서를 설치하면 된다.
다른 회로와 연계되어 있으면 회로자체가 서로 콘덴서 역할을 해서 해소되기도 한다.
그러나 키보드와 같이 버튼이 많다면 콘덴서를 설치하는 것도 쉬운일은 아니다.
그래서 채터링 방지 프로그램 및 서지 방지 프로그램을 적용하는 것이다.
1. 입력이 들어오면 우선 입력이 들어왔다는 것만 접수한다.
2. 약 0.1초 후에 다시 입력이 유지되고 있는지 검사한다.
3. 입력이 유지되고 있지 않으면 서지 펄스로 간주하고 무시해 버린다.
4. 입력이 유지되고 있다면 유지되고 있다는 사실만 접수한다.
5. 약 0.1초 후에 계속 입력이 유지되고 있는지 검사한다.
6. 입력이 유지되고 있으면 5번 과정을 반복한다.
7. 입력이 유지되지 않으면 스위치에서 손을 뗏다고 간주하고 필요한 명령을 실행한다.
*** 위와 같이 프로그램을 시행하면 스위치가 떨어진 다음에 명령을시행하게 되므로
.... 성질 급한 사람은 다음과 같이 하면 된다.
6. 입력이 유지되고 있으면 필요한 명령을 먼저 시행한다.
7. 약 0.2초 후에 계속 입력이 유지되고 있는지 검사한다.
8. 입력이 유지되고 있으면 7번 과정을 반복한다.
9. 입력이 유지되지 않으면 스위치에서 손을 뗏다고 간주하고 프로시저를 종료한다.
+++ 전방법은 스위치 입력처럼 어쩌다 한번씩 들어오는 입력을 처리 할 때 적용한다.
+++ 후방법은 키보드 처럼 계속 입력을 받아서 명령을 처리할 때 적용한다. (답답하지 않다.)
*** 위 프로그램의 원리는 간단한 것 같지만 실제로는 다른 프로그램을 진행시키면서
..... 처리해야 되므로 프로그래밍 기술이 필요하다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[타이밍 프로그램]
운전석 도어를 닫았을 때 바로 '도어 잠금' 신호를 출력하면 문이 채 닫히기 전에 로크가 동작될 경우가 있다.
따라서 문이 닫히고 난 0.5초 후에 '도어 잠금' 신호를 출력해야 한다.
'키를 다시 꽂았을 때 후열을 중지하는 경우'에는 굳이 적용하지 않아도 되지만 이 또한 채터링 방지 겸 해서
0.3초후에 동작하도록 했다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; #######################################################################################
;
; 감사합니다. 안전운행 하세요.
;
;#######################################################################################
첨부된 파일(EngTmr_24.zip)의 압축을 풀면 다음 3개의 파일이 나온다.
1. EngTmr.avr -----> AVR 어셈블리 소스파일
2. EngTmr.hex -----> 컴파일된 HEX 파일
3. EngTmr.lst ------> 컴파일된 과정의 참고파일
4. 차속센서에 대한 연구자료 hwp 파일
위 3 파일은 모두 문서파일 형태이기 때문에 '메모장'에서 볼 수 있다.
이 세가지 파일 중 실제로 CPU 이식하는 파일은 EngTmr.hex 이다.
프리웨어인 PonyProg2000 이나 ToastProg2005 등의 AVR 이식프로그램을 사용하여
AVR에 써넣으면 된다.
###############################################################
# 프로그램 측면의 고찰 #
###############################################################
[차속 계산법]
첨부된 HWP 파일 참조
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[쿠션 프로그램]
차속을 카운터 해서 나온 속도를 곧 바로 적용하면 변화가 너무 심하므로 완충장치를 해야 한다.
16개의 레지스터에 순차적으로 밀어 넣어서 그 평균값을 적용하면 원만하게 해결된다.
사실 이 프로그램은 '속도계'에 필요한 프로그램이다.
'차속 스위치'나 '후열 장치'에는 '히스테리시스 방지 레벨'로 제어하기 때문에 굳이 적용할 필요는 없다.
+++ 히스테리시스 방지 레벨+++
예를 들어 50 Km에서 동작하는 차속 스위치를 프로그래밍 할 때
50Km 이상에서 ON 되고 50Km 미만에서 OFF 되게 했다고 가정하면
차량이 50Km 부근을 운행할 때 ON/OFF를 반복하게 된다.
그러므로 50Km에서 ON 되게 하고 40Km에서 OFF 되게 하여 레벨 차이를 두어서 발정을 방지해야 한다.
물론 차량 속도야 급격히 변하는 것은 아니겠지만
특히 수위레벨이나 밝기 레벨 등을 프로그래밍 할 때는 반드시 필요한 프로그램이다.
배수펌프로 물을 품어낼 때 수조에 어느 레벨 정도차면 펌프가 가동해야 하는데 펌프가 가동되면
물이 출렁거리게 된다. ON/OFF 레벨차이가 없다면 엄청나게 빠른 속도로 ON/OFF를 반복하게 되는 것이다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[채터링 및 서지 방지 프로그램]
기계적인 접점은 ON/할 때 접점이 1번 동작하는 것 같지만 전기적으로 분석하면 여러번 떨리면서 들어오게 된다.
CPU는 엄청나게 빠른 속도로 동작하므로 떨리는 수 만큼 입력처리 프로그램을 실행해 버린다.
또는 입력단에 어떤 요인에 의해서 서지 펄스가 간혹 들어오게 된다.
그러면 오동작을 하게 된다.
이런 현상을 방지하려면 입력에 콘덴서를 설치하면 된다.
다른 회로와 연계되어 있으면 회로자체가 서로 콘덴서 역할을 해서 해소되기도 한다.
그러나 키보드와 같이 버튼이 많다면 콘덴서를 설치하는 것도 쉬운일은 아니다.
그래서 채터링 방지 프로그램 및 서지 방지 프로그램을 적용하는 것이다.
1. 입력이 들어오면 우선 입력이 들어왔다는 것만 접수한다.
2. 약 0.1초 후에 다시 입력이 유지되고 있는지 검사한다.
3. 입력이 유지되고 있지 않으면 서지 펄스로 간주하고 무시해 버린다.
4. 입력이 유지되고 있다면 유지되고 있다는 사실만 접수한다.
5. 약 0.1초 후에 계속 입력이 유지되고 있는지 검사한다.
6. 입력이 유지되고 있으면 5번 과정을 반복한다.
7. 입력이 유지되지 않으면 스위치에서 손을 뗏다고 간주하고 필요한 명령을 실행한다.
*** 위와 같이 프로그램을 시행하면 스위치가 떨어진 다음에 명령을시행하게 되므로
.... 성질 급한 사람은 다음과 같이 하면 된다.
6. 입력이 유지되고 있으면 필요한 명령을 먼저 시행한다.
7. 약 0.2초 후에 계속 입력이 유지되고 있는지 검사한다.
8. 입력이 유지되고 있으면 7번 과정을 반복한다.
9. 입력이 유지되지 않으면 스위치에서 손을 뗏다고 간주하고 프로시저를 종료한다.
+++ 전방법은 스위치 입력처럼 어쩌다 한번씩 들어오는 입력을 처리 할 때 적용한다.
+++ 후방법은 키보드 처럼 계속 입력을 받아서 명령을 처리할 때 적용한다. (답답하지 않다.)
*** 위 프로그램의 원리는 간단한 것 같지만 실제로는 다른 프로그램을 진행시키면서
..... 처리해야 되므로 프로그래밍 기술이 필요하다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[타이밍 프로그램]
운전석 도어를 닫았을 때 바로 '도어 잠금' 신호를 출력하면 문이 채 닫히기 전에 로크가 동작될 경우가 있다.
따라서 문이 닫히고 난 0.5초 후에 '도어 잠금' 신호를 출력해야 한다.
'키를 다시 꽂았을 때 후열을 중지하는 경우'에는 굳이 적용하지 않아도 되지만 이 또한 채터링 방지 겸 해서
0.3초후에 동작하도록 했다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; #######################################################################################
;
; 감사합니다. 안전운행 하세요.
;
;#######################################################################################
- EngTmr_24.zip (File Size: 58.1KB/Download: 30)
댓글
오래전에 배웠던 내용이 생각나네요.. 그때도 고생을 많이 했었던 부분인데...
이렇게 명쾌하게 설명까지 주시니...
이공학도가 있다면, 많은 도움이 될 부분이라 생각됩니다.
많은 분들을위해 이토록 정성을 ... 님의 내공과 열정에 고개를 숙입니다.
감사합니다.