AVR studio в вопросах и ответах
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
ВитГо, дружище! Вам-то какая обида от меряния писюнами вышедерущихся? Как нравится, так и пишите. Любой язык тем и хорош(в том числе программирования), что изъяснятся можно всяко-разно. Даже акцент понятен.
Docendo discimus
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: AVR studio 4 в вопросах и ответах
Вообще ничего против скобок не имею, но обоснование применения:
просто в шок повергло.Мастер Ломастер писал(а):в Си не определен однозначно порядок вычисления равноприоритетных операций. поэтому я не надеюсь на весьма шаткий шанс, что выражение будет вычисляться слева направо и ставлю скобки - приоритет операции в скобках становится выше и можно быть уверенным, что она выполнится обязательно раньше, чем заскобочная.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
цитата из вашей ссылки:BerZerK-ku писал(а):вы учились программировать по внегласным правилам, это там сказано что надо всегда ляпать скобки чтобы все работало как задумано?
выделение - мое.Из этих рассуждений вытекает такая мораль: написание программ, зависящих от порядка вычислений, является плохим методом программирования на любом языке. Конечно, необходимо знать, чего следует избегать, но если вы не в курсе, как некоторые вещи реализованы на разных машинах, это неведение может предохранить вас от неприятностей.
выделенное мною предложение подтверждает правильность МОЕГО подхода: не надо думать о том, о чем думать не надо, надо заставлять компилятор без вариантов делать то, что желаешь. слева направо или справа налево будут вычисляться операции - я не знаю и знать не хочу: скобки в данном случае ОДНОЗНАЧНО заставят сделать то, что мне нужно, причем с НУЖНЫМ МНЕ результатом. а вы можете и далее засорять голову избыточными знаниями о ненужном.
при этом использование скобок не нарушает ни один канон/закон программирования - хоть писаный, хоть неписаный. возможно, вам интересно разбираться в порядке вычисления выражения типа a++ << --b == с ^ d ? e + 2 << f - g : 13 / s * g - а мне нет, я лучше в нем расставлю СКОБКИ и буду тихонечко отдыхать без перегрева мозга.
P.S. а программированию я не учился вообще - я родился с этим знанием
битва с дураками проиграна, победители торжествуют. слава победителям!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: AVR studio 4 в вопросах и ответах
Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем, пытаясь показать свои познания в языке
Только к этому еще надо бы добавить, что нагромождение скобок тоже ни к чему хорошему не приводит.
P.S. Приведите еще источник цитаты, хотелось бы понять о чем речь шла, т.к. вроде Си не является машинозависимым языком.
Только к этому еще надо бы добавить, что нагромождение скобок тоже ни к чему хорошему не приводит.
P.S. Приведите еще источник цитаты, хотелось бы понять о чем речь шла, т.к. вроде Си не является машинозависимым языком.
Последний раз редактировалось BerZerK-ku Пн янв 16, 2012 12:28:56, всего редактировалось 1 раз.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
BerZerK-ku писал(а):Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем
вы бы не приязывались, если бы были не вы - я тут совсем не при чем. сами-то вы лишь придираетесь к моему подходу, который не содержит ошибок, вынуждая меня давать какие-то пояснения... сами-то вы не дали ни какого ответа тому, кто задавл изначальный вопрос, уведя разговор снова в сферу "вашей крутости в Си". если помните - перчатка валяется у ваших ног
битва с дураками проиграна, победители торжествуют. слава победителям!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: AVR studio 4 в вопросах и ответах
Код: Выделить всё
PORTC = Dig[lvl*10/255];//LVL по любому придется double делать
PORTC = Dig[(lvl*10)/255];//LVL по любому НЕ придется double делатьВообще вопрос состоял в том, чем отличаются эти строки. Ответ ничем. А вот в дебри языка полезли как раз вы

А на счет ЛЖИ, дак ее и опровергал, или вы до сих пор утверждаете что в Си нет установленного порядка выполнения операторов?
Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
мне проще вас послать. утомили. все, что хотел, я ВАМ сказалBerZerK-ku писал(а):Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
битва с дураками проиграна, победители торжествуют. слава победителям!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: AVR studio 4 в вопросах и ответах
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
4-я Студия нормально ставится на семёрку?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Говорят пятая лучше бегает на семерке 64 бит.Все хочу поставить семерку попробовать.Руки не доходят.
А с четвертой проекты есть возможность привести к виду пятой студии.Правда комментарии теряются - студия с русским плохо дружит.
А с четвертой проекты есть возможность привести к виду пятой студии.Правда комментарии теряются - студия с русским плохо дружит.
В поисках истины человек развивается.
-
juzik
- Встал на лапы
- Сообщения: 128
- Зарегистрирован: Пт сен 23, 2011 23:49:20
- Откуда: Симферополь, Украина
Re: AVR studio 4 в вопросах и ответах
5 студия построена на Visual Studio 2010. А последней не существует 64 битной, только 32, поэтому без разницы какая платформа.
Re: AVR studio 4 в вопросах и ответах
Привет всем знатокам! Помогите разобраться плиз! Писал до этого в CVAVR, решил попробовать AVR Studio 5, установил его по инструкции. Для теста взял код из книги Ю.А. Шпака "Программиров на языке С для AVR и PIC" из страницы 149. Вот он:
А компилятор выдает следующее:
------ Build started: Project: AVRGCC1, Configuration: Debug AVR ------
Build started.
Project "AVRGCC1.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\AVR Studio 5.1\Vs\Compiler.targets" from project "G:\Temp\testavrstudio5\AVRGCC1\AVRGCC1\AVRGCC1.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
C:\Program Files\Atmel\AVR Studio 5.1\make\make.exe all
In file included from .././AVRGCC1.c:9:0:
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: In function 'Pause':
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,28): __builtin_avr_delay_cycles expects an integer constant.
AVRGCC1.c
Invoking: AVR/GNU C Compiler
"C:\Program Files\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "AVRGCC1.d" -MT"AVRGCC1.d" -mmcu=atmega32 -o"AVRGCC1.o" ".././AVRGCC1.c"
make: *** [AVRGCC1.o] Error 1
Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "AVRGCC1.cproj" -- FAILED.
Done building project "AVRGCC1.cproj" -- FAILED.
Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
А вот место на которое все указывает. В чем может быть проблема?
Код: Выделить всё
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void Pause(int ms)
{
PORTA=0xFF;
_delay_ms(ms);
}
void P (void)
{
PORTA=0;
_delay_ms(500);
Pause(500);
}
void D(void)
{
PORTA=0;
_delay_ms(1000);
Pause(500);
}
int main(void)
{
DDRD=0xFF; //порт на выход
while(1)
{
P(); P(); P(); D(); D(); D(); P(); P(); P();
Pause(1000);
}
}А компилятор выдает следующее:
------ Build started: Project: AVRGCC1, Configuration: Debug AVR ------
Build started.
Project "AVRGCC1.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\AVR Studio 5.1\Vs\Compiler.targets" from project "G:\Temp\testavrstudio5\AVRGCC1\AVRGCC1\AVRGCC1.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
C:\Program Files\Atmel\AVR Studio 5.1\make\make.exe all
In file included from .././AVRGCC1.c:9:0:
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: In function 'Pause':
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,28): __builtin_avr_delay_cycles expects an integer constant.
AVRGCC1.c
Invoking: AVR/GNU C Compiler
"C:\Program Files\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "AVRGCC1.d" -MT"AVRGCC1.d" -mmcu=atmega32 -o"AVRGCC1.o" ".././AVRGCC1.c"
make: *** [AVRGCC1.o] Error 1
Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "AVRGCC1.cproj" -- FAILED.
Done building project "AVRGCC1.cproj" -- FAILED.
Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
А вот место на которое все указывает. В чем может быть проблема?
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Вы бы еще лог установки скопировали 
Лучше копируйте из вкладки WARNINGS или ERRORS
у меня ваш код компилируется в пятой версии, только пишет
В четвертой как у вас,но можно прописать
Если точность не важна и будет работать
Вообще если копать глубже
Функция __builtin_avr_delay_cycles требует целую константу.
Я еще не разобрался как с этим бороться.
Вроде по умолчанию должно все и так работать,но почему то глюки непонятные.
Пихает double вместо unsigned long.
Лучше копируйте из вкладки WARNINGS или ERRORS
у меня ваш код компилируется в пятой версии, только пишет
Код: Выделить всё
#warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
В четвертой как у вас,но можно прописать
Код: Выделить всё
#undef __OPTIMIZE__ Если точность не важна и будет работать
Вообще если копать глубже
__builtin_avr_delay_cycles expects an integer constant.
Функция __builtin_avr_delay_cycles требует целую константу.
Я еще не разобрался как с этим бороться.
Вроде по умолчанию должно все и так работать,но почему то глюки непонятные.
Пихает double вместо unsigned long.
В поисках истины человек развивается.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
не знаю, как в пятой версии, а WinAVR обычная именно double в качестве параметра _delay_ms() и _delay_us() требует со всеми вытекающими последствиями (подключение плавучки и т.п.) поэтому и требуются константы - тогда все вычисления делаются компилятром при компиляции и остается только сухой остаток. ПЕРЕМЕННЫЕ в качестве параметра задержек НЕДОПУСТИМЫНЕПРИЕМЛЕМЫ!
битва с дураками проиграна, победители торжествуют. слава победителям!
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
А что вы скажете на это?
Вроде никто переменные не пихает, а все равно на работает.
Где правда?
Код: Выделить всё
void
_delay_ms(double __ms)
{
uint16_t __ticks;
double __tmp = ((F_CPU) / 4e3) * __ms;
#if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__)
extern void __builtin_avr_delay_cycles(unsigned long);//Где тут double?
__builtin_avr_delay_cycles(__tmp); Вроде никто переменные не пихает, а все равно на работает.
Код: Выделить всё
#if __HAS_DELAY_CYCLES || defined(__DOXYGEN__)
/**
\ingroup avr_builtins
Emits a sequence of instructions causing the CPU to spend
\c __n cycles on it. */
extern void __builtin_avr_delay_cycles(unsigned long __n);
#endif Где правда?
В поисках истины человек развивается.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
не путайте __builtin_avr_delay_cycles(__tmp), которую по идее вы и видеть никогда не должны с _delay_ms(). при отключенной оптимизации задержки несоответствуют заданным значениям. при использовании переменных задержки не только не соответствуют заданным (и при оптимизации в том числе), так еще и размер кода почти на килобайт разрастается. а вот при использовании констант и оптимизации все отлично работает, ни варнингов, ни ошибок.
выводы делайте сами.
P.S. с двойного подчеркивания начинаются функции, которые считаются внутренними и не должны использоваться программистом в явном виде.
выводы делайте сами.
P.S. с двойного подчеркивания начинаются функции, которые считаются внутренними и не должны использоваться программистом в явном виде.
битва с дураками проиграна, победители торжествуют. слава победителям!
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Так вот я и смотрю что не нравится компилятору в Собственной же библиотеке.Ведь при включенной оптимизации,при заданных константах не работает...
Как правильно запустить?
Константы он ведь сам такие же предлагает.
Вот пример из библиотеки
Как правильно запустить?
Константы он ведь сам такие же предлагает.
Вот пример из библиотеки
Код: Выделить всё
//defgroup util_delay <util/delay.h>: Convenience functions for busy-wait delay loops
#define F_CPU 1000000UL // 1 MHz
//#define F_CPU 14.7456E6
#include <util/delay.h>
Последний раз редактировалось vitalik_1984 Пн мар 12, 2012 20:47:50, всего редактировалось 1 раз.
В поисках истины человек развивается.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
а почему я ни разу в жизни в эти библиотеки не залазил - и у меня всегда все работает?! может. в консерватории что-то не так?
битва с дураками проиграна, победители торжествуют. слава победителям!
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Ну вот вы как например полную оптимизацию включаете?
Я понимаю что у вас все от роду все правильно получается, так вот вы нам подскажите как же так?
Зачем компилятор нас на эти строки отсылает?
Я понимаю что у вас все от роду все правильно получается, так вот вы нам подскажите как же так?
Зачем компилятор нас на эти строки отсылает?
В поисках истины человек развивается.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
vitalik_1984 писал(а):Ну вот вы как например полную оптимизацию включаете?
Я понимаю что у вас все от роду все правильно получается, так вот вы нам подскажите как же так?
Зачем компилятор нас на эти строки отсылает?
я влючаю оптимизацию, задавая опцию -Os в параметрах проекта AVR Studio. ваш код я чуть модифицировал, чтобы удобнее было сравнивать результаты:
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
#define PAUSE_AS_FUNC 0
#if PAUSE_AS_FUNC
void Pause(int ms){
PORTA=0xFF;
_delay_ms(ms);
}
#else
#define Pause(x) PORTA = 0xFF; _delay_ms(x);
#endif
void P (void){
PORTA=0;
_delay_ms(500);
Pause(500);
}
void D(void){
PORTA=0;
_delay_ms(1000);
Pause(500);
}
int main(void){
DDRD=0xFF; //ïîðò íà âûõîä
while(1)
{
P(); P(); P(); D(); D(); D(); P(); P(); P();
Pause(1000);
}
}
Program: 3878 bytes (11.8% Full)
результат компиляции для случая PAUSE_AS_FUNC == 0:
Program: 270 bytes (0.8% Full)
никакой иной разницы (0 errors 0 warnings) нет
что еще проверить? я готов
P.S. автора ТАКОГО примера убить мало - если так начинающих учить, то из них получатся конченные кодеры
битва с дураками проиграна, победители торжествуют. слава победителям!