roboforum.ru

Технический форум по робототехнике.

CodeVisionAVR - версия 2!

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: CodeVisionAVR - версия 2!

Сообщение galex1981 » 09 май 2009, 12:38

По Ctrl+F9 идет линковка по конкретному МК.
По поводу глобальных переменных - используй их реже.
Еще совет: используй по возможности как можно меньше переменных вообще. То есть если в функции несколько циклов следующих друг за другом, для индекса не 3 объявляй переменных а 1. Ну и аналогично для остального. Памяти будет достаточно для определенных задач
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: CodeVisionAVR - версия 2!

Сообщение blindman » 09 май 2009, 12:49

hubble писал(а):Что не везде локальную переменную можно использовать так гбе бы, по логике вещей, она должна была бы находиться

Это как?
galex1981 писал(а):есть если в функции несколько циклов следующих друг за другом, для индекса не 3 объявляй переменных а 1. Ну и аналогично для остального.

Компиляторы достаточно сообразительны, чтобы самостоятельно определить время жизни переменной, и в случае с 3 циклами в большинстве случаев будет сгенерирован одинаковый код, что с 1 переменной, что с 3. Причем на расход ОЗУ это тоже мало влияет - локальные переменные в большинстве случаев хранятся в регистрах, а не в ОЗУ. Если конечно не объявлять кучу локальных переменных.

Кстати небольшое замечание по поводу "хватает ОЗУ" : если у контроллера 1024 байта ОЗУ, и компилятор сообщает, что используется 1020 - это еще не значит, что программа работать будет. Не забывайте про стэк.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: CodeVisionAVR - версия 2!

Сообщение hubble » 09 май 2009, 13:21

Это как?

Переменную можно прописать в функции и она будет только как локальная. Прописаная вне функции она уже будет глобальной.
Прописав переменную глобальной, наверняка не ошибешься. При этом скушаешь больше ресурсов. Поэтому в пиках я, по возможности, и стараюсь все переменные устоить локальными. С авээркой (может быть это с CodeVision?) это у меня не прошло.
hubble
 
Сообщения: 12
Зарегистрирован: 04 май 2009, 20:46
Откуда: Днепропетровск

Re: CodeVisionAVR - версия 2!

Сообщение blindman » 09 май 2009, 13:36

Непонятно, что значит "не ошибешься" и "это у меня не прошло"? Ошибешься в чем? Что конкретно не работает? И не мешало бы код показать.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: CodeVisionAVR - версия 2!

Сообщение hubble » 09 май 2009, 13:52

To slavaslx:
скорее всего Ваша правда...с массивами.
Поменял const на flash
Код: Выделить всёРазвернуть
const unsigned char SignNumber_slim[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          ........................................
          0xe0,0x00,0xe0,0x00,0x00,0x00,0x00,0x00};


Код: Выделить всёРазвернуть
flash unsigned char SignNumber_slim[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          ........................................
          0xe0,0x00,0xe0,0x00,0x00,0x00,0x00,0x00};

и все откомпилировалось и отлинковалось. И еще больше 60% памяти flash осталось. Просветите, пожалуйста, насчет const и flash. Что и когда правильнее использовать?

Непонятно, что значит "не ошибешься" и "это у меня не прошло"? Ошибешься в чем? Что конкретно не работает?

Да, вроде бы все, кто отвечал, поняли. И, что конкретней, чем было написано, необходимо пояснить?
Но, скорее всего этот вопрос исчерпан. Кроме того, который я задал в этом посте.
Последний раз редактировалось hubble 09 май 2009, 13:59, всего редактировалось 1 раз.
hubble
 
Сообщения: 12
Зарегистрирован: 04 май 2009, 20:46
Откуда: Днепропетровск

Re: CodeVisionAVR - версия 2!

Сообщение blindman » 09 май 2009, 13:57

Ну может только для меня он не исчерпан. А может кто-то не понимает разницы между локальными и глобальными переменными. Вот я и пытаюсь прояснить.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: CodeVisionAVR - версия 2!

Сообщение hubble » 09 май 2009, 14:01

Прошу прощения за свою не тактичность.
И все же. Если можно, какие-нибудь разъяснения насчет const и flash.
hubble
 
Сообщения: 12
Зарегистрирован: 04 май 2009, 20:46
Откуда: Днепропетровск

Re: CodeVisionAVR - версия 2!

Сообщение blindman » 09 май 2009, 14:08

hubble писал(а):Прошу прощения за свою не тактичность.
И все же. Если можно, какие-нибудь разъяснения насчет const и flash.

Элементарно. const в соответствии со стандартом языка C - это модификатор, который запрещает изменение переменной после инициализации. Во всем остальном такая переменная не отличается от переменной без этого модификатора. flash - это расширение конкретного компилятора, предписывает размещение переменной в памяти программ. Почему const работала на пике? Наверно там компилятор такие переменные помещает во флэш, хотя это и неправильно.

Теперь твоя очередь :) Что же все таки означает вот это :
hubble писал(а):Прописав переменную глобальной, наверняка не ошибешься. При этом скушаешь больше ресурсов. Поэтому в пиках я, по возможности, и стараюсь все переменные устоить локальными. С авээркой (может быть это с CodeVision?) это у меня не прошло.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: CodeVisionAVR - версия 2!

Сообщение MiBBiM » 09 май 2009, 14:25

ну и если добавить, то доступ к flash константам медленнее
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: CodeVisionAVR - версия 2!

Сообщение rig » 09 май 2009, 15:01

к еепром доступ точно медленнее а к флеш вродь такойже

Добавлено спустя 1 минуту 38 секунд:
и если размещать константы в озу то они будут и во флеш и в озу, инициализироваться один фиг из основной программы во флеш , и места как мне кажется займут еще больше
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: CodeVisionAVR - версия 2!

Сообщение avr123.nm.ru » 17 окт 2009, 16:55

CVAVR CodeVisionAVR 2.04.4a полный но в ознакомительных, учебных целях ...
Ниже !
Последний раз редактировалось avr123.nm.ru 07 ноя 2009, 13:16, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: CodeVisionAVR - версия 2!

Сообщение pva » 20 окт 2009, 17:34

Последний раз редактировалось pva 29 окт 2012, 20:50, всего редактировалось 1 раз.
pva
 
Сообщения: 17
Зарегистрирован: 11 июн 2009, 17:40

Re: CodeVisionAVR - версия 2!

Сообщение -= Александр =- » 21 окт 2009, 19:16

Нехило! В него включили библиотеку FAT_FS для SD\MMC от ELM-CHANa! :shock:
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Re: CodeVisionAVR - версия 2!

Сообщение galex1981 » 21 окт 2009, 22:33

Потому что стоящая библиотека!
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: CodeVisionAVR - версия 2!

Сообщение -= Александр =- » 22 окт 2009, 01:42

А я почти переписал ее сам ручками для CVAVR - так они меня опередили! :cry:
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 5