AVR рдореЗрдВ рдорд▓реНрдЯреАрдЪреИрдирд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ PWM

рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ PWM рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдЫреВрдКрдВрдЧрд╛ред рдкреАрдбрдмреНрд▓реВрдПрдо рдкрд▓реНрд╕ рдЪреМрдбрд╝рд╛рдИ рдореЙрдбреБрд▓рди рд╣реИ, (рдЕрдВрдЧреНрд░реЗрдЬреА рдкреАрдбрдмреНрд▓реВрдПрдо - рдкрд▓реНрд╕ рдЪреМрдбрд╝рд╛рдИ рдореЙрдбреБрд▓рди рдореЗрдВ) рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рджрд╛рд▓реЛрдВ рдФрд░ рдЙрдирдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рд░рдВрддрд░ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рджрд╛рд▓реЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ (рдЕрд╡рдзрд┐) рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рдХреА рдЪрдордХ, рдореЛрдЯрд░ рд╢рд╛рдлреНрдЯ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреА рдЧрддрд┐ рдпрд╛ рдХрд┐рд╕реА рднреА рд╣реАрдЯрд┐рдВрдЧ рддрддреНрд╡ рдХрд╛ рддрд╛рдкрдорд╛рдиред рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдкреАрдбрдмреНрд▓реВрдПрдо рдХреА рдорджрдж рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдореЗрдВ PWM рдХрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ PWM рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдЫрд╣ ATmega88, рдЪрд╛рд░ ATtiny2313 рдореЗрдВ, рддреАрди ATmega8 рдореЗрдВ рдФрд░ ATTiny13 рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рд╣реИрдВред AVR рдореЗрдВ, PWM рдЪреИрдирд▓ рдЯрд╛рдЗрдорд░ рдФрд░ рдЙрдирдХреЗ OCRxx рддреБрд▓рдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд░рд╛рдЬреНрдп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕реЗ 1 рдпрд╛ 0. рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд┐рд╕реА рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ PWM рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛- рдмреЛрд░реНрдб рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкрд┐рди-рдЖрдЙрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рддрдХ рд╕реАрдорд┐рдд рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЕрдЧрд░ рд╣рдо рдореЗрдЧрд╛ рдпрд╛ рдЯрд┐рдиреА рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ)ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ред

рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореВрд▓ Appnote AVR136: рд▓реЛ-рдЬрд┐рдЯрд░ рдорд▓реНрдЯреА-рдЪреИрдирд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ PWM рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдкреАрдбрдмреНрд▓реВрдПрдо рдореЛрдб рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдкрд▓реНрд╕ рдЕрд╡рдзрд┐ рдХреНрд░рдорд╢рдГ рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдПрдХ (рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ lev_ch1, lev_ch2, тАЛтАЛlev_ch3), рдФрд░ рдЗрди рдЪрд░реЛрдВ рдХреЗ "рдЬреБрдбрд╝рд╡рд╛рдБ" рднреА рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдорд░ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ buf_lev_ch1, buf_lev_ch2ред buf_lev_ch3)ред рдЖрда-рдмрд┐рдЯ рдЯрд╛рдЗрдорд░ рдореБрдЦреНрдп рдПрдордХреЗ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдкреНрд░рддреНрдпреЗрдХ 256 рдШрдбрд╝реА рдЪрдХреНрд░ред рдпрд╣ рдмрд╛рдзрд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд┐ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ - рдЕрдЧрд▓реЗ рдЕрд╡рд░реЛрдз рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 256 рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдХреЗ рднреАрддрд░ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирддреАрдЬрддрди, рдПрдХ рдкреВрд░реНрдг рдкреАрдбрдмреНрд▓реВрдПрдо рдЕрд╡рдзрд┐ 256 * 256 = 65536 рдШрдбрд╝реА рдЪрдХреНрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред рдЖрда-рдмрд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рд╡реЗрд░рд┐рдПрдмрд▓ (рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ) рдПрдХ-рдПрдХ рд░реБрдХрд╛рд╡рдЯ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдкреАрдбрдмреНрд▓реВрдПрдо рдЪрдХреНрд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рддрд┐ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдм 1/256 рдкрд░ PWM рдХрд╛ рдПрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди (рдиреНрдпреВрдирддрдо рдЪрд░рдг), рдФрд░ (/ (256 * 256) рдкрд░ рдкрд▓реНрд╕ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ (рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдорд╛рд╕реНрдЯрд░ рдСрд╕рд┐рд▓реЗрдЯрд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ATtiny13 рдмрд╛рд╣рд░реА рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ - 9.6 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬред рдпрд╣ 9600000 / 655366146.5 рд╣рд░реНрдЯреНрдЬ рдХреА рдкреАрдбрдмреНрд▓реВрдПрдо рдЕрд╡рдзрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
C рдХреЛрдб, ATtiny13 MK (рдЖрдЙрдЯрдкреБрдЯ PB0, PB1, PB2 рдкрд░ рддреАрди PWM рдЪреИрдирд▓) рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

#define F_CPU 9600000 //fuse LOW=0x7a #include <avr/interrupt.h> #include <util/delay.h> uint8_t counter=0; uint8_t lev_ch1, lev_ch2, lev_ch3; uint8_t buf_lev_ch1, buf_lev_ch2, buf_lev_ch3; void delay_ms(uint8_t ms) //  { while (ms) { _delay_ms(1); ms--; } } int main(void) { DDRB=0b00000111; //  PortB  0,1,2  TIMSK0 = 0b00000010; //      TCCR0B = 0b00000001; //  ,   sei(); //   lev_ch1=0; //  lev_ch2=64; //  lev_ch3=128; //  while (1) //  { for (uint8_t i=0;i<255;i++) { lev_ch1++; //  lev_ch2++; //  lev_ch3++; //  delay_ms(50); // 50 } } } ISR (TIM0_OVF_vect) //     { if (++counter==0) //     { buf_lev_ch1=lev_ch1; //   buf_lev_ch2=lev_ch2; buf_lev_ch3=lev_ch3; PORTB |=(1<<PB0)|(1<<PB1)|(1<<PB2); // 1    } if (counter==buf_lev_ch1) PORTB&=~(1<<PB1); // 0   if (counter==buf_lev_ch2) PORTB&=~(1<<PB0); //  if (counter==buf_lev_ch3) PORTB&=~(1<<PB2); // . } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмреЗрдорд╛рдиреА рд╣реИред рдЕрд╡рдзрд┐ рдорд╛рди рдФрд░ рдЙрдирдХреЗ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде, рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдПред
Avr-gcc-4.7.1 рдФрд░ avr-libc-1.8.0 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:
avr-gcc -mmcu=attiny13 -Wall -Wstrict-prototypes -Os -mcall-prologues -std=c99 -o softPWM.obj softPWM.c
avr-objcopy -O ihex softPWM.obj softPWM.hex
рдЙрдЪрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рдлреНрдпреВрдЬ-рдмрд┐рдЯреНрд╕ рдХреЛ 0x7a (рдЖрд╡реГрддреНрддрд┐ 9.6 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
avrdude -p t13 -c usbasp -U lfuse:w:0x7a:m

рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдкред рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд┐рдЫрд▓реЗ рд╕реА рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд░рддрд╛ рд╣реИред
 ;   include- .list .equ DDRB= 0x17 .equ PORTB= 0x18 .equ RAMEND= 0x009f .equ SPL= 0x3d .equ TCCR0B= 0x33 .equ TIMSK0= 0x39 .equ SREG= 0x3f ;  ,      .def temp=R16 .def lev_ch1=R17 .def lev_ch2=R18 .def lev_ch3=R19 .def buf_lev_ch1=R13 .def buf_lev_ch2=R14 .def buf_lev_ch3=R15 .def counter=R20 .def delay0=R21 .def delay1=R22 .def delay2=R23 .cseg .org 0 ;   : rjmp RESET ; Reset Handler rjmp EXT_INT0 ; IRQ0 Handler rjmp PIN_CHG_IRQ ; PCINT0 Handler rjmp TIM0_OVF ; Timer0 Overflow Handler rjmp EE_RDY ; EEPROM Ready Handler rjmp ANA_COMP ; Analog Comparator Handler rjmp TIM0_COMPA ; Timer0 CompareA Handler rjmp TIM0_COMPB ; Timer0 CompareB Handler rjmp WATCHDOG ; Watchdog Interrupt Handler rjmp ADC_IRQ ; ADC Conversion Handler ;RESET: EXT_INT0: PIN_CHG_IRQ: ;TIM0_OVF: EE_RDY: ANA_COMP: TIM0_COMPA: TIM0_COMPB: WATCHDOG: ADC_IRQ: reti RESET: ldi temp,0b00000111 ;  PortB  PB0, PB1 out DDRB,temp ;  PB2  ldi temp,0 ;    out PORTB,temp ; PortB  0 ldi temp,low(RAMEND) ;  out SPL,temp ;  ldi temp,0b00000001 ; .  out TCCR0B,temp ;   ldi temp,0b00000010 ; .  out TIMSK0,temp ;    sei ;   start_pwm: ;   inc lev_ch1 ;   inc lev_ch2 ;   inc lev_ch3 ;    rcall delay ;     rjmp start_pwm delay: ;   ldi delay2,$01 ;   ldi delay1,$77 ;    ldi delay0,$00 ; $017700 -    50 loop: subi delay0,1 ;  sbci delay1,0 ;  sbci delay2,0 ;  brcc loop ret TIM0_OVF: ;    push temp ;     in temp,SREG ; temp  SREG   push temp inc counter ;     0 cpi counter,0 ;   0,   brne ch1_off ;      mov buf_lev_ch1,lev_ch1 ;   0 mov buf_lev_ch2,lev_ch2 ;    mov buf_lev_ch3,lev_ch3 ;     ldi temp,0b00000111 ;   out PORTB,temp ;   ch1_off: ;      cp counter,buf_lev_ch1 ;  ? brne ch2_off ; ,  -   cbi PORTB,0 ;   ch2_off: ;      cp counter,buf_lev_ch2 ;  ? brne ch3_off ; ,  -   cbi PORTB,1 ;   ch3_off: ;      cp counter,buf_lev_ch3 ;  ? brne irq_end ; ,  -      cbi PORTB,2 ; ,  irq_end: ;    pop temp ; SREG  temp out SREG,temp pop temp reti ;   

рдПрд╡реНрд░рд╛ рдпрд╛ рддрд╡реНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рддред рдлрд╝реНрдпреВрдЬрд╝-рдмрд┐рдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред


Source: https://habr.com/ru/post/In152299/


All Articles