AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рднрд╛рдЧ 1

рднрд╛рдЧ 2. рдЖрд░рдВрдн рдХрд░рдирд╛ тЖТ


AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛрдб рдЬреЗрдирд░реЗрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА


рднрд╛рдЧ 1. рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд


рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрдпрд╛рд░реЗ рдЦрд╛рдмрд░реЛрд╡рд┐рддреНрд╕ред рдореИрдВ AVR рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЛ рдЕрдЧрд▓реЗ (рдорд╣рд╛рди рдХрдИ рдЙрдкрд▓рдмреНрдз рд╕реЗ) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред


рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рда рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИред рдФрд░ рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рддреБрд▓рдирд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдВрдЧреЗред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдм рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИред


рд╣рдо рдкреНрд░рдЪрд▓рд┐рдд рдкреНрд░рдерд╛ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреИрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рдПрд▓рдИрдбреА рдХреЛ рдмреНрд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВред Microsoft рд╕реЗ VisualStudio рдЦреЛрд▓реЗрдВ (рдХреЛрдИ рднреА рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдЧрд╛) рдФрд░ C # рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ, рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг, рдмрд┐рд▓реНрдХреБрд▓ рдореБрдлреНрдд рд╣реИред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рда рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 1
using NanoRTOSLib; using System; namespace ConsoleApp { class Program { static void Main(string[] args) { var m = new Mega328(); m.PortB[0].Mode = ePinMode.OUT; m.PortB.Activate(); m.LOOP(m.TempL, (r, l) => m.GO(l), (r) => { m.PortB[0].Toggle();}); Console.WriteLine(AVRASM.Text(m)); } } } 

рдмреЗрд╢рдХ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реВрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдо рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗред


рдЙрджрд╛рд╣рд░рдг 1 рдХрд╛ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо
 #include тАЬcommon.incтАЭ RESET: ldi r16, high(RAMEND) out SPH,r16 ldi r16, low(RAMEND) out SPL,r16 outi DDRB,0x1 L0000: in TempL,PORTB ldi TempH,1 eor TempL,TempH out PORTB,TempL xjmp L0000 .DSEG 

рдпрджрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХрд┐рд╕реА рднреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ AVR рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ Common.inc рдореИрдХреНрд░реЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ (рдореИрдХреНрд░реЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рдкреНрд░рд╕реНрддреБрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░ NanoRTOSLib рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рдк рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ m рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рдХреНрд░рд┐рд╕реНрдЯрд▓ рдмреА рдХреЗ рд╢реВрдиреНрдп рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд┐рдЯрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдереЛрдбрд╝реА рдЕрдЬреАрдм рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣рдо рд╢реВрдиреНрдп рдмреА рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣ рдмрд┐рдЯ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд▓рд┐рдЦреА рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреА рд╣реИред рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рд╢реНрди рд╣реИрдВ: рдкрд╣рд▓рд╛ - рдпрджрд┐ рд╣рдо рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреИрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХреНрдпреЛрдВ рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ xjmp ? рдкрд╣рд▓реЗ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреНрдпреЛрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдорд╛рдкреНрдд рд╣реЗрдХреНрд╕ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд╣реИ: рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЖрдЧреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрдо рд╕реЗ рдХрдо рдЙрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдк рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИред Xjmp рдХреЗ рд▓рд┐рдП , рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреА рдкрдардиреАрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, xjmp рд╕рдВрдХреНрд░рдордг рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде jmp рдФрд░ rjmp рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред


рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рдЪрд┐рдк рд╕реЗ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо рдбрд╛рдпреЛрдб рдХреЛ рдкрд▓рдХ рдЭрдкрдХрддреЗ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд┐рди рд░рд╛рдЬреНрдп рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдВрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдбрд╛рдпреЛрдб рдХреЗ рд╕рд╛рде рдЭрдкрдХрд╛рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0.5 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ: рдмрд╣реБрдд рддреЗрдЬ рдирд╣реАрдВ рдФрд░ рдмрд╣реБрдд рдзреАрдореА рдирд╣реАрдВред рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдУрдкреА рдХреЗ рд╕рд╛рде рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдХрджрдо рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╡рд░реНрдгрди рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВрдЧреЗред рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВред


рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 2
 using System; namespace ConsoleApp { class Program { static void Main(string[] args) { var m = new Mega328(); m.PortB[0].Mode = ePinMode.OUT; m.PortB.Activate(); m.WDT.Clock = eWDTClock.WDT500ms; m.WDT.OnTimeout = () => m.PortB[0].Toggle(); m.WDT.Activate(); m.EnableInterrupt(); var loop = AVRASM.newLabel(); m.GO(loop); Console.WriteLine(AVRASM.Text(m)); } } } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЙрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ WDT (рд╡реЙрдЪрдбреЙрдЧ рдЯрд╛рдЗрдорд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдмрдбрд╝реЗ рд╡рд┐рд▓рдВрдм рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрддреНрдпрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛ WDT.Clock рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рднрдХреНрдд рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ WDT.OnTimeP рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЙрд╕ рд╕рдордп рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЙрд╕ рд╕рдордп рдЪрд╛рд▓реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЪреВрдБрдХрд┐ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ EnableInterrupt рдХрдорд╛рдВрдб рд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреЛ рдПрдХ рдбрдореА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдЕрднреА рднреА рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рд▓реЗрдмрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдЪрдХреНрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЛ LOOP рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ - рдХреГрдкрдпрд╛ред рдЗрд╕рдХрд╛ рдирддреАрдЬрд╛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред
рдЦреИрд░, рдлрд╛рдЗрдирд▓ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВред


рдЙрджрд╛рд╣рд░рдг 2 рдХрд╛ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо
 #include тАЬcommon.incтАЭ jmp RESET reti ; IRQ0 Handler nop reti ;IRQ1 Handler nop reti ;PC_INT0 Handler nop reti ;PC_INT1 Handler nop reti ;PC_INT2 Handler nop jmp WDT ;Watchdog Timer Handler RESET: ldi r16, high(RAMEND) out SPH,r16 ldi r16, low(RAMEND) out SPL,r16 outi DDRB,0x1 ldi TempL, (1<<WDCE) | (1<<WDE) sts WDTCSR,TempL ldi TempL, 0x42 sts WDTCSR,TempL sei L0000: xjmp L0000 WDT: push r17 push r16 in r16,SREG push r16 in TempL,PORTB ldi TempH,1 eor TempL,TempH out PORTB,TempL pop r16 out SREG,r16 pop r16 pop r17 reti .DSEG 

рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рдзрд╛ рд╡рд╛рд▓реЗ рд╡реИрдХреНрдЯрд░ рдЧрдП рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ - рдпрджрд┐ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╛рдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡реЗрдХреНрдЯрд░ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ picky рдЗрд╕ рддрдереНрдп рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрднрд╡ рджреЗрд░реА рдХрд╛ рд╕реЗрдЯ рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рдХрджрдо рдмрд╣реБрдд рдореЛрдЯрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреИрд╕реЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдЧрд╛ 328 рдХреНрд░рд┐рд╕реНрдЯрд▓ рдореЗрдВ, рдЬреЛ рдПрдХ рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ 3 рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╣реИрдВред 2 8-рдмрд┐рдЯ рдФрд░ рдПрдХ 16-рдмрд┐рдЯред рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯреЛрдВ рдиреЗ рдЗрди рдЯрд╛рдЗрдорд░ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдмрд╣реБрдд рдХреЛрд╢рд┐рд╢ рдХреА, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ 0.5 рд╕реЗрдХрдВрдб рдХреА рд╣рдорд╛рд░реА рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо 16 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдХреНрд░рд┐рд╕реНрдЯрд▓ рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЕрдзрд┐рдХрддрдо рдкрд░рд┐рдзреАрдп рд╡рд┐рднрдХреНрдд рдХреЗ рд╕рд╛рде рднреА 8-рдмрд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рднреАрддрд░ рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреЗрд╡рд▓ 16-рдмрд┐рдЯ рдЯрд┐рдорд░ 1 рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред


рдирддреАрдЬрддрди, рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрддрд╛ рд╣реИ:


рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 3
 using NanoRTOSLib; using System; namespace ConsoleApp { class Program { static void Main(string[] args) {var m = new Mega328(); m.FCLK = 16000000; m.CKDIV8 = false; var bit1 = m.PortB[0]; bit1.Mode = ePinMode.OUT; m.PortB.Activate(); m.Timer1.Mode = eWaveFormMode.CTC_OCRA; m.Timer1.Clock = eTimerClockSource.CLK256; m.Timer1.OCRA = (ushort)((0.5 * m.FCLK) / 256); m.Timer1.OnCompareA = () => bit1.Toggle(); m.Timer1.Activate(); m.EnableInterrupt(); m.LOOP(m.TempH, (r, l) => m.GO(l), (r) => { }); Console.WriteLine(AVRASM.Text(m)); } } } 

рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдШрдбрд╝реА рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреЗрд░реА рдХреА рд╕рд╣реА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐, рд╡рд┐рднрдХреНрдд рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рдкрд░рд┐рдзреАрдп рдШрдбрд╝реА рдлреНрдпреВрдЬ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рдкрд╛рда рдЯрд╛рдЗрдорд░ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдореЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ, 256 рдХреЗ рдПрдХ рдбреЗрд▓реАрдмреЗрдЯрд░ рдФрд░ рдЕрдзрд┐рдХрддрдо рдирд╣реАрдВ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреНрд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк 500ms рдХреА рдЖрд╡рд╢реНрдпрдХ рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП 1024 рдХреЗ рдПрдХ рд╡рд┐рднрдХреНрдд рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред


рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


рдЙрджрд╛рд╣рд░рдг 3 рдХрд╛ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо
 #include тАЬcommon.incтАЭ jmp RESET reti ; IRQ0 Handler nop reti ;IRQ1 Handler nop reti ;PC_INT0 Handler nop reti ;PC_INT1 Handler nop reti ;PC_INT2 Handler nop reti ;Watchdog Timer Handler nop reti ;Timer2 Compare A Handler nop reti ;Timer2 Compare B Handler nop reti ;Timer2 Overflow Handler nop reti ;Timer1 Capture Handler nop jmp TIM1_COMPA ;Timer1 Compare A Handler RESET: ldi r16, high(RAMEND) out SPH,r16 ldi r16, low(RAMEND) out SPL,r16 outi DDRB,0x1 outiw OCR1A,0x7A12 outi TCCR1A,0 outi TCCR1B,0xC outi TCCR1C,0x0 outi TIMSK1,0x2 outi DDRB,0x1 sei L0000: xjmp L0000 TIM1_COMPA: push r17 push r16 in r16,SREG push r16 in TempL,PORTB ldi TempH,1 eor TempL,TempH out PORTB,TempL pop r16 out SREG,r16 pop r16 pop r17 reti .DSEG 

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВред


рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдмреАрдЪ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдмрдВрдз рдиреЗрд╕реНрдЯреЗрдб рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдиреНрдп рд╕рднреА рд╡реНрдпрд╡рдзрд╛рдиреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рд╕рдорд╛рдзрд╛рди рдЗрд╡реЗрдВрдЯ рдкрдВрдЬреАрдХрд░рдг рдХреЛрдб рдФрд░ рдЙрдирдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдмрд╛рдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЗрд╡рд▓ рджрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреИрдкреНрдЪрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрди рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрдВрдбреЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреЗрд░реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред


рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 4
 using NanoRTOSLib; using System; namespace ConsoleApp { class Program { static void Main(string[] args) { var m = new Mega328(); m.FCLK = 16000000; m.CKDIV8 = false; m.PortB.Direction(0x07); var bit1 = m.PortB[1]; var bit2 = m.PortB[2]; m.PortB.Activate(); var tasks = new Parallel(m, 4); tasks.Heap = new StaticHeap(tasks, 64); var t1 = tasks.CreateTask((tsk) => { var loop = AVRASM.NewLabel(); bit1.Toggle(); tsk.Delay(32); tsk.TaskContinue(loop); },"Task1"); var t2 = tasks.CreateTask((tsk) => { var loop = AVRASM.NewLabel(); bit2.Toggle(); tsk.Delay(48); tsk.TaskContinue(loop); }, "Task2"); var ca = tasks.ContinuousActivate(tasks.AlwaysOn, t1); tasks.ActivateNext(ca, tasks.AlwaysOn, t2); ca.Dispose(); m.EnableInterrupt(); tasks.Loop(); Console.WriteLine(AVRASM.Text(m)); } } } 

рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ, рд╣рдо рдкреЛрд░реНрдЯ рдмреА рдХреЗ рд╢реВрдиреНрдп рдФрд░ рдкрд╣рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓реНрдп рдХреЛ 0 рд╕реЗ 1 рддрдХ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд 32ms рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рд╢реВрдиреНрдп рдФрд░ рдкрд╣рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП 48ms рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдмрд╛рдд рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрди рдХрд╛ рдореВрд▓ рд╣реИред рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд╛рде рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдбреНрд╕ рдХреА рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдореЛрд░реА рдореЗрдореЛрд░реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд StaticHeap рд╡рд░реНрдЧ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрддрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрд░реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рджреЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░реАрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд▓рдВрдм рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЗрдЯ рдЕрдВрддрд░рд╛рд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд░реНрдиреЗрд▓ рд╡рд┐рд▓рдВрдм рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдХрдорд╛рдВрдб рд╕реЗ рдХрд╛рд░реНрдп рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреА рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рдХрдорд╛рдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдХрд╛рд░реНрдп рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдзрд╛рдЧрд╛ рдореБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдХрд╛рд░реНрдп рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рд╕рдВрдХреЗрдд рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реИред рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрд╡рд░реЛрдз рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЯрд╛рд╕реНрдХ рдХреЙрд▓ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рдСрд▓реНрд╡реЛрдСрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдХреЗрдд рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдорддрджрд╛рди рдЪрдХреНрд░ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред LOOP рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореБрдЦреНрдп рдирд┐рд╖реНрдкрд╛рджрди рд▓реВрдк рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ (рд▓рдЧрднрдЧ 600 рдХрдорд╛рдВрдб) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓реЗрдЦ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдФрд░ рдорд┐рдард╛рдИ рдХреЗ рд▓рд┐рдП - рдПрдХ рд▓рд╛рдЗрд╡ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдФрд░, рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рдерд░реНрдорд╛рдореАрдЯрд░ред рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╕рд░рд▓ рд╣реИред рдПрд╕рдкреАрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕реЗрдВрд╕рд░, рдЪреАрдЬреЛрдВ рдХреЛ рдардВрдбрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 7-рд╕реЗрдЧрдореЗрдВрдЯ 4 рдЕрдВрдХреЛрдВ рдХрд╛ рд╕рдВрдХреЗрддрдХ рдФрд░ рдХрдИ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдзрд╛рдЧреЗред рдПрдХ рдореЗрдВ, рд╣рдо рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдореЗрдВ, рдПрдХ рддрд╛рдкрдорд╛рди рдкрдврд╝рдиреЗ рдХреЗ рдЪрдХреНрд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдПрдВ, рддреАрд╕рд░реЗ рдореЗрдВ рд╣рдо рд╕реЗрдВрд╕рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдХреЛрдб рд╕реЗ рдмреАрд╕реАрдбреА рдФрд░ рдлрд┐рд░ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдХреЗрдд рдмрдлрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрдВрдб рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред


рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 5
 using NanoRTOSLib; using System; namespace ConsoleApp { class Program { static void Main(string[] args) { var m = new Mega328(); m.FCLK = 16000000; m.CKDIV8 = false; var led7s = new Led_7(); led7s.SegPort = m.PortC; led7s.Activate(); m.PortD.Direction(0xFF); m.PortD.Activate(); m.PortB[0].Mode = ePinMode.OUT; var tc77 = new TC77(); tc77.CS = m.PortB[0]; tc77.Port = m.SPI; m.Timer0.Clock = eTimerClockSource.CLK64; m.Timer0.Mode = eWaveFormMode.Normal; var reader = m.DREG("Temperature"); var bcdRes = m.DREG("digits"); var tmp = m.BYTE(); var bcd = new BCD(reader, bcdRes); m.subroutines.Add(bcd); var os = new Parallel(m, 4); os.Heap = new StaticHeap(os, 64); var tmrSig = os.AddSignal(m.Timer0.OVF_Handler); var spiSig = os.AddSignal(m.SPI.Handler, () => { m.SPI.Read(m.TempL); m.TempL.MStore(tmp); }); var actuator = os.CreateTask((tsk) => { var loop = AVRASM.NewLabel(); tc77.ReadTemperatureAsync(); tsk.Delay(16); tsk.TaskContinue(loop); }, "actuator"); var treader = os.CreateTask((tsk) => { var loop = AVRASM.NewLabel(); tc77.ReadTemperatureCallback(os, reader, tmp); reader >>= 7; m.CALL(bcd); tsk.TaskContinue(loop); }, "reader"); var display = os.CreateTask((tsk) => { var loop = AVRASM.NewLabel(); m.PortD.Write(0xFE); m.TempQL.Load(bcdRes.Low); m.TempQL &= 0x0F; led7s.Show(m.TempQL); os.AWAIT(); m.PortD.Write(0xFD); m.TempQL.Load(bcdRes.Low); m.TempQL >>= 4; led7s.Show(m.TempQL); os.AWAIT(); m.PortD.Write(0xFB); m.TempQL.Load(bcdRes.High); m.TempQL &= 0x0F; led7s.Show(m.TempQL); os.AWAIT(); m.PortD.Write(0xF7); m.TempQL.Load(bcdRes.High); m.TempQL >>= 4; led7s.Show(m.TempQL); os.AWAIT(); tsk.TaskContinue(loop); }, "display"); var ct = os.ContinuousActivate(os.AlwaysOn, actuator); os.ActivateNext(ct, spiSig, treader); os.ActivateNext(ct, tmrSig, display); tc77.Activate(); m.Timer0.Activate(); m.EnableInterrupt(); os.Loop(); Console.WriteLine(AVRASM.Text(m)); } } } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдорд╕реМрджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдиреИрдиреЛ-рдЯреАрдУрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рддрдХрдиреАрдХреА рдбреЗрдореЛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрд░реЛрдд рдХреА 100 рд╕реЗ рдХрдо рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рдХреА 1kb рд╕реЗ рдХрдо рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред


рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣реИред

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


All Articles