реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Что лучше взять для AVR?, Программить на С.
Vict59
сообщение Nov 24 2005, 06:12
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 22-06-04
Из: Москва
Пользователь №: 109



Использую IAR C 2.28 (написания кода) + AVRstudio (для отладки, проверки временных интервалов). ИМХО очень хорошая "парочка".
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 24 2005, 13:22
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



А есть ли какая-то литература (желательно русская) по IAR? По чему лучше его освоить?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
dimka2001
сообщение Nov 24 2005, 14:51
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 6-11-05
Пользователь №: 10 508



Лучше всего codevision!!!
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 25 2005, 00:32
Сообщение #19


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата
А есть ли какая-то литература (желательно русская) по IAR? По чему лучше его освоить?


К сожалению не находил, когда пытался освоить IAR. Но к тому времени я уже немного знал английский (очень не много) и потихоньку разбирал мануал пользователя. Там все доходчиво сказано. Если у Вас возникнут вопросы, я думаю на них смогут ответить на этом форуме, потому, что там (в IAR) все на самом деле очень просто.

На счет освоить... Я сначала открыл и скомпилировал пример, который прилагается к дистрибутиву IAR, затем с нуля начал свой проект, по пути знакомясь с особенностями IAR EWAVR.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 25 2005, 05:10
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Спасибо. Видимо, пока у меня будет наоборот, быстрые проекты - на ассемблере, когда время не поджимает - на Си.
Вопрос возник. Когда пробовал WinAvr, он выдавал полный листинг с сишными кодами и ассемблерной реализацией всего проекта в целом. А IAR уменя выдает листинги только по модулям, а цельную картину не могу получить. Это он в принципе не может или я что-то не доделываю?

Сообщение отредактировал Георгий - Nov 25 2005, 06:21


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 25 2005, 09:07
Сообщение #21


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Георгий @ Nov 25 2005, 07:10) *
...Вопрос возник. Когда пробовал WinAvr, он выдавал полный листинг с сишными кодами и ассемблерной реализацией всего проекта в целом. А IAR уменя выдает листинги только по модулям, а цельную картину не могу получить. Это он в принципе не может или я что-то не доделываю?

Цельная картина складывается после сборки проекта, но в IAR-овском линкере не предусмотрена такая возможность (а может я ей просто не пользуюсь wink.gif ).
Если бы Вы сказали зачем оно нужно, то может можно было бы поискать обходные манёвры, например:
- загрузить проект в отладчик IAR и вызвать окно дизассемблера;
- загрузить проект в AVRStudio и далее так же.

Сообщение отредактировал IgorKossak - Nov 25 2005, 09:07
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 25 2005, 10:01
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



В WinAVR-е было удобно контролировать, что компилится и как реализуются какие-то куски программы (после чего я его и покинул). Просто у меня начались временные расхождения в программах, отлаживаемых в разных системах, вот и хотелось бы иметь этот ассемблереый код. Но похоже такого вообще нет. Перерыл все что идет с IAR, все установки поперепробовал, но увы мне sad.gif


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 25 2005, 11:02
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Столкнулся с непоняткой компиляции IAR-а.
Исходник:
Код
void delay20mks(void)
{
char j,k;

  for (j=0; j< 6; j++)
    for (k=0; k<176; k++);
}

В Debug режиме:
Код
    21          void delay20mks(void)
   \                     delay20mks:
     22          {
     23           char j,k;
     24          
     25            for (j=0; j< 6; j++)
   \   00000000   E010               LDI     R17, 0
   \   00000002   C004               RJMP    ??delay20mks_0
     26              for (k=0; k<176; k++);
   \                     ??delay20mks_1:
   \   00000004   9503               INC     R16
   \                     ??delay20mks_2:
   \   00000006   3B00               CPI     R16, 176
   \   00000008   F3E8               BRCS    ??delay20mks_1
   \   0000000A   9513               INC     R17
   \                     ??delay20mks_0:
   \   0000000C   3016               CPI     R17, 6
   \   0000000E   F410               BRCC    ??delay20mks_3
   \   00000010   E000               LDI     R16, 0
   \   00000012   CFF9               RJMP    ??delay20mks_2
     27          }
   \                     ??delay20mks_3:
   \   00000014   9508               RET

В Release режиме:
Код
     21          void delay20mks(void)
   \                     delay20mks:
     22          {
     23           char j,k;
     24          
     25            for (j=0; j< 6; j++)
   \   00000000   E006               LDI     R16, 6
     26              for (k=0; k<176; k++);
   \                     ??delay20mks_0:
   \   00000002   950A               DEC     R16
   \   00000004   F7F1               BRNE    ??delay20mks_0
     27          }
   \   00000006   9508               RET
     28

Почему Релизовая версия напрочь отмела внутренний цикл фор?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 25 2005, 11:24
Сообщение #24


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Георгий @ Nov 25 2005, 13:02) *
...Почему Релизовая версия напрочь отмела внутренний цикл фор?

Это результат оптимизации.
Если нужно сделать временнУю задержку - применяйте __delay_cycles(long timeout);
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 25 2005, 11:42
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



А где она описана, какой хедер надо подключить?
И если компилер так бездумно оптимизирует, получается его надо перепроверять?!


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 25 2005, 12:02
Сообщение #26


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Георгий @ Nov 25 2005, 17:42) *
А где она описана, какой хедер надо подключить?
И если компилер так бездумно оптимизирует, получается его надо перепроверять?!

Не нужно его постоянно проверят. Нужно немножко подучить язык. У Вас цикл ничего не делает и компилятор его выкидывает, т.к. с его точки зрения (с точки зрения языка) с циклом или без - результат работы программы один и тот же. Но без цикла она работает быстрее и ее размер меньше. Поэтому компилятор и выкидывает этот цикл. Напишите в цикле код, который делает полезную работу и компилятор ничего выкидывать не будет.

Если хочется подавить подобные оптимизации, то можно использовать прямое указание компилятору не оптимизировать, объявив одну из переменных как volatile. Тогда компилятор не будет иметь права делать какие-либо предположения о поведении этой переменной и вынужден будет честно сгенерировать код для нее, даже если этот код ничего с точки зрения компилятора не делает.

Формирование задержки этим способом имеет то неудобство, что сложно предсказать, во сколько тактов реально выльется цикл. Для задания точной задержки в пакете EWAVR имеется специальная intrinsic функцию __delay_cycles(). При ее вызове компилятор сам организует код, формирующий указанную задержку. Чтобы она работала, нужно подключить заголовок inavr.h, иначе компилятор не видит прототипа и ругается.

Т.ч. почитайте, во-первых, доку по С, во-вторых, доку на компилятор - она очень внятная. Удачи.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
G}{OST
сообщение Nov 25 2005, 12:15
Сообщение #27


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784



Цитата(dxp @ Nov 25 2005, 15:02) *
Цитата(Георгий @ Nov 25 2005, 17:42) *

А где она описана, какой хедер надо подключить?
И если компилер так бездумно оптимизирует, получается его надо перепроверять?!

Не нужно его постоянно проверять.

Постоянно-то не надо, а вот время от времени - очень даже полезно smile.gif Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки.


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 25 2005, 12:35
Сообщение #28


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(G}{OST @ Nov 25 2005, 14:15) *
... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки.

Предупреждать уже надоело twak.gif
Ещё один скоропалительный вывод - и буду банить.

PS: если руки-не-оттуда, то причём тут компилятор!
Go to the top of the page
 
+Quote Post
G}{OST
сообщение Nov 25 2005, 12:52
Сообщение #29


Участник
*

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784



Цитата(IgorKossak @ Nov 25 2005, 15:35) *
Цитата(G}{OST @ Nov 25 2005, 14:15) *

... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки.

Предупреждать уже надоело twak.gif
Ещё один скоропалительный вывод - и буду банить.

Я имел в виду не применительно к данной ситуации, а вообще. Это не скоропалительный вывод, а плод 5 лет мучений с данным продуктом. Если надо - могу покопаться и для версий ИАРа, начиная от 2.20C до 4.10 перечислить все "огрехи" оптимизатора. Теперь вот дошёл до того, что всегда стараюсь ставить минимальную оптимизацию, если ресурсы позволяют.

ЗЫ. Баньте сразу, что ж вы опять предупреждаете? smile3009.gif


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Nov 25 2005, 13:07
Сообщение #30


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата(G}{OST @ Nov 25 2005, 15:52) *
Цитата(IgorKossak @ Nov 25 2005, 15:35) *

Цитата(G}{OST @ Nov 25 2005, 14:15) *

... Оптимизатор довольно корявый у ИАРа. И от версии к версии разные глюки.

Предупреждать уже надоело twak.gif
Ещё один скоропалительный вывод - и буду банить.

Я имел в виду не применительно к данной ситуации, а вообще. Это не скоропалительный вывод, а плод 5 лет мучений с данным продуктом. Если надо - могу покопаться и для версий ИАРа, начиная от 2.20C до 4.10 перечислить все "огрехи" оптимизатора. Теперь вот дошёл до того, что всегда стараюсь ставить минимальную оптимизацию, если ресурсы позволяют.



НЕ знаю помоему очень ничего у него компилятор, посравнению с другими, скажем с KEIL, и оболочка немного получше, а главное он простой как бробка.

P.S. какие есть докозательства что он "корявый" ?
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01533 секунд с 7
ELECTRONIX ©2004-2016