delay_us переменная

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

delay_us переменная

Сообщение Disha » 17 июн 2015, 17:52

Подскажите плз. CV_AVR код
Код: Выделить всё
unsigned char cw_dir[6]= {

0b00010110,
0b00100110,
0b00100101,
0b00101001,
0b00011001,
0b00011010,
};

unsigned char step_index;
unsigned char step_time = 10;
.....

.....
while (1)
      {
      step_time = 10;     
      for (step_index = 0; step_index <6;step_index++)
        {               
      PORTD = 0b00000000; //Закрыли все ключи
      delay_us(1); // Death time (1 us) (не может быть переменной, только число)
      PORTD = cw_dir[step_index]; //Открыли НУЖНЫЕ ключи

ДАЛЕЕ ВОПРОС:
Вот это работает       delay_ms(step_time); //Время включения катушки (10 ms)   

А хочу заменить на это
      //while (step_time > 1)
      //{           
      //delay_us(1000);
      //step_time--;
      //}
НЕ РАБОТАЕТ!!!!
        }               
       
      };


Как еще можно delay_us сделать с переменным аргументом?? Как использовать МИКРОсекунды без таймера??
Disha
 
Сообщения: 13
Зарегистрирован: 21 мар 2014, 17:39
Откуда: Київ

Re: delay_us переменная

Сообщение Angel71 » 17 июн 2015, 18:18

ф-ю с константой сделать с переменной легко - просто берёте и переписываете. можно не прикалываться, а запихать вызов в цикл. не нравятся таймер-счётчики, ну можете поизвращаться. каждая команда выполняется определённое количество тактов. зная частоту, вычисляете сколько итераций цикла нужно сделать. а что в него запихать уже ваше дело, хоть один или несколько нопов, хоть пустой цикл.
вообще-то есть максимумы для задержек, если так интересно, смотрите исходники. например где и почему там переполнение. есть ли реализация проверки максимума и вызовова dalayms. не интересно вникать, так и не страдайте фигнёй. 10мс это или один вызов delayms(10) или десять delayms(1). нужен меньший шаг, так добавьте ещё вызов других задержек.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13