Написав программу вы не сможете просто так загрузить её в микроконтроллер, для этого надо её откомпилировать. Для компиляции я использую WinAVRи с радостью научу вас им пользоваться!
Для начала нужно создать файл MakeFile, он задаёт сценарий программе. Для этого запускаем программу, входящую в состав WinAVR, MFile.
У нас вылезет вот такое окошко:
Затем нажимаем то, что показано на картинке и выбираем имя файла с прошивкой. Я выбрал просто одну латинскую букву «A» и вам советую т. К. в дальнейшем будем использовать именно это имя!
Затем выбираем микроконтроллер, который вы используете.
Затем делаем следующее:
Затем спускаемся немножко ниже и выбираем программатор, которым вы будете прошивать микроконтроллер (если вы используете программатор ”пять проводков” то следует указать "stk200”).
Затем выбираем порт, который использует программатор (stk200 использует порт ltp)
Закончив создание makeFileего нужно сохранить, весь проект должен находиться в одной папке и на одном жестком диске с компилятором.
Теперь закрываем программу и открываем утилиту Programmers Notepad
Вставляем в окошечко посередине свою программу (я вставил программу из статьи "первый проект на микроконтроллере”) и выберем из списка язык программы, в нашем случае C/C++
Потом сохраняем программу в папку с созданным ранее файлом makeFile в расширении *.cи с именем, указанном в makeFileкак показано на рисунке:
Затем финишная прямая! Начинаем компилировать программу:
Если всё прошло правильно то вы увидите вот это:
А в папке с проектом появятся следующие файлы:
Самым главным из них будет являться .hex файл, его и следует загружать в микроконтроллер, но для WinAvr также важен файл MakeFile, он как я ранее говорил служит сценарием для программы не только при компиляции, но и при прошивке!
/* * motors1: for for the Orangutan LV, SV, SVP, X2, Baby-O and 3pi robot. * * This example uses the OrangutanMotors functions to drive * motors in response to the position of user trimmer potentiometer * and blinks the red user LED at a rate determined by the trimmer * potentiometer position. It uses the OrangutanAnalog library to measure * the trimpot position, and it uses the OrangutanLEDs library to provide * limited feedback with the red user LED. * * http://www.pololu.com/docs/0J20 * http://www.pololu.com * http://forum.pololu.com */
unsigned long prevMillis = 0;
int main() { while(1) { // note that the following line could also be accomplished with: // int pot = analogRead(7); int pot = read_trimpot(); // determine the trimpot position int motorSpeed = pot/2-500; // turn pot reading into number between -256 and 255 if(motorSpeed == 500) motorSpeed = 500; // 256 is out of range set_motors(motorSpeed, motorSpeed);
int ledDelay = motorSpeed; if(ledDelay < 0) ledDelay = -ledDelay; // make the delay a non-negative number ledDelay =100-ledDelay; // the delay should be short when the speed is high
red_led(1); // turn red LED on delay_ms(ledDelay);
red_led(0); // turn red LED off delay_ms(ledDelay); } } вот сам код,брал его из примеров,он рабочий,я хотел сделать все с нуля как на примере!
По поводу задержки, не загружена библиотека delay.h, вызвать её так #include <util/delay.h> Если последние две ошибки пропадут нужно искать причину других, удачи!