_delay_ms(t) в AtmelStudio не воспринимает переменную t
- Войдите на сайт для отправки комментариев
Сб, 19/06/2021 - 22:27
Попытался скомпилировать вот этот код для Atmega328 в AtmelStudio v.7
#include <avr/io.h> #define F_CPU 8000000UL #include <util/delay.h> int main(void){ DDRC |= 1>>0; PORTC &= ~(1>>0); while (1) { PORTC |= (1>>0); for(uint8_t t=0;t<200;t++){ _delay_ms(t); } PORTC &= ~(1>>0); _delay_ms(200); } }
Выдает ошибку: ожидает целочисленную константу
Если не использовать переменную , то естественно все компилируется.
Кто подскажет,как заставить _delay_ms(t) работать от переменной?
Никак. Этот макрос не принимает переменную, ты сам сказал.
Я так понимаю, это не работает только в AtmelStudio?
Проверь голову, у тебя с ней что-то не в порядке.
Проверил, все в порядке, что дальше?
А для IDE это не является ошибкой.
попробуй объявить ее как глобальной переменной
попробуй объявить ее как глобальной переменной
Не прокатывает Ни локальной ,ни глобальной.
попробуй объявить ее как глобальной переменной
Не прокатывает Ни локальной ,ни глобальной.
А самому макрос написать ? Не? Можно и не макрос а функцию с тем же функционалом. Там ж, небойсь , волатильная переменная декрементится ?
Тогда глаза проверь. У тебя delay написано, а не _delay_ms.
Проверил, все в порядке, что дальше?
Что ты проверил? Где тут _delay_ms() ?
Я так понимаю, это не работает только в AtmelStudio?
Это не работает НИГДЕ.
В отличии от delay(), для _delay_ms() нужно указывать заранее определённое число, т.к. задержка рассчитывается при компиляции. Нельзя туда подставлять переменную.
как заставить _delay_ms(t) работать от переменной?
Увы, никак.
ТС, ты зачем Атмелстудию выбрал? Покрасоваться?
Раз не можешь свою функцию delay() на С написать, программируй в Ардуино Иде, не выпендривайся :)
Раз не можешь свою функцию delay() на С написать, программируй в Ардуино Иде, не выпендривайся :)
Ну вообще то, позже, функцию задержки свою прописал. Просто пришлось столкнуться с кодом в AtmelStudio. Раньше, плотно, не писал в этой проге. Вот и решил спросить у коллег.
Я так понимаю, это не работает только в AtmelStudio?
Это не работает НИГДЕ.
В отличии от delay(), для _delay_ms() нужно указывать заранее определённое число, т.к. задержка рассчитывается при компиляции. Нельзя туда подставлять переменную.
как заставить _delay_ms(t) работать от переменной?
Увы, никак.
Спасибо, а то были какие то сомнения.