Страница 47 из 160
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 10:22:22
pyzhman
ВитГо, дружище! Вам-то какая обида от меряния писюнами вышедерущихся? Как нравится, так и пишите. Любой язык тем и хорош(в том числе программирования), что изъяснятся можно всяко-разно. Даже акцент понятен.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 10:35:44
BerZerK-ku
Вообще ничего против скобок не имею, но обоснование применения:
Мастер Ломастер писал(а):в Си не определен однозначно порядок вычисления равноприоритетных операций. поэтому я не надеюсь на весьма шаткий шанс, что выражение будет вычисляться слева направо и ставлю скобки - приоритет операции в скобках становится выше и можно быть уверенным, что она выполнится обязательно раньше, чем заскобочная.
просто в шок повергло.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:03:50
Мастер Ломастер
BerZerK-ku писал(а):вы учились программировать по внегласным правилам, это там сказано что надо всегда ляпать скобки чтобы все работало как задумано?
цитата из вашей ссылки:
Из этих рассуждений вытекает такая мораль: написание программ, зависящих от порядка вычислений, является плохим методом программирования на любом языке. Конечно, необходимо знать, чего следует избегать, но если вы не в курсе, как некоторые вещи реализованы на разных машинах, это неведение может предохранить вас от неприятностей.
выделение - мое.
выделенное мною предложение подтверждает правильность МОЕГО подхода: не надо думать о том, о чем думать не надо, надо заставлять компилятор без вариантов делать то, что желаешь. слева направо или справа налево будут вычисляться операции - я не знаю и знать не хочу: скобки в данном случае ОДНОЗНАЧНО заставят сделать то, что мне нужно, причем с НУЖНЫМ МНЕ результатом. а вы можете и далее засорять голову избыточными знаниями о ненужном.
при этом использование скобок не нарушает ни один канон/закон программирования - хоть писаный, хоть неписаный. возможно, вам интересно разбираться в порядке вычисления выражения типа
a++ << --b == с ^ d ? e + 2 << f - g : 13 / s * g - а мне нет, я лучше в нем расставлю СКОБКИ и буду тихонечко отдыхать без перегрева мозга.
P.S. а программированию я не учился вообще - я родился с этим знанием

Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:22:27
BerZerK-ku
Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем, пытаясь показать свои познания в языке
Только к этому еще надо бы добавить, что нагромождение скобок тоже ни к чему хорошему не приводит.
P.S. Приведите еще источник цитаты, хотелось бы понять о чем речь шла, т.к. вроде Си не является машинозависимым языком.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:26:56
Мастер Ломастер
BerZerK-ku писал(а):Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем

вы бы не приязывались, если бы были не вы - я тут совсем не при чем. сами-то вы лишь придираетесь к моему подходу, который не содержит ошибок, вынуждая меня давать какие-то пояснения... сами-то вы не дали ни какого ответа тому, кто задавл изначальный вопрос, уведя разговор снова в сферу "вашей крутости в Си". если помните - перчатка валяется у ваших ног

а пока ее не подняли -
не уводите впредь разговоры в сторону от реальной обсуждаемой темы. если в моих словах есть ЛОЖЬ - милости прошу опровергать, а придирки оставьте для своей бабушки
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:30:39
BerZerK-ku
Код: Выделить всё
PORTC = Dig[lvl*10/255];//LVL по любому придется double делать
PORTC = Dig[(lvl*10)/255];//LVL по любому НЕ придется double делать
Вообще вопрос состоял в том, чем отличаются эти строки. Ответ ничем. А вот в дебри языка полезли как раз вы

А на счет ЛЖИ, дак ее и опровергал, или вы до сих пор утверждаете что в Си нет установленного порядка выполнения операторов?
Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:40:15
Мастер Ломастер
BerZerK-ku писал(а):Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
мне проще вас послать. утомили. все, что хотел, я ВАМ сказал
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн янв 16, 2012 12:45:26
BerZerK-ku

фига я болван, сам же свои ссылки не читаю. Нашел откуда и нашел по какому поводу циатата, к сожалению от этого и скобки не застрахуют.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вт мар 06, 2012 12:44:01
Gudd-Head
4-я Студия нормально ставится на семёрку?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вт мар 06, 2012 13:09:43
vitalik_1984
Говорят пятая лучше бегает на семерке 64 бит.Все хочу поставить семерку попробовать.Руки не доходят.
А с четвертой проекты есть возможность привести к виду пятой студии.Правда комментарии теряются - студия с русским плохо дружит.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вт мар 06, 2012 23:56:29
juzik
5 студия построена на Visual Studio 2010. А последней не существует 64 битной, только 32, поэтому без разницы какая платформа.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 10:56:18
wellcom
Привет всем знатокам! Помогите разобраться плиз! Писал до этого в CVAVR, решил попробовать AVR Studio 5, установил его по инструкции. Для теста взял код из книги Ю.А. Шпака "Программиров на языке С для AVR и PIC" из страницы 149. Вот он:
Код: Выделить всё
#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 ==========
А вот место на которое все указывает. В чем может быть проблема?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 19:33:00
vitalik_1984
Вы бы еще лог установки скопировали

Лучше копируйте из вкладки WARNINGS или ERRORS
у меня ваш код компилируется в пятой версии, только пишет
Код: Выделить всё
#warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
В четвертой как у вас,но можно прописать
Если точность не важна и будет работать
Вообще если копать глубже
__builtin_avr_delay_cycles expects an integer constant.
Функция __builtin_avr_delay_cycles требует целую константу.
Я еще не разобрался как с этим бороться.
Вроде по умолчанию должно все и так работать,но почему то глюки непонятные.
Пихает double вместо unsigned long.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:13:16
Мастер Ломастер
не знаю, как в пятой версии, а WinAVR обычная именно double в качестве параметра _delay_ms() и _delay_us() требует со всеми вытекающими последствиями (подключение плавучки и т.п.) поэтому и требуются константы - тогда все вычисления делаются компилятром при компиляции и остается только сухой остаток. ПЕРЕМЕННЫЕ в качестве параметра задержек НЕДОПУСТИМЫНЕПРИЕМЛЕМЫ!
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:22:36
vitalik_1984
А что вы скажете на это?
Код: Выделить всё
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
Где правда?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:33:57
Мастер Ломастер
не путайте __builtin_avr_delay_cycles(__tmp), которую по идее вы и видеть никогда не должны с _delay_ms(). при отключенной оптимизации задержки несоответствуют заданным значениям. при использовании переменных задержки не только не соответствуют заданным (и при оптимизации в том числе), так еще и размер кода почти на килобайт разрастается. а вот при использовании констант и оптимизации все отлично работает, ни варнингов, ни ошибок.
выводы делайте сами.
P.S. с двойного подчеркивания начинаются функции, которые считаются внутренними и не должны использоваться программистом в явном виде.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:43:20
vitalik_1984
Так вот я и смотрю что не нравится компилятору в Собственной же библиотеке.Ведь при включенной оптимизации,при заданных константах не работает...
Как правильно запустить?
Константы он ведь сам такие же предлагает.
Вот пример из библиотеки
Код: Выделить всё
//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>
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:45:09
Мастер Ломастер
а почему я ни разу в жизни в эти библиотеки не залазил - и у меня всегда все работает?! может. в консерватории что-то не так?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 20:49:54
vitalik_1984
Ну вот вы как например полную оптимизацию включаете?
Я понимаю что у вас все от роду все правильно получается, так вот вы нам подскажите как же так?
Зачем компилятор нас на эти строки отсылает?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн мар 12, 2012 21:04:04
Мастер Ломастер
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);
}
}
результат компиляции для случая PAUSE_AS_FUNC == 1:
Program: 3878 bytes (11.8% Full)
результат компиляции для случая PAUSE_AS_FUNC == 0:
Program: 270 bytes (0.8% Full)
никакой иной разницы (0 errors 0 warnings) нет
что еще проверить? я готов
P.S. автора ТАКОГО примера убить мало - если так начинающих учить, то из них получатся конченные кодеры

"