roboforum.ru

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

CodeVisionAVR - версия 2!

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

galex1981 » 07 июл 2011, 11:48

Странный таки вопрос. Когда объявляешь переменную ты пишешь:
Код: Выделить всёРазвернуть
int a;

Когда она тебе не нужна, ты просто убираешь ее объявление и спрользование (или я что то не догоняю)

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

dccharacter » 07 июл 2011, 12:02

объявляй не глобальные переменные, а локальные.

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

Korbofos » 07 июл 2011, 12:05

Пишу прошивку для m128-ds.
Например если нужно работать с сервами создаём глобальный массив, чтоб работать с ним в прерываниях.
Сервы больше ненужны отключаем таймер удаляем массив из памяти.
Но как это сделать?

P.S.Если не нужны сервы то и массив не нужен....

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

=DeaD= » 07 июл 2011, 12:50

Вроде как в любом Си - если надо на ходу выделять\чистить память, то надо использовать malloc + free, а в переменную объявлять только указатель на будущую структуру данных.

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

Romikgy » 07 июл 2011, 13:56

какую переменную?

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

osc » 07 июл 2011, 18:04

Мне больше версия 1.ХХХ нравится, хотя во второй правильно модернизировали CodeWizard.
Вообще лучше без него писать, как я считаю.

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

Korbofos » 10 июл 2011, 12:28

Код: Выделить всёРазвернуть
int *servo_position;
int *pause;
unsigned char *current_servo;
servo_position=(int*)calloc(9,sizeof(int));
pause=(int*)malloc(sizeof(int));
current_servo=(char*)malloc(sizeof(unsigned char));

Что не так делаю????
CV выдаёт ошибку: пропущена "(
Нужный обьём памяти HEAP задал...

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

Vooon » 11 июл 2011, 08:25

Зачем здесь вообще динамическое выделение?

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

Korbofos » 11 июл 2011, 08:40

если сервы не нужны зачем массив держать в памяти?
Ну или как ещё можно сделать?

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

Romikgy » 11 июл 2011, 10:22

Korbofos писал(а):
Код: Выделить всёРазвернуть
int *servo_position;
int *pause;
unsigned char *current_servo;
servo_position=(int*)calloc(9,sizeof(int));
pause=(int*)malloc(sizeof(int));
current_servo=(char*)malloc(sizeof(unsigned char));

Что не так делаю????
CV выдаёт ошибку: пропущена "(
Нужный обьём памяти HEAP задал...

в данном куске скобки нормальные ... мож в другом участке кода?
PS это не тот проц где нормально работает динамическая память .....

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

Korbofos » 11 июл 2011, 10:41

int *servo_position;
//servo_position=(int*)malloc(9*sizeof(int));
убираю строку всё нормально никаких ошибок

не нравится мне что в памяти будет такой массив висеть, если сервы будут отключены!

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

Romikgy » 11 июл 2011, 16:52

это 36 байт что ли жалко?

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

Korbofos » 11 июл 2011, 18:11

Немного да))
Люблю оптимизировать и выкидывать ненужное... У меня маниакальный характер :crazy:

Romikgy если времени не жалко может посмотрите проект? Сегодня пол дня CV мучил эффекту ноль(упорно требует скобку) :o

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

Romikgy » 11 июл 2011, 18:14

выкладывай посмотрим ....

PS если разбираешься в асме , то посмотри код который генерит си для ф-кций malloc и подобные ... и тогда еще раз подумай о необходимости такой оптимизации....

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

Korbofos » 11 июл 2011, 18:21

В асаме я не разбираюсь(
Вот "проект"
Вложения
ADC.rar
(198.74 КиБ) Скачиваний: 0


cron
Rambler\'s Top100 Mail.ru counter