메뉴 바로가기
서브메뉴 바로가기
본문 바로가기
올려 주신 코드는 폴링 방식으로 펄스를 체크하는 방식입니다.
이런 방식은 정확한 시간을 측정하기 어렵습니다.
INT0, INT1 을 사용하신거 같은데 상승 에지를 디텍트 하려면
기본 레지스터를 설정하고
MCUCR = 0x0F; // INT0, INT1 상승에지 사용GICR = 0xC0 ; // INT0, INT1 인터럽트 사용 _SEI(); // 전체 인터럽트 인에이블while(1) {} // 무한 루프 인터럽트 루틴을 따로 처리하면 됩니다. int starttime=0;int endtime=0; // INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
GICR = 0xC0 ; // INT0, INT1 인터럽트 사용 _SEI(); // 전체 인터럽트 인에이블while(1) {} // 무한 루프 인터럽트 루틴을 따로 처리하면 됩니다. int starttime=0;int endtime=0; // INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
_SEI(); // 전체 인터럽트 인에이블while(1) {} // 무한 루프 인터럽트 루틴을 따로 처리하면 됩니다. int starttime=0;int endtime=0; // INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
while(1) {} // 무한 루프
인터럽트 루틴을 따로 처리하면 됩니다.
int starttime=0;int endtime=0; // INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
int endtime=0; // INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
// INT0 걸리면 ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
ISR(INT0_vect) { // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
{ // INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
// INT0 처리 starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
starttime = TCNT0; } // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
} // INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
// INT1 걸리면 ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
ISR(INT1_vect) { // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
{ // INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
// INT1 처리 endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
endtime = TCNT0; }시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
}시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
시간 차 구하기 시간차 = (endtime - starttime)/ 스케일값 ; 입니다. (이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
시간 차 구하기
시간차 = (endtime - starttime)/ 스케일값 ; 입니다.
(이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)
여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.
파일 용량 제한 : 0MB (허용 확장자 : *.*)
업로드 중... (0%)
올려 주신 코드는 폴링 방식으로 펄스를 체크하는 방식입니다.
이런 방식은 정확한 시간을 측정하기 어렵습니다.
INT0, INT1 을 사용하신거 같은데 상승 에지를 디텍트 하려면
기본 레지스터를 설정하고
MCUCR = 0x0F; // INT0, INT1 상승에지 사용
GICR = 0xC0 ; // INT0, INT1 인터럽트 사용
_SEI(); // 전체 인터럽트 인에이블
while(1) {} // 무한 루프
인터럽트 루틴을 따로 처리하면 됩니다.
int starttime=0;
int endtime=0;
// INT0 걸리면
ISR(INT0_vect)
{
// INT0 처리
starttime = TCNT0;
}
// INT1 걸리면
ISR(INT1_vect)
{
// INT1 처리
endtime = TCNT0;
}
시간 차 구하기
시간차 = (endtime - starttime)/ 스케일값 ; 입니다.
(이 값은 클럭 속도와 DIV 값에 따라 달라지므로 스케일값을 구해서 계산하시면 됩니다.)