AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение pyzhman »

ВитГо, дружище! Вам-то какая обида от меряния писюнами вышедерущихся? Как нравится, так и пишите. Любой язык тем и хорош(в том числе программирования), что изъяснятся можно всяко-разно. Даже акцент понятен.
Docendo discimus
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: AVR studio 4 в вопросах и ответах

Сообщение BerZerK-ku »

Вообще ничего против скобок не имею, но обоснование применения:
Мастер Ломастер писал(а):в Си не определен однозначно порядок вычисления равноприоритетных операций. поэтому я не надеюсь на весьма шаткий шанс, что выражение будет вычисляться слева направо и ставлю скобки - приоритет операции в скобках становится выше и можно быть уверенным, что она выполнится обязательно раньше, чем заскобочная.
просто в шок повергло.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 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 в вопросах и ответах

Сообщение BerZerK-ku »

Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем, пытаясь показать свои познания в языке :dont_know:
Только к этому еще надо бы добавить, что нагромождение скобок тоже ни к чему хорошему не приводит.

P.S. Приведите еще источник цитаты, хотелось бы понять о чем речь шла, т.к. вроде Си не является машинозависимым языком.
Последний раз редактировалось BerZerK-ku Пн янв 16, 2012 12:28:56, всего редактировалось 1 раз.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Если бы это звучало в вашем первом ответе на эту тему, я бы и не привязывался. Но вы же пошли другим путем :dont_know:

вы бы не приязывались, если бы были не вы - я тут совсем не при чем. сами-то вы лишь придираетесь к моему подходу, который не содержит ошибок, вынуждая меня давать какие-то пояснения... сами-то вы не дали ни какого ответа тому, кто задавл изначальный вопрос, уведя разговор снова в сферу "вашей крутости в Си". если помните - перчатка валяется у ваших ног :) а пока ее не подняли - не уводите впредь разговоры в сторону от реальной обсуждаемой темы. если в моих словах есть ЛОЖЬ - милости прошу опровергать, а придирки оставьте для своей бабушки
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: AVR studio 4 в вопросах и ответах

Сообщение BerZerK-ku »

Код: Выделить всё

PORTC = Dig[lvl*10/255];//LVL по любому придется double делать
PORTC = Dig[(lvl*10)/255];//LVL по любому НЕ придется double делать

Вообще вопрос состоял в том, чем отличаются эти строки. Ответ ничем. А вот в дебри языка полезли как раз вы :dont_know:
А на счет ЛЖИ, дак ее и опровергал, или вы до сих пор утверждаете что в Си нет установленного порядка выполнения операторов?

Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Предыдущий пост не успел отредактировать, приведите источник цитаты если не сложно.
мне проще вас послать. утомили. все, что хотел, я ВАМ сказал
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: AVR studio 4 в вопросах и ответах

Сообщение BerZerK-ku »

:))) фига я болван, сам же свои ссылки не читаю. Нашел откуда и нашел по какому поводу циатата, к сожалению от этого и скобки не застрахуют.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: AVR studio 4 в вопросах и ответах

Сообщение Gudd-Head »

4-я Студия нормально ставится на семёрку?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение vitalik_1984 »

Говорят пятая лучше бегает на семерке 64 бит.Все хочу поставить семерку попробовать.Руки не доходят.
А с четвертой проекты есть возможность привести к виду пятой студии.Правда комментарии теряются - студия с русским плохо дружит.
В поисках истины человек развивается.
juzik
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Re: AVR studio 4 в вопросах и ответах

Сообщение juzik »

5 студия построена на Visual Studio 2010. А последней не существует 64 битной, только 32, поэтому без разницы какая платформа.
Аватара пользователя
wellcom
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Re: AVR studio 4 в вопросах и ответах

Сообщение 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 ==========
А вот место на которое все указывает. В чем может быть проблема?
2012-03-12_091447.jpg
(131.76 КБ) 764 скачивания
:solder: 32-х ядерный процессор из П213В
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение vitalik_1984 »

Вы бы еще лог установки скопировали :)
Лучше копируйте из вкладки 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 в вопросах и ответах

Сообщение 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 


Где правда?
В поисках истины человек развивается.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Мастер Ломастер »

не путайте __builtin_avr_delay_cycles(__tmp), которую по идее вы и видеть никогда не должны с _delay_ms(). при отключенной оптимизации задержки несоответствуют заданным значениям. при использовании переменных задержки не только не соответствуют заданным (и при оптимизации в том числе), так еще и размер кода почти на килобайт разрастается. а вот при использовании констант и оптимизации все отлично работает, ни варнингов, ни ошибок.

выводы делайте сами.

P.S. с двойного подчеркивания начинаются функции, которые считаются внутренними и не должны использоваться программистом в явном виде.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение 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>
  
 
Последний раз редактировалось 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 в вопросах и ответах

Сообщение vitalik_1984 »

Ну вот вы как например полную оптимизацию включаете?
Я понимаю что у вас все от роду все правильно получается, так вот вы нам подскажите как же так?
Зачем компилятор нас на эти строки отсылает?
В поисках истины человек развивается.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 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);
    }
}
результат компиляции для случая 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. автора ТАКОГО примера убить мало - если так начинающих учить, то из них получатся конченные кодеры :("
битва с дураками проиграна, победители торжествуют. слава победителям!
Ответить

Вернуться в «AVR»