| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Atmel AVR Studio 5
12.03.2012, 14:12
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от wellcom
|
|
Код:
|
void Pause(int ms)
{
PORTA=0xFF;
_delay_ms(ms);
} |
|
А если попробовать выдержать типы данных для функции _delay_ms ?
|
Код:
|
void Pause(double ms)
{
..... |
так как в библиотеке определено:
|
Код:
|
_delay_ms(double _ms)
{
….. |
Мобыть компилер спотыкается об несоответствие типов данных, передаваемых в библиотечную функцию?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
12.03.2012, 15:01
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Atmel AVR Studio 5
все равно матюгается таким же образом!
c:\program files\atmel\avr studio 5.1\extensions\atmel\avrgcc\3.3.1.27\avrtoolchain\ bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(152,2  : __builtin_avr_delay_cycles expects an integer constant.
make: *** [AVRGCC1.o] Error 1
|
|
|
|
12.03.2012, 16:37
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от wellcom
|
все равно матюгается таким же образом!
c:\program files\atmel\avr studio 5.1\extensions\atmel\avrgcc\3.3.1.27\avrtoolchain\ bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(152,2 : __builtin_avr_delay_cycles expects an integer constant.
make: *** [AVRGCC1.o] Error 1
|
Странно. С ума сошла старушка. Никто ведь не подсовывает ей float...
Потому я и не люблю библиотеки CV..
Попробуйте вызвать _delay_ms из главного модуля, сохранится ли ошибка...
зы Вижу, Вы уже на Кота кросспостинг сделали... 
Попробуйте в вашей паузе сделать явное приведение типа переменной:
_delay_ms((int)ms);
Или вот так:
void Pause(int ms){
int m = ms;
PORTA=0xFF;
_delay_ms(m);
}
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 12.03.2012 в 16:49.
|
|
|
|
12.03.2012, 16:46
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от ut1wpr
|
Странно. С ума сошла старушка. Никто ведь не подсовывает ей float...
Потому я и не люблю библиотеки CV..
Попробуйте вызвать _delay_ms из главного модуля, сохранится ли ошибка...
|
Дело в том, что эта библиотека ставилась вместе с AVR Studio 5 (или с WinAVR), но никак не относиться к CVAVR.
Убрав ф-цию Pause - компилиться нормально. Может какие настройки где то нада подправить?
|
|
|
|
12.03.2012, 16:51
|
|
|
Заблокирован
Регистрация: 14.09.2009
Сообщений: 1,252
Сказал спасибо: 49
Сказали Спасибо 520 раз(а) в 317 сообщении(ях)
|
Re: Atmel AVR Studio 5
Переведите сами: expects an integer constant.
|
|
|
|
12.03.2012, 16:56
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от Саня
|
|
Переведите сами: expects an integer constant.
|
я это переводил перед тем как писать на форуме, в том то и дело, что ожидается целая константа типа int, так я скармливаю числа типа int...
void Pause(int ms)
{
PORTA=0xFF;
_delay_ms(ms);
}
если убрать передачу в параметр ф-ции, то все работает нормально....но почему он тогда не передается или передается не правильно????
Последний раз редактировалось wellcom; 12.03.2012 в 16:59.
|
|
|
|
12.03.2012, 16:58
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от Саня
|
|
Переведите сами: expects an integer constant.
|
Вот и я о том же..  Ожидает целочисленную константу, а ему подсовывают переменную с неопределенным типом. Наличие определения типа в заголовке функции служит лишь для проверки на соотвествие при компиляции, фактически тип переменной ms в теле функции нигде не объявлен, а мы ее передаем другой функции.. Потому и попросил человека сделать кастинг.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
12.03.2012, 17:32
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Atmel AVR Studio 5
void Pause(int ms)
{
PORTA=0xFF;
while(ms--){_delay_ms(1)};
}
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо kison за это сообщение:
|
|
|
12.03.2012, 17:58
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от kison
|
void Pause(int ms)
{
PORTA=0xFF;
while(ms--){_delay_ms(1)};
}
|
Такой подход заработал. Но это дополнительные телодвижения, которых по идее не должно быть так как на проверку в цикле тоже тратиться время. В любом случае спасибо.
Последний раз редактировалось wellcom; 12.03.2012 в 18:02.
|
|
|
|
12.03.2012, 18:07
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Atmel AVR Studio 5
Сообщение от wellcom
|
|
Такой подход заработал. Но это дополнительные телодвижения, которых по идее не должно быть так как на проверку в цикле тоже тратиться время. В любом случае спасибо.
|
Ну сделайте while(ms--){_delay_ms(0.999)}; Можно подобрать точно.
В любом случае аргумент _delay_ms должен быть константой известной на этапе компиляции. Переменная не годится - задержка формируется из цикла. Количество проходов по нему надо либо считать, либо знать заранее. Если считать, то время расчета тоже приплюсуется к задержке.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:17.
|
|