рд╣рдо рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдмрдВрдЯреВ / рдбреЗрдмрд┐рдпрди рдкрд░ рдкреЛрд▓реЛрд▓реБ 3pi рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рддреЗ рд╣реИрдВ

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



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



рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ: "рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦреЗрдВ"ред рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд▓рд┐рдирдХреНрд╕ рдЙрдмрдВрдЯреВ рдкрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ www.pololu.com , рд╡рд┐рджреЗрд╢реА рдордВрдЪреЛрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред

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

рд╣рдо рд╕реА рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдк рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдпреБрдХреНрдд рд╕рдВрдХрд▓рдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдВрдкрд╛рдЗрд▓рд░, рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХреЛ тАЬsudo apt-get installтАЭ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:



gcc-avr - AVR рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рд╕рдВрдХрд▓рдХ, рдпрджрд┐ рдЖрдк C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рд╕рдВрдХрд▓рдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛;

avr-libs - AVR рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реА рдХреЗ рд▓рд┐рдП;

avra - рдХреЛрдбрд╛рдВрддрд░рдХ, рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AVR-GCC рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ;

binutils-avr - рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ;

avrdude рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдХрдЯреНрдареЗ рдмрд╛рдЗрдирд░реА рд╣реЗрдХреНрд╕-рдлрд╛рдЗрд▓ рдХреЛ AVR рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред



рдпреЗ рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ рдЬреЛ AVR рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдмрд╛рдЗрдирд░реА рд╣реЗрдХреНрд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрд╣ рд▓рд╛рд▓ рдкреЛрд▓реЛрд▓реБ 3 рдкреАрдЖрдИ рдПрд▓рдИрдбреА рдкрд░ рдФрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ www.pololu.com рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ ATMega328P рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред



#define F_CPU 20000000UL // Baby Orangutan frequency (20MHz)

#include

#include

void delayms( uint16_t millis ) {

while ( millis ) {

_delay_ms( 1 );

millis--;

}

}



int main( void ) {

DDRD |= 1 << DDD1; // set LED pin PD1 to output

while ( 1 ) {

PORTD &= ~( 1 << PORTD1 ); // LED off

delayms( 900 ); // delay 900 ms

PORTD |= 1 << PORTD1; // LED on

delayms( 100 ); // delay 100 ms

}

return 0;

}







рдЗрд╕ рдХреЛрдб рдХреЛ BlinkLed.c рдлрд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди "* .c" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ C. рдореЗрдВ рд▓рд┐рдЦреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣реИред рдЕрдм рд╣рдо рдлрд╛рдЗрд▓ рдХреЛ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдлрд╛рдЗрд▓ BlinkLed.c рдХреЗ рд╕рд╛рде рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:



$ avr-gcc -g -Wall -mcall-prologues -mmcu=atmega328p -Os -c -o BlinkLed.o BlinkLed.c







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



$ avr-gcc -g -Wall -mcall-prologues -mmcu=atmega328p -Os BlinkLed.o -Wl,-gc-sections -lpololu_atmega328p -Wl,-relax -o BlinkLed.obj

$ avr-objcopy -R .eeprom -O ihex BlinkLed.obj BlinkLed.hex







BlinkLed.hex рдлрд╝рд╛рдЗрд▓ ATMega328P рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА, рдЬрд┐рд╕реЗ рдЕрдм рдЗрд╕рдореЗрдВ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ / dev рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдвреВрдВрдврдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 2 рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП: / dev / ttyACM0 рдФрд░ / dev / ttyACM1ред рдЕрдм рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдмреИрдЯрд░реА рдХреЛ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд┐ рддрдХ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП):

$ avrdude -c avrispv2 -p m328p -P /dev/ttyACM0 -e



.

avrdude: AVR device initialized and ready to accept instructions

Reading | |||||||||||||||||||||||||||||||||||||||||||||| | 100% 0.01s

avrdude: Device signature = 0x1e654f

avrdude: erasing chip

avrdude: safemode: Fuses OK

avrdude done. Thank you.







рдпрджрд┐ рдЖрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬрд╡рд╛рдм рджреЗрдЦрд╛, рддреЛ рдХрдиреЗрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЕрдм рдЖрдк рд╣рдорд╛рд░реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



$ avrdude -p m328p -c avrisp2 -P /dev/ttyACM0 -U flash:w:BlinkLed.hex







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

рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ C рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдХреИрд╕реЗ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЕрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреЛрд▓реЛрд▓реВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реЛрдмреЛрдЯ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ www.pololu.com рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдкреБрд╕реНрддрдХрд╛рд▓рдп www.pololu.com/docs/0J20/3 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред



$ wget www.pololu.com/file/download/libpololu-avr-100607.zip?file_id=0J381







рдирд┐рдХрд╛рд▓реЗрдВ:



$ unzip libpololu-avr-yymmdd.zip, ┬лyymmdd┬╗ .







рд╣рдо рдЕрдирдкреИрдХреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдореЗрдХ" рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдпрд╣ рдбрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдЖрд╢реНрдЪрд░реНрдп рдиреЗ рдореБрдЭреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ "рдореЗрдХрдлрд╛рдЗрд▓" рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, 2 рд▓рд╛рдЗрдиреЗрдВ рдвреВрдВрдвреЗрдВ:



# LIB := /usr/lib/avr/lib

# INCLUDE_POLOLU := /usr/lib/avr/include







рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдирд╕реБрдирд╛ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдмрджрд▓ рджреЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "sudo make install" рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред * .A рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ "/ usr / lib / avr / рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" / usr / lib / avr / lib "рдФрд░" popolu / *ред H "рд╢реАрд░реНрд╖рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред

рддрдм рдПрдХ рджреВрд╕рд░рд╛ рдЖрд╢реНрдЪрд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "NCLUDE_POLOLU" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ "/ usr / lib / avr / рд╢рд╛рдорд┐рд▓" рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЦреЛрдЬреЗ рдЧрдП рд╣реИрдВ "usr / lib / avr / / pololu"ред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ "/ usr / lib / avr / рд╢рд╛рдорд┐рд▓ / pololu" рдмрдирд╛рдХрд░ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "pololu / * H" рдХреЙрдкреА рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА рдЧрдИ рдереАред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдкреЛрд▓реЛрд▓реВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓рд╛рдЗрди "#include <pololu / 3pi.h>" рд▓рд┐рдЦрдХрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдиреАрдЪреЗ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рд░рдЦрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ "MyRobot.c" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рдХрдо рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:



#include <pololu/3pi.h> // Pololu

#include <stdlib.h> //

int main()

{

print("Hello :)"); //

lcd_goto_xy(0,1); //

int val;

while(1)

{

green_led(0); //

red_led(0); //

val = random()%3; // {0,1,2}

if(val == 0) {

green_led(1); //

red_led(1); //

}

delay_ms(1000); // 1

}

}







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



 DEVICE = atmega328p
 AVRDUDE_DEVICE = m328p
 CFLAGS = -g -all -mcall-prologues -mmcu = $ (DEVICE) -O
 CC = avr-gcc
 OBJ2HEX = avr-objcopy 
 LDFLAGS = -Wl, -gc-section -lpololu _ $ (DEVICE) -Wl -relax
 рдкреЛрд░реНрдЯ = / рджреЗрд╡ / ttyACM0
 AVRDUDE = avrdude
 TARGET = MyRobot
 рд╕рднреА: $ (TARGET) .hex
 рд╕рд╛рдл:
	 rm -f * .o * .hex * .obj * .hex
 % .hex:% .obj
	 $ (OBJ2HEX) -R .Prom -O ihex $ <$ @
 % .obj:% .o
	 $ (CC) $ (CFLAGS) $ <$ (LDFLAGS) -o $ @
 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: $ (TARGET) .hex
 	 $ (AVRDUDE) -p $ (AVRDUDE_DEVICE) -c avrisp2 -P $ (PORT) -U рдлрд╝реНрд▓реИрд╢: w: $ (TARGET) .hex




рдЕрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдорд╛рдВрдб "рдореЗрдХ" рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдЗрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд╢рдГ "рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ"ред

рд╕рдордп рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдирдкреИрдХреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреЗ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╕реА рд╕реЛрд░реНрд╕ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреАрдИ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕реА / рд╕реА ++ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдиреЗрдЯрдмреАрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдореЗрдВ рдЧрд▓рддрд┐рдпрд╛рдБ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдБрдЧрд╛ред



All Articles