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, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π½Π΅Π±ΡΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ.