동작해석
· 1/100 Sec 단위 카운팅
본 스탑워치는 1/100 Sec 단위로 카운팅되면서 시간이 표시된다. 때문에 AVR의 Timer/Counter 기능을 이용하여 1/100 Sec 즉, 100hz의 주파수를 만들어 줄 필요가 있다.
그러기 위해서 16 bit인 Timer/Counter 1 를 CTC 모드로 사용하였다. 그리고 프리스케일러의 분주비는 256, OCR1A 의
데이터와 설정 데이터를 유지할 수 있게 하기 위하여 EEPROM에 데이터를 저장하고 불러올 수 있게 하였다.
ATmega128 MCU에 내장된 EEPROM은 4 KB의 데이터 사이즈를 가지고 있다. 메모리 번지는 0x0000 ~ 0x0FFF (4096개) 로 할당되어 있다. 본 디지털 시계에서는 아래와 같이 총 5 byte의 데이터를 저장하고 불러온다.
세그먼트를 한 포트에 연결해 놓고, 다른 포트에서 Common 단자를 일일이 선택해가면서 출력을 빠르게 전환하는 Dynamic display 방식으로 출력하고 있다. 세그먼트가 출력하는 시간은 3ms로 실험을 통해 가장 알맞은 시간을 선택했다. 단, 이 타이머에서는 종료 후 다음 사용 때 이전의 사용기록을 저장하기
AVR MCU를 이용하여 다양한 키입력 방식과 바운싱(bouncing)을 처리하는 소프트웨어적, 하드웨어적 디바운싱(Debouncing) 기법을 알아보도록 하겠다.
<중략>
위의 소스는 키 디바운싱 관련 부분만 발췌한 것이다. 이 소스의 동작원리를 설명하기 위해 키를 눌렀을 때 일어날 수 있는 여러가지 경우로 나누
분석해야만 한다. 사용할 기능, 속도, 단가, 개발 기간 등이 선택 기준이 될수 있을 것이다. 같은 8비트 CPU 라고 해도 위의 선택 기준들은 확연하게 차이나는 것을 알수 있다. Atmel 사에서는 여러 종류의 CPU 가 나오고 있다.
이중 가장 보편적으로 사용되고 있는 AVR (AT90S) 시리즈와 megaAVR 시리즈(ATmega) 와