я хочу научиться понимать прошивку и сам писать ее для разных девайсов. кому не трудно подскажите что надо заменить и добавить в этой прошивке чтобы она подходила для моего девайса?
Code
#include <avr/io.h>//Подключаем библиотеку ввода/вывода
#define nop() {asm("nop");}//подключаем функция для формирваония задержки
void right (void);//Прототип функции поворота ротора ШД вправо
void left (void);//Прототип поворота влево
int x, j, m=100; //переменные
//Функция задержки
void delay(int t)
{
for (x=0; x<t ;x++)
nop ();
}
//Функция задержки
void delay(int t)
{
for (x=0; x<t ;x++)
nop ();
}
//Функция длинной задержки
void long_delay(int p)
{
for (j=0; j<p; j++)
{
delay(300);
}
}
//Функция поворота ротора вправо
void right (void)
{
PORTD = 0b10001000;//обмотка A
long_delay(m);
PORTD = 0b01000100;//обмотка B
long_delay(m);
PORTD = 0b00100010;//обмотка C
long_delay(m);
PORTD = 0b00010001;//обмотка D
long_delay(m);
}
//Функция поворота ротора влево
void left(void)
{
PORTD = 0b00010001;
long_delay(m);
PORTD = 0b00100010;
long_delay(m);
PORTD = 0b01000100;
long_delay(m);
PORTD = 0b10001000;
long_delay(m);
}
//Главная функция
int main(void)
{
DDRD = 0xFF;//Конфигурирования порта на выход
PORTD = 0x00;//Отключаем подтягивающие резисторы порта
while(1)//вечный цикл
{
left();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
left();
right();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
right();
}
}
Раде эксперимента, советую попробовать поставить следующий код в самом конце программы:
Code
m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"
right();
///////////////////////////////////////////////
m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"
///////////////////////////////////////////////
}
}
Есть же тег code, почему не используем?