// ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΠΠ
}
//********************************************************************
//RTI_isr: ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ RTI
//********************************************************************
void RTI_isr(void) {
unsigned int new_count;
unsigned int pulse_count;
float max_count = 65535.0;
new_count = PACNT; //ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ², Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² PA
if (new_count > old_count) //ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²
pulse_count = new_count - old_count;
else pulse_count = (unsigned int)(max_count-(float)(old_count = new_count));
RTI_int_count = RTI_int_count + 1;// ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°
//RTI-ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
if (RTI_int_count == 10) // ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΠΠ ΡΠ΅ΡΠ΅Π·
// ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
{
display_count_LCD(pulse_count); //ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΠΠ
RTI_int_count = 0; //ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ RTI
}
old_count = new_count;
RTIFLG = 0x80; //ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ RTI
}
// ********************************************************************
// initialize_RTI:ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ RTI
// - ΡΠ΅Π³ΠΈΡΡΡ RTICTL
// -- ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ RTI ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π±ΠΈΡΠ° RTIE
// -- ΠΏΠ΅ΡΠΈΠΎΠ΄ RTI Π² 32.768 ΠΌΡ
// - ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π±ΠΈΡ RTIF Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ ΡΠ»Π°Π³ΠΎΠ² (RTIFLG)
// ********************************************************************
void initialize_RTI(void) {
RTICTL = 0x86; // ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ RTI Π½Π° 32.768 ΠΌΡ
RTIFLG = 0x80; //ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π°Π³ RTIF
}
// ********************************************************************
//initialize_PA: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ° ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²
// ********************************************************************
void initialize_PA(void) {
TIOS = 0x00; // ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°Π½Π°Π» 7 Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ
TCTL1 = 0x00; // ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π΅ΡΠ°
OC7M = 0x00;
TSCR = 0x80; // ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π±ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
PACTL = 0x70; // ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π Π, ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅ΡΠ° ΡΠΎΠ±ΡΡΠΈΠΉ,
// ΠΏΠΎ ΡΡΠΎΠ½ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠ°,
}
/********************************************************************/
/* initialize_LCD: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠΠ */
/* ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π½Π° ΠΠΠ ΡΡΠ°ΡΡΠΎΠ²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */
/* - PORTDLC[3]: Π»ΠΈΠ½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ RS ΠΠΠ */
/* - PORTDLC[2]: Π»ΠΈΠ½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ E Π΄Π»Ρ ΠΠΠ */
/* - PORTB: Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΠΌΠ°Π³ΠΈΡΡΡΠ°Π»Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΠΠ */
/********************************************************************/
void initialize_LCD(void) {
delay_5ms();
delay_5ms();
delay_5ms(); /*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 15 ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΠΠ */
putcommands(0x38); /*ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° 8 Π±ΠΈΡ */
delay_5ms(); /*Π·Π°Π΄Π΅ΡΠΆΠΊΠ° */
putcommands(0x38); /*ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² 8 Π±ΠΈΡ */
delay_100us(); /*Π·Π°Π΄Π΅ΡΠΆΠΊΠ° */
putcommands(0x38); /* ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° 8 Π±ΠΈΡ */
putcommands(0x38); /* ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² 8 Π±ΠΈΡ */
putcommands(0x0C); /*Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΏΠ»Π΅Ρ */
putcommands(0x01); /*ΠΎΡΠΈΡΡΠΊΠ° Π΄ΠΈΡΠΏΠ»Π΅Ρ */
putcommands(0x06); /*ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π°Π΄ΡΠ΅ΡΠ° */
putcommands(0x00);
putcommands(0x00);
putcommands(0xC0); /*ΠΊΡΡΡΠΎΡ Π½Π° Π»ΠΈΠ½ΠΈΡ 2 Π·Π½Π°ΠΊΠΎΠΌΠ΅ΡΡΠΎ 1 */
putchars('R'); /* Π²ΡΠ²Π΅ΡΡΠΈ "PRM" - ΡΠΊΠΎΡΠΎΡΡΡ */
/*Π² ΠΎΠ±/ΠΌΠΈΠ½ Π½Π° ΡΡΡΠΎΠΊΡ 2 ΠΠΠ */
putchars('P');
putchars('M');
}
/********************************************************************/
/*putchars: ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ASCII ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΠΠΠ */
/********************************************************************/
void putchars(unsigned char c) {
PORTB = c; /*Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΠΏΠΎΡΡ PORTB ΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π° */
PORTDLC = PORTDLC|0x08; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ RS Π² 1 Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ */
PORTDLC = PORTDLC|0x04; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ E Π² 1 */
PORTDLC = 0x00; /* ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ E ΠΈ RS Π² 0 */
delay_100us(); delay_100us();
}
/********************************************************************/
/*putcommands: ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠΠ */
/********************************************************************/
void putcommands(unsigned char d) {
PORTDLC = PORTDLC&0xF7; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ RS Π² 0 Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ */
PORTDLC = PORTDLC|0x04; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ E Π² 1 */
PORTDLC = 0x00; /* ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ E ΠΈ RS Π² 0 */
delay_100us();
delay_100us();
}
/********************************************************************/
/* delay_5ms: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° 5 ΠΌΡ */
/********************************************************************/
void delay_5ms(void) {
int i;
for (i=0; i<50; i++) {
delay_100us();
}
}
/********************************************************************/
/* delay_100us:ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² 100 ΠΌΡ */
/********************************************************************/
void delay_100us(void) {
int i;
for(i=0; i<800; i++) {
asm("nop");/*Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nΠΎΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 1 ΠΏΠ΅ΡΠΈΠΎΠ΄*/
}
}
/********************************************************************/
/* display_count_LCD: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ASCII ΡΠΈΠΌΠ²ΠΎΠ» */
/* Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΠΠΠ */
/********************************************************************/
void display_count_LCD(unsigned int count) {
unsigned int thousands_int;
unsigned int hundreds_int;
unsigned int tens_int;
unsigned int ones_int;
char thousands;
char hundreds;
char tens;
char ones;
/*Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΡΡ Π·Π½Π°ΡΠ°ΡΡΡ ΡΠΈΡΡΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ */
/* Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ + 48, ΠΎΠ±ΡΠ°Π·ΡΡ ASCII ΠΊΠΎΠ΄ */
thousands_int = count/1000;
thousands = (char)(thousands_int + 48);
/*Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΡΡ Π·Π½Π°ΡΠ°ΡΡΡ ΡΠΈΡΡΡ */
/* Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ + 48, ΠΎΠ±ΡΠ°Π·ΡΡ ASCII ΠΊΠΎΠ΄ */
hundreds_int = (count - thousands_int*1000)/100;
hundreds = (char)(hundreds_int + 48);
/*Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΡΡ Π·Π½Π°ΡΠ°ΡΡΡ ΡΠΈΡΡΡ */
/* Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ + 48, ΠΎΠ±ΡΠ°Π·ΡΡ ASCII ΠΊΠΎΠ΄ */
tens_int = (count - thousands_int*10 0 0 - hundreds_int*100)/10;
tens = (char)(hundreds_int + 48);
/*Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΡΡ Π·Π½Π°ΡΠ°ΡΡΡ ΡΠΈΡΡΡ */
/* Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ + 48, ΠΎΠ±ΡΠ°Π·ΡΡ ASCII ΠΊΠΎΠ΄ */
ones_int = (count-thousands_int*1000-hundreds_int*100-tens_int*10);
ones = (char)(ones_int + 48);
/*Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΠΠ*/
putcommands(0x80); /*ΠΊΡΡΡΠΎΡ ΠΠΠ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΡΠΎΠΊΡ 1, ΠΏΠΎΠ·ΠΈΡΠΈΡ 1*/
putchars(thousands);
putchars(hundreds);
putchars(tens);
putchars(ones);
}
/********************************************************************/
/********************************************************************/
7.4.3. ΠΠ½Π°Π»ΠΈΠ·
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΅Π΅ Π² ΠΎΠ±ΠΎΡΠΎΡΠ°Ρ Π² ΠΌΠΈΠ½ΡΡΡ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ Π·Π°ΠΌΠΊΠ½Π΅ΠΌ ΠΊΠΎΠ½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠΌ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Ρ ΠΎΠΏΠΎΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π½Π° ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ.
Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ 1600 ΠΎΠ±/ΠΌΠΈΠ½. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ Π΄Π»Ρ 1600 ΠΎΠ±/ΠΌΠΈΠ½. ΠΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΈΡ. 7.17) ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² 1600 ΠΎΠ±/ΠΌΠΈΠ½, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΡ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² 8 Π. ΠΡΠΈ ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π² 12 Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ ΡΠΎΡΡΠ°Π²ΠΈΡ 66.7 % (8 Π/ 12 Π).
Π§ΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ Π² 66.7%, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π¨ΠΠ Π½Π° 256 Π΅Π΄ΠΈΠ½ΠΈΡ, Π° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ Π½Π° 172 Π΅Π΄ΠΈΠ½ΠΈΡΡ.
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π¨ΠΠ, ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ PWPER0 ΠΈ PWDTY0, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π» ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π¨ΠΠ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ 976 ΠΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π¨ΠΠ, ΡΠ°Π²Π½ΡΡ 8 ΠΠΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ Π½Π° 32. ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΡΡΠΎΡΡ Π² 250 ΠΊΠΡ (ΠΏΠ΅ΡΠΈΠΎΠ΄ 4 ΠΌΠΊΡ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π¨ΠΠ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π² 256 ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ², ΡΠ°ΡΡΠΎΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π¨ΠΠ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° 976 ΠΡ (ΠΏΠ΅ΡΠΈΠΎΠ΄ = 4 ΠΌΠΊΡ/ΠΈΠΌΠΏΡΠ»ΡΡΓ256 ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²).
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¨ΠΠ, ΡΡΠΎΠ±Ρ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ 1600 ΠΎΠ±/ΠΌΠΈΠ½.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ.
/********************************************************************/
/*init_PWM(): ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π¨ΠΠ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° 68HC12 */