View

300x250

 

Real Time Clock - RTC : 2^15Hz = 32768 Hz = 32.768 kHz = 1 Sec

                                      RTC를 2^15로 나누면 1Hz 에 1 Sec인 Clock을 만들어 1초를 Count할 수 있다. 

 

타이머는 Task Scheduler 등의 작업에서 App에게 시간 배정으로 동시에 작업을 수행하도록 만들기 위해 사용된다.

        ( event Interrupt를 통해 Count한 1ms의 경과를 CPU에게 알린다. )

 

Private Timer

        Timer Load Register, Timer Count Register, Timer Control Register, Timer Status Register로 구성되어있다.

        - Timer Load Register

                초기값에 해당하는 값.

        - Timer Count Register

                Load Register에 저장된 값을 Count Register로 가져와 신호에 따라 값을 1씩 감소시킨다. 말 그대로 count하는 과정.

        - Timer Control Register

                Prescaler ( 몇 Hz마다 Count할 지 결정 )

                AutoTimer ( Count가 0까지 Decrement 된 후 다시 Load Reg에서 값을 불러와 Count를 반복할 지 결정 )

                Timer enable ( on / off )

                의 정보를 Set할 수 있다.

        - Timer Status Register: only 1 Bit

                Count Register가 0이 될 때 Status Register가 1이 된다. : HW적으로 구현되어있음.

                        Timer가 1Hz의 신호를 여기에서 받아온다.

                 -> Timer Status Register에 1을 넣어 0으로 초기화시켜준다. : SW적으로 구현.

                      초기화시켜주지 않으면 계속 남아있게된다. ( Sticky Register )

 

Prescaler

        Timer의 Time Interval을 결정한다. -> 자기가 원하는 값을 넣어 1Sec의 2의 지수승에 해당하는 값을 만들어낼 수 있다.
        Frequency = periCLK / Prescaler

        Time Interval = loadValue ( Count 할 값 )  x ( Source Timer의 주기 = periCLK ) = loadValue / Frequency

                              = ((Prescaler + 1 ) x ( loadValue + 1 )) / periCLK   ( 1을 더해주는건 0~255를 1~256으로 만들어 쉬운 계산을 위함임)

        

// 이 시리즈의 글들은 고려대학교의 Computer System Design 과목 ( COSE321 ) 을 수강하며 제가 공부한 내용입니다.

// 노트필기를 바탕으로 정리하여 올리고 있으므로, 부정확한 정보가 있을 수도 있습니다.

// 추후에 종강을 하면 워터마크를 삽입한 최종노트 PDF를 첨부할 계획입니다.

320x100
Share Link
reply
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30