рд╕реА, рднрд╛рдЧ 2 рдореЗрдВ рдмрд╛рд╣рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рдЖрдзреА рд░рд╛рдд рдЖ рдЧрдИ рдФрд░ рд╢реЗрд╣рд░рдЬрд╛рджрд╛ рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡реАрдХреГрдд рднрд╛рд╖рдг рдЬрд╛рд░реА рд░рдЦреЗ


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

рддреЛ, рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ ...

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



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд╣рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ, рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдЯреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдХрдо (рд╢реВрдиреНрдп) рдмрд┐рдЯ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ рд╣реЛрддрд╛ рд╣реИ (0 - рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, 1 - рдбрд┐рд╡рд╛рдЗрд╕ рд╡реНрдпрд╕реНрдд рд╣реИ рдХреБрдЫ рдХрдорд╛рдВрдб рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг) , рдФрд░ 3 рдЕрдВрдХ, 30..28 рдХреЛ рд╡рд░рд┐рд╖реНрдарддрд╛ рдореЗрдВ рджреВрд╕рд░реЗ рд╕реЗ рд╢реБрд░реВред (рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 32-рдмрд┐рдЯ рд╢рдмреНрдж рд╣реИ), рдХрдорд╛рдВрдб рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдЖрдкрдХреЛ рддрд░реНрдХрд╕рдВрдЧрдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рдерд╛, рддреЛ рдЖрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛)ред рд╣рдо C рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрдкреАрд▓ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? .. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдмрд╛рдХреА рдмрд┐рдЯреНрд╕ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ (рдФрд░ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╡рд╣рд╛рдВ рд░рд╣рддреА рд╣реИ) рдмрд┐рдЯ рдорд╛рд╕реНрдХ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
#define IO_STATUS_CMD_MASK 0x70000000 #define IO_STATUS_CMD_BIT 28 #define IO_STATUS_FLAG_MASK 0x01 while (*pio_status & IIO_STATUS_FLAG) {}; *pio_status=(*pio_status & ~IO_STATUS_CMD_MASK) | ((command << IO_STATUS_CMD_BIT) & IO_STATUS_CMD_MASK);
      
      



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

рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рдирд┐рдореНрди-рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИред рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдПрдХ рдмрд┐рдЯ рд╕реЗ рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдиреНрдпреВрдирддрдо (рдПрдХрд▓) рдмрд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЪреМрдереА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рдЙрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ (рдПрдХрд▓) рдмрд┐рдЯ рд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдПрдХрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЦрддрд░рдирд╛рдХ рджрд┐рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рд╣рдо рдЗрд╕реЗ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ: рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рди рд▓реЗрдВ, рдЗрд╕рдореЗрдВ рд╕рднреА рдмрд┐рдЯреНрд╕ рдЫреЛрдбрд╝ рджреЗрдВ, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдлрд╝реАрд▓реНрдб рдХреЗ рдирдП рдореВрд▓реНрдп рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреНрд╖реЗрддреНрд░ рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдмрд┐рдЯреНрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рд╣рд░ рдмрд╛рд░ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдореИрдХреНрд░реЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
 #define DATA_SET(ADR,MASK,BIT,DATA) (ADR)=((ADR) & ~(MASK)) | (((DATA) <<(BIT)) & (MASK)) DATA_SET(*pio_status,IO_STATUS_CMD_MASK,IO_STATUS_CMD_BIT,command);
      
      



рдЪреВрдВрдХрд┐ рдкреЛрд╕реНрдЯ рд╡рд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИ рдереА, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рджрд┐рдЦрд╛рдПрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдЙрдирдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдореИрдХреНрд░реЛ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рд╕реЗ рдПрдХ рдмрд┐рдЯрдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдмрдирд╛рддрд╛ рд╣реИ
 #define LOWBIT(MASK) (((~(MASK)-1)) & (MASK)) #define LOWBIT(MASK) (~(MASK << 1) & (MASK)) #define LOWBIT(MASK) (~(MASK)+1) & (MASK)
      
      



, рдХрдард┐рди (рдореИрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ), рдХрдо рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реБрдВрджрд░ рдореИрдХреНрд░реЛред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдореВрд▓реНрдп рд╣рд╕реНрддрд╛рдВрддрд░рдг рдореИрдХреНрд░реЛ рдХрд╛ рдХреЛрдб рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛
 #define DATA_SET(ADR,MASK,DATA) (ADR)=((ADR) & ~(MASK)) | (((DATA) * LOWBIT(MASK)) & (MASK)) DATA_SET(*pio_status,IO_STATUS_CMD_MASK,command);
      
      



рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдкреВрдЫреЗрдЧрд╛, рд▓реЗрдХрд┐рди рджрдХреНрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рдерд╛, рдЬреЛ рдПрдЖрд░рдПрдо рдкреНрд░рддрд┐ рдШрдбрд╝реА рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЧреБрдгрд╛ (рдФрд░, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рд╣реИ? рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдирд┐рд░рдВрддрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдХреНрд░реЛ рдврд╣ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрдорд╛рдВрдб рдлрд╝реАрд▓реНрдб рдПрдХ рдЪрд░ рд╣реИ? рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рднрд╛рд╢рд╛рд▓реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдФрд╕рдд рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдПрдХ рдмрд┐рдЯ рд╕реЗ рдПрдХ рдирд┐рд░рдВрддрд░ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдкрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЧрдд рд╕рдВрдЦреНрдпрд╛ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП) рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХрд╛ рдпрд╣ (рдпрд╛ рд╕рдорд╛рди) рд╕рдВрд╕реНрдХрд░рдг рд╡реНрдпрд╛рдкрдХ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ (рдмреАрдПрд╕рдкреА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдХ рдХреА рдХрдорд┐рдпрд╛рдВ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдореИрдВ рдкрд╛рда рдореЗрдВ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдкрдВрдХреНрддрд┐ 5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣ рд╕рд┐рд░реНрдл рд░рд╛рдХреНрд╖рд╕реА рд╣реИ) рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреМрдЯрд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдХреНрд░рд╛рдордХ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рдирд╛
 DATA_SET(*pio_status,IO_STATUS_FLAG_MASK,command);
      
      



, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рдФрд░ рдореИрдХреНрд░реЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
 #define IO_CMD_SET(DATA) DATA_SET(*pio_status,IO_STATUS_CMD_MASK,DATA) IO_CMD_SET(command);
      
      



, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬрд▓реНрджреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдлрд┐рд░ рд╕реЗ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдФрд░ рдЦрд╛рдореА рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдХреА рдХрдореА рд╣реИ, рдпрд╛рдиреА рдПрдХ рдСрдкрд░реЗрд╢рди рдЬреИрд╕рд╛
 IO_CMD_SET(36);
      
      



рд╕рдВрдХрд▓рдХ рдХрд┐рд╕реА рднреА рд╕рдВрджреЗрд╣ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЛ рдЕрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЦреИрд░, рдЕрдм рдЬрдм рд╣рдордиреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрджреНрдзрддрд┐ рдХреА рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реАрдзреЗ рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реВрдВ рдЬреЛ рдЙрдирд╕реЗ рд░рд╣рд┐рдд рд╣реИрдВ (рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ)ред рдЗрд╕рд▓рд┐рдП, рджреГрд╢реНрдп рдкрд░ рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реА рдкрд░ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХ рдореЗрдВ рдХрд╛рдлреА рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рдПрдХ рд╢рдмреНрдж рдореЗрдВ "рдЫреЛрдЯреА" рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрдХрд░ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдореМрдЬреВрджрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╣рдореЗрдВ рдЗрди рднрд╛рд╖рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рдХреЛ рдПрдХ рд╢рдмреНрдж рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдФрд░ рд╕рдВрд░реЗрдЦрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВред рд╕рдВрдХрд▓рдХ рдореЗрдВ рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ:
 #pragma bitfields = disjoint_types //  ,      #pragma bitfields = reversed //  ,     
      
      



рддрдм рдкреНрд░рд╢реНрди рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
 #pragma bitfields=reverse typedef struct { unsigned :1; //    (31) unsigned code:3; // (30..28) unsigned : 27; //  27  (27..1) unsigned flag:1; // (0 -  ) } tIO_STATUS; #pragma bitfields=default volatile tIO_STATUS * const pio_status = (tIO_STATUS *) (IO_ADR);
      
      



рдиреЛрдЯ: рдЙрджрд╛рд╣рд░рдг рдХреА рдкрд╛рд░рдорд╛рд░реНрдерд┐рдХ рд░реЗрдЦрд╛ рдлрд╝реАрд▓реНрдб рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╡рд┐рдзрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрджрд┐ рдмрд╛рдж рдореЗрдВ рдРрд╕реЗ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдЬреНрдЮрд╛ рд╕рд╣рд┐рдд рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдереА (рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рд╣реИрдВ)ред рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдЦрд╛рдореА рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднрд░реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП (рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ) рдФрд░ рдлрд┐рд░ рдлрд╛рдпрджреЗ рдХреА рд╕реВрдЪреА рдкрд░ рдЬрд╛рдПрдВ: рд╣рдореЗрдВ рдХреЛрдИ рдорд╛рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛), рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рд╡реИрдзрддрд╛ рдкрд░ рдирд┐рд░рдВрддрд░ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВред рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝реАрд▓реНрдб рдЕрдм рдорд╛рдирдХ рднрд╛рд╖рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
 while (pio_status->flag) {}; poi_status->code=3;
      
      



, рдФрд░ рдСрдЯреЛрдлрд┐рд▓ рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдХрд╛рдо, рдпрд╛рдиреА рдСрдкрд░реЗрдЯрд░
 pio_status->code=34;
      
      



рд╕рдВрдХрд▓рдХ рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред

рдЕрдм рджрдХреНрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рдХреИрд╕реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ (рдпрд╛рдиреА, рдЖрдИрдПрдЖрд░ рдкрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рдВрдХрд▓рдХ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдмрджрд▓рд╛рд╡реЛрдВ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд┐рдЯ рдорд╛рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдЕрдкреАрд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдПрдбреНрд░реЗрд╕рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХрд▓-рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдКрдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдмрд┐рдЯ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрдВ рдмрд┐рдирд╛ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд╕рд╛рде рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИ, рдЬреЛ рдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдВрднрд╡ рд╣реИред рд╡рд╣реАрдВ, рдСрдкрд░реЗрдЯрд░реНрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ
 *pio_status=(*pio_status & ~(IO_STATUS_CMD_MASK | IO_STATUS_FLAG_MASK)) | ((command << IO_STATUS_CMD_BIT) & IO_STATUS_CMD_MASK) | (IO_STATUS_FLAG_MASK * flagset);
      
      



рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпрджрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЗрддреЛрдВ рддрдХ рдПрдХ рд╕рд╛рде рдкрд╣реБрдВрдЪ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг
 #define WORD(adr) *(int*)(adr) WORD(pio_status)=WORD(pio_status) & ...
      
      



рд╣рдореЗрдВ рд░рд╕реНрд╕реА рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рднреЗрдЬреВрдВрдЧрд╛,
 tIO_SATUS tmp; tmp=*pio_status; //      tmp.code=command; tmp.flag=flagset; *pio_status=tmp;
      
      



рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рджрдХреНрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдФрд░ рдЯрд┐рдкреНрдкрдгреА - рдпрджрд┐ рдЖрдкрдХреЛ рдРрд╕реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреА, рдпрджрд┐ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрдк рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХрд╛рд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
 #pragma bitfields=reverse typedef struct { unsigned :1; //    (31) unsigned code:3; // (30..28) unsigned : 27; //  26  (27..2) unsigned const readflag:1; //     (1) unsigned flag:1; // (0 -  ) } tIO_STATUS; #pragma bitfields=default volatile tIO_STATUS * const pio_status = (tIO_STATUS *) (IO_ADR); tIO_STATUS tmp={0,0,1}; //  ,       tmp=*pio_status; //     *(int*)(&tmp)=*(int*)pio_device; //   tmp.code=3; tmp.flag=1; *(int*)(pio_device)=*(int*)(&tmp);
      
      



рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдирд╛рдбрд╝реА рд▓рдЧрддрд╛ рд╣реИред

рдЦреИрд░, рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдмрд┐рдЯреНрд╕ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдЧрдгрдирд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдиреБрдХрд╕рд╛рди - рдЬрдм рдкреЛрд╕реНрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА, рддреЛ рдПрдХ рднрд╡реНрдп рдореИрдХреНрд░реЛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЬреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рдерд╛ рдЬреИрд╕реЗ
 REGISTR(tIO_STATUS,code[30..28],readflag[1],flag[0])
      
      



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

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

рдХреБрдЫ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рдЦреЗрддреЛрдВ рдХреЛ рднрд░рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ (#define VS enum) рдФрд░ рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



All Articles