Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 57

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

 TCTL1 = 0Ρ…00; /*Π² качСствС источника сигналов для счСтчика*/

 OC7M = 0x00 /*Π²Π½Π΅ΡˆΠ½ΠΈΡ… событий – 3 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹*/

 TSCR = 0Ρ…80; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ всСго модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°*/

 PACTL = 0Ρ…70; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ счСтчика Π²Π½Π΅ΡˆΠ½ΠΈΡ…*/

               /*событий ΠΏΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ сигнала*/

}

/*-------------------------------------------------------------------------------*/

4.15. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

МногиС примСнСния Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ выполнСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π²Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для удобства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² МК сСмСйства 68HC12/HCS12 оснащСны ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ RTI (Real Time Interrupt), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ равноотстоящиС Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запросы Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ (рис. 4.47). Π’ΠΎΠ³Π΄Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π²Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСрывания ΠΏΠΎ запросу RTI. И ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ функционирования устройства Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½.

Рис. 4.47. Π’рСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΡΡΠ½ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия модуля ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ рСгистры управлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ


ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ RTI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° рСгистра ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: рСгистр управлСния RTICTL (Real Time Interrupt Control Register) ΠΈ рСгистр Ρ„Π»Π°Π³ΠΎΠ² RTIFLG (Real Time Interrupt Flag Register).

Π‘ΠΈΡ‚ RTIE Π² рСгистрС управлСния RTICTL (рис. 4.47) Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ подсистСмы ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ RTIE = 1 подсистСма находится Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии, ΠΏΡ€ΠΈ RTIE = 0 Ρ€Π°Π±ΠΎΡ‚Π° систСмы Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π°. Π‘ΠΈΡ‚Ρ‹ RTR2:RTR1:RTR0 ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ слСдования ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’Π°Π±Π»ΠΈΡ†Π° рис. 4.47 устанавливаСт соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ Π±ΠΈΡ‚ΠΎΠ² RTR2:RTR1:RTR0 ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сосСдними ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ модуля RTI. ПослСдний ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ RTI.

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

RTR[2:0] ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ дСлСния 2Ρ… ΠŸΡ€ΠΈ частотС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ систСмной ΡˆΠΈΠ½Ρ‹ 4 ΠœΠ“Ρ† 8 ΠœΠ“Ρ† 000 Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π΅Ρ‚ Π½Π΅Ρ‚ 001 13 2,048 мс 1,024 мс 010 14 4,096 мс 2,048 мс 011 15 8,192 мс 4,096 мс 100 16 16,384 мс 8,192 мс 101 17 32,768 мс 16,384 мс 110 18 65,536 мс 32,768 мс 111 19 131,072 мс 65,536 мс

Рис. 4.47. ВрСмСнная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΡΡΠ½ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия модуля ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ рСгистры управлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ


Рис. 4.48. Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ


РСгистр Ρ„Π»Π°Π³ΠΎΠ² RTIFLG (рис. 4.47) содСрТит всСго ΠΎΠ΄ΠΈΠ½ Ρ„Π»Π°Π³ RTIF. Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ устанавливаСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» отсчСт ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° RTI.

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ подсистСмы ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тактируСтся ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ с частотой fBUS. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ эта частота дСлится. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ дСлСния, устанавливаСмый разрядами RTR2:RTR1:RTR0, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ рис. 4.47. ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для МК с частотой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΡˆΠΈΠ½Ρ‹ 8 ΠœΠ“Ρ† ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ составляСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 65 мс.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования модуля ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ realtime.c для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° основС отсчСтов модуля RTI с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ 8,196 мс. Π’ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСрывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ счСтчик Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ‚ 122 отсчСта RTI (рис.4.48), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ 1 с. По ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкунды инкрСмСнтируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ счСтчик sec_ctr, ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ β€” счСтчик mins_ctr ΠΈ Ρ‚.Π΄. Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ счСтчика Π΄Π½Π΅ΠΉ.

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ, ввСдя подсчСт дня Π½Π΅Π΄Π΅Π»ΠΈ, мСсяца ΠΈ Π³ΠΎΠ΄Π°.

/*-----------------------------------------------------------------------*/

/* filename: realtime.c                                                  */

/* МAIN PROGRAМ: Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹Ρ…                 */

/* ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с использованиСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ Π΄Π²ΡƒΡ… ΠΊΠ°Π½Π°Π»ΠΎΠ² подсистСмы */

/* прСрывания.Π‘ΠΈΠ³Π½Π°Π»Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π°Ρ… 2 ΠΈ 3 Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.              */

/*-----------------------------------------------------------------------*/

/*ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹*/

#include <912b32.h>


/*ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ*/

void RTI_isr{void); /*ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСрывания ΠΏΠΎ RTI*/


/* interrupt pragma */

#pragma interrupt_handler RTI_isr

/*инициализация Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² прСрывания*/

#pragma abs_address: 0xF7F0

void (*RTI_interrupt_vector[]) ()={RTI_isr};

#pragma end_abs_address


/*Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅*/

unsigned int ms_ctr, sec_ctr, mins_ctr, hrs_ctr, days_ctr;


void main{void) {

 ms_ctr = 0; /*инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…*/

 sec_ctr = 0;

 mins_ctr = 0;

 hrs_ctr = 0;

 days_ctr = 0;

 RTICTL = 0Ρ…84; /*Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ прСрывания ΠΎΡ‚ модуля RTI, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ*/

 CLI();         /*ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ RTI 8,196 мс*/

 while(1) /*ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅*/

 {

  ;

 }

}


/*---------------------------------------------------------*/

/* Ѐункция RTI_isr ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСрывания ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 8,196 мс */

/*---------------------------------------------------------*/

void RTI_isr(void) {

 RTIFLG = 0Ρ…80; /*сброс Ρ„Π»Π°Π³Π° события RTI*/

 ms_ctr = ms_ctr+1; /*ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик миллисСкунд*/

 if (ms_ctr == 122) /*ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик сСкунд*/

 {

  ms_ctr = 0;

  sec_ctr = sec_ctr + 1;

 }

 if (sec_ctr == 60) /*ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик ΠΌΠΈΠ½ΡƒΡ‚*/

 {

  sec_ctr = 0;

  mins_ctr = mins_ctr + 1;

 }

 if (mins_ctr == 60) /*ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик часов*/

 {

  mins_ctr = 0;

  hrs_ctr = hrs_ctr + 1;

 }

 if (hrs_ctr == 24) /*ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счСтчик Π΄Π½Π΅ΠΉ*/

 {

  hrs_ctr = 0;

  days_ctr = days_ctr + 1;

 }

}

/*---------------------------------------------------------*/

4.16. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ECT Π² составС МК МC68HC12BE32 ΠΈ HCS12

ВсС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ сСмСйства HCS12 ΠΈ всСго ΠΎΠ΄Π½Π° модСль MC68HC12BE32 сСмСйства 68HC12 оснащСны Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ECT (Enhanced Capture Timer). ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° EST унаслСдовал основныС тСхничСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ своСго ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° β€” модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° TIM. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ TIM, основу Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° EST ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ 16-разрядный счСтчик Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈ восСмь ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² Π·Π°Ρ…Π²Π°Ρ‚Π°/сравнСния.

Однако Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ EST Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ°Π½Π°Π»Π° ΠΈΠ· восьми Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ рСгистром. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ позволяСт Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° измСнСния сигнала Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΊΠ°Π½Π°Π»Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ установлСн Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ события Π² ΠΊΠ°Π½Π°Π»Π΅ CnF. РассматриваСмыС ΠΊΠ°Π½Π°Π»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния, Ρ‚Π°ΠΊ ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΊΠ°Π½Π°Π»Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π° функционирования этих ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ для модуля TIM. ΠŸΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π·Π°Ρ…Π²Π°Ρ‚Π°/сравнСния модуля Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° EST ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° рис. 4.49.

Рис. 4.49. Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ECT


Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ модуля EST ΠΎΡ‚ модуля TIM состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ EST ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм составС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ 8-разрядных счСтчика события (PACN3…PACN0). Π­Ρ‚ΠΈ счСтчики ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠΈ для получСния Π΄Π²ΡƒΡ… 16-разрядных счСтчиков событий: (PACN3:PACN2) ΠΈ (PACN1:PACN0).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌΡΡ Π΄Π°Π»Π΅Π΅ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ модуля EST.

4.16.1. НСбуфСрированныС ΠΊΠ°Π½Π°Π»Ρ‹ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π°

Алгоритм функционирования Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ°Π½Π°Π»ΠΎΠ² модуля TIM. Однако Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ модуля EST снабТСны Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ управлСния Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. РСгистр управлСния порядком пСрСзаписи ICOVW (Input Control Overwrite Register) содСрТит восСмь Π±ΠΈΡ‚ΠΎΠ² NOVWn (рис. 4.49). Если Π±ΠΈΡ‚ NOVWn установлСн Π² 1, Ρ‚ΠΎ рСгистр Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ n Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписан ΠΏΠΎΠ΄ дСйствиСм Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств, ΠΏΠΎΠΊΠ° этот рСгистр Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ считан ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Если Π±ΠΈΡ‚ NOVWn = 0, Ρ‚ΠΎ функция Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ записи для Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° снимаСтся.