HDD Clock 를 만드는중.....
외부인터럽트를 받아서 타이밍을 Timer 의 Input Capture 기능을 이용하여 시간을 체크하려고 하는데
아무리 해도 안되는것임....
그래.... 지난번에 뻘짓을 알아보면.....
이렇게 되면 ICR3H 레지스터는 8bit 이기 때문에 0x00이 되어버린다..........
하위비트만 줄기차게 출력되어 버리는거지.........
이 코드는 지난번에 RPM측정기 만들때 했던 대표 적인 뻘짓이고.....
이버너에는 저 clock 값을 uart로 출력해서 모니터링 하려고 하는데......
아무리 해도 값이 안나오는거......
MCU의 출력이 바르긴 하다지만......
외부인터럽트를 받아서 타이밍을 Timer 의 Input Capture 기능을 이용하여 시간을 체크하려고 하는데
아무리 해도 안되는것임....
그래.... 지난번에 뻘짓을 알아보면.....
temp=ICR1L; clock=(ICR3H)<<8; clock=clock|temp;
이렇게 되면 ICR3H 레지스터는 8bit 이기 때문에 0x00이 되어버린다..........
하위비트만 줄기차게 출력되어 버리는거지.........
temp=ICR1L; clock=(ICR3H); clock=clock<<8; clock=clock|temp;그래서 위와 같이 16비트짜리 변수에 넣어준 후 연산해주면 됨........
이 코드는 지난번에 RPM측정기 만들때 했던 대표 적인 뻘짓이고.....
이버너에는 저 clock 값을 uart로 출력해서 모니터링 하려고 하는데......
아무리 해도 값이 안나오는거......
MCU의 출력이 바르긴 하다지만......
clock : -3109
clock : 26593
clock : -14044
clock : -29154
clock : 10713
clock : -533
왜....unsigned int 값이 음수가 나오는거지!!!!!! (참고로 변수 clock는 unsigned int로 선언되었음)
이유는 %d 에 있었다. unsigned 정수형의 경우 %u 로 출력한다고 하네........(이걸 몰라서....ㅠㅠ)
괜한 뻘짓..... C 언어를 배운지 너무 오래된게야.......
왜....unsigned int 값이 음수가 나오는거지!!!!!! (참고로 변수 clock는 unsigned int로 선언되었음)
이유는 %d 에 있었다. unsigned 정수형의 경우 %u 로 출력한다고 하네........(이걸 몰라서....ㅠㅠ)
괜한 뻘짓..... C 언어를 배운지 너무 오래된게야.......