рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рд╢рд┐рдХреНрд╖рдХ рдХреЛ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рджреБрдкрдЯреНрдЯрд╛ рдкрд╣рдиреЗ рджреЗрдЦрд╛ рдерд╛ред рджреБрдкрдЯреНрдЯреЗ рдкрд░ рд╕рд╛рдд-рдЦрдВрдб рд╕рдВрдХреЗрддрдХ рдФрд░ рдХрдИ рдПрд▓рдИрдбреА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рдереЗред рд╢рд┐рдХреНрд╖рдХ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдХреЛрдб рдореЗрдВ рдкрд╛рд░рдВрдЧрдд рдерд╛, рдЗрд╕ рдмреАрдЪ рджреБрдкрдЯреНрдЯрд╛ рдЙрд╕реЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рддреБрд░рдВрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдХрд┐ рд╡рд╣ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЙрд╕рд╕реЗ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╢реЙрд▓ рдХреЛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯреА рдЧреБрдЧрд▓реА рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдХ рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдЕрд░реБрдбрд┐рдиреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЦреБрдж рдХреЛ рдПрдХ Arduino рдореЗрдЧрд╛, Atmega1280 (рдХреЗрд╡рд▓ $ 29.99) рдХреЗ рд╕рд╛рде рдСрд░реНрдбрд░ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдореИрдВ рдХрд╝реАрдорддреА рдЦрд┐рд▓реМрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдСрдлрд┐рд╕ рддрдХ рджреМрдбрд╝рддрд╛ рд╣реВрдВред
рдХрд╣рд╛рдиреА
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ рд╢реМрдХреАрди рдЪрд╛рд╡рд▓рд╛ рд╡рд┐рдВрдбреЛрдЬ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ, рдЬреЛ VS рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЖрджреА рд╣реИ, рдореИрдВрдиреЗ рддреБрд░рдВрдд рджреЗрд╢реА Arduino IDE рд╕реЗ рдЦреБрдж рдХреЛ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рддреЛ рд╣рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИ:
- рджрд░рдЕрд╕рд▓, рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реА;
- рд╡рд┐рдЬреБрдЕрд▓ рдЕрд╕рд┐рд╕реНрдЯ рдПрдХреНрд╕ - рд╡реИрдХрд▓реНрдкрд┐рдХ, рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдмрд┐рд▓реНрдЯ-рдЗрди IntelliSense рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╡реА.рдПрд╕. рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рдЧреБрдЪреНрдЫрд╛ред рднреБрдЧрддрд╛рди;
- WinAVR рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред рдпрд╣ AVR "рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо" рдХреЗ рд▓рд┐рдП C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ;
- AVR-libcред AVR рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ C рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, _delay_ms рдпрд╛ _delay_us (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рджреЗрд░реА);
- Avrdudeред рд╡рд╛рдВрдЫрдиреАрдп рддрд╛рдЬрд╛ рд╕рдВрд╕реНрдХрд░рдг, AVR рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░;
- FTDI рд╡рд░реНрдЪреБрдЕрд▓ рдХреЙрдо рдкреЛрд░реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕ред рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдЗрд╕реЗ "рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рдЕрд░реБрдбреБрдЗрдиреЛ" рдХрд╣реЗрдВрдЧреЗ;
- AvrStudio - рд╡реИрдХрд▓реНрдкрд┐рдХред рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд░рдгрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
- Arduino рдпреЛрдЬрдирд╛рдмрджреНрдзред рдпрд╣ рдкреАрдбреАрдПрдл-рдлрд╛рдЗрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдПрдордХреЗ рдХреЗ рдХреМрди рд╕реЗ рдкреЛрд░реНрдЯ рдЕрд░рдбрд┐рдиреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред
рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдмрдХреБрдЫ рдЧреБрдЧреБрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред WinAVR, avr-libc, Avrdude рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╣рдо Arduino рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ "рдореЗрдХрдлрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ" рдмрдирд╛рдПрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВред
рдЬрд┐рд╕ рдЬрдЧрд╣ рдкрд░ WinAVR рдирдореВрдирд╛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣рд╛рдВ рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЦреБрдж рдХреЛ рдХреЙрдкреАрдлрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:
MCU = atmega1280
F_CPU = 16000000
FORMAT = ihex
TARGET = ATMEGA-1280-DEV-BOARD
SRC = $(TARGET).C
- рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред Arduino рдореЗрдЧрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ atmega1280 рд╣реИ;
- рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдПрдордХреЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛;
- рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╣реИред рдмреЗрд╣рддрд░ рдЫреБрдЯреНрдЯреА рдЗрдВрдЯреЗрд▓ рд╣реЗрдХреНрд╕;
- рдЪреМрдерд╛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд╣реИ;
- рдкрд╛рдВрдЪрд╡рд╛рдВ - рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред
PROGRAMMER_FLAGS = -p m1280 -c arduino -b 57600 -P COM3 -U flash:w:$(TARGET).hex
рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрд╡реНрд░реЗрдб рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- -P рд╡рд┐рдХрд▓реНрдк рдЙрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рд┐рд▓рд╛рдИ рдХрд░реЗрдВрдЧреЗ;
- -c рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред Arduino STK500 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдП рдЧрдП рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ stk500 рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрд░реНрдбреБрдбрд┐рдиреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд╡рд░реБрдб рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд╣рдо рдпрд╣рд╛рдВ рдЖрд░реНрдбрд┐рдиреЛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ;
- рдЕрдЧрд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЧрддрд┐ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╣рд╛рдВ 57600 рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
- -рдкреА рд╡рд┐рдХрд▓реНрдк рдЙрд╕ рдкреЛрд░реНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ;
- рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕рднреА рдЕрдиреБрднрд╛рдЧ рдмрджрд▓реЗрдВ:
all: build program
рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ "рдХрд╛рд░реНрдпрдХреНрд░рдо"ред рдпрд╣ рд╕рдлрд▓ рд╕рдВрдХрд▓рди рдкрд░, MK рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдПрдХ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд░рдо (рдмреНрд▓рд┐рдВрдХрд░ рдПрд▓рдИрдбреА рдПрд▓) рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдлрд╛рдЗрд▓ arduino-Mega-schematic.pdf рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Arduino рдХрд╛ 13 рд╡рд╛рдВ рдкреЛрд░реНрдЯ PB7 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRB = 0xFF;
while ( true )
{
PORTB |= (1 << 7);
_delay_ms(500);
PORTB &= ~(1 << 7);
_delay_ms(500);
}
return 0;
}
* This source code was highlighted with Source Code Highlighter .
рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
#include "utils.h"
class Port
{
public :
Port(PORT& p) : _p(p) {};
Port& operator ! ();
Port& operator += (uint8 b);
Port& operator -= (uint8 b);
Port& operator = (Port& p);
void SetLow();
void SetHigh();
PORT& GetValue();
bool ClearBit(uint8 b);
bool SetBit(uint8 b);
void Pulse(uint8 t);
void PulseBit(uint8 b, uint8 t);
private :
PORT& _p;
};
* This source code was highlighted with Source Code Highlighter .
Makefile рдХреЛ рд╕рд╣реЗрдЬреЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред
рдкреБрдирд╢реНрдЪ 10 рд╡реАрдВ рддрдХ, рдПрдХ рд╕реЗрдЯ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдВрд╕рд░ рдФрд░ рд╕реЗрдВрд╕рд░ рд╕реЗ рдорд┐рд▓рдХрд░ рдЖрдПрдЧрд╛ред рдлрд░рд╡рд░реА рддрдХ рдореИрдВ рдПрдХ рдЕрд▓реНрдЯреНрд░рд╛рд╕реЛрдирд┐рдХ рд░реЗрдВрдЬрдлрд╛рдЗрдВрдбрд░ рдФрд░ рдПрдХ рдлреЛрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд░ рдПрдХрддреНрд░ рдХрд░реВрдВрдЧрд╛ред