roboforum.ru

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

CodeVisionAVR - версия 2!

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

Romikgy » 11 июл 2011, 18:42

Не нравится компилятору работа с переменными вне ф-кций....
плюс почитайте о динамических и статических массивах... ибо создаете динамику , а используете как статику....

без асма не понять правильной оптимизации ... так что не извращайтесь ИМХО


КСАТИ КОД НЕ ПРАВИЛЬНЫЙ!!!!

Добавлено спустя 10 минут 17 секунд:
так правильнее ....

по коду было одно выделение памяти ... а после серва офф память убивалась последующие обращение к серва он привело бы к краху программы.....
Вложения
ADC.zip
(236.16 КиБ) Скачиваний: 0

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

Korbofos » 11 июл 2011, 19:18

Мега Благодарю. Мой С ещё очень жидкий. буду читать и читать...

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

Vooon » 11 июл 2011, 21:35


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

Vooon » 12 июл 2011, 02:22

Преждевременная оптимизация это плохо, понятненько?

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

boez » 12 июл 2011, 11:03

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

Пара наводящих вопросов:
1. ОК, освободили мы память когда сервы не нужны, а что мы туда положим?
2. А когда сервы понадобятся снова, куда мы это "что-то" денем?

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

Korbofos » 12 июл 2011, 13:25

При ручном управлении нужен будет только шим и уарт, зачем грузить всё остальное?

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

boez » 12 июл 2011, 16:06

А в смысле - грузить? Статический массив или одиночная переменная - это просто зарезервированное место в адресном пространстве МК. Пока не пользуешься - просто ничего не происходит. Да, ничего другого ты туда не положишь. Но тут мы возвращаемся к моим двум вопросам в предыдущем посте.

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

Dmitry__ » 12 июл 2011, 16:19

сначала malloc() и free() в микроконтроллер, потом mmu туда же
а, потом бабушку через дорогу не переведут
и так покатятся по наклонной :shock:

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

=DeaD= » 12 июл 2011, 16:24

Dmitry__, а вы то какой подход предлагаете? Мне самому не нравится, что товарищ желает освобождать память и занимать чем-то еще дальше. У вас есть варианты красивей, без malloc'а? Чтобы потом доработка программы не превращала её в фарш?

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

Dmitry__ » 12 июл 2011, 16:30

если контроллеру нужно управлять сервами, то эта память нужна всегда :)
это не компьютер на котором можно разные операционки запускать в один день
boez правильно пытается донести мысль

boez писал(а):Да, ничего другого ты туда не положишь. Но тут мы возвращаемся к моим двум вопросам в предыдущем посте.

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

=DeaD= » 12 июл 2011, 16:53

Добавлено спустя 2 минуты 7 секунд:
Вполне может быть некая практическая задача, когда роботу нужно остановиться, освободить всю память под какое-нибудь "простенькое" распознавание речи, выполнить распознавание, затем загрузить снова "в память" таблицу переменных под сервы и двинуться вперед. Хотя я бы конечно в таком случае постарался взять МК, где памяти хватает без malloc+free.

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

blindman » 12 июл 2011, 18:26

Korbofos, вы не должны этого хотеть :) Другими словами, так не делают. Одна из причин - повышение шансов схватить трудноуловимый баг. Есть и другие. Так что пока забудь. С опытом приходит понимание, в каких редких случаях такие вещи все же можно делать, но к тому моменту и вопрос "как?" уже не будет возникать.

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

Korbofos » 13 июл 2011, 04:57

Убедительно на счёт malloc'a :)
Тем более что при его использовании прошивка прибавляет в весе.
А так что с malloc, что без него сервы работают одинаково неправильно :)
Раньше занимался оптимизацией winxp(ради адской скорости). По видимому malloc это эхо тех событий :lol:
P.S. Уже понял что мк это пк больше не буду так баловаться :)

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

=DeaD= » 13 июл 2011, 08:12

Вырезал из темы обсуждение кольцевого буфера и практически флейм и перенес сюда: forum7/topic10289.html

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

Korbofos » 25 авг 2011, 19:15

Почему установки ножек на выход всё в порядке
Код: Выделить всёРазвернуть
DDRB|=(1<<DDB6)|(1<<DDB5);

А при обратной операции
Код: Выделить всёРазвернуть
DDRB&=~(1<<DDB6)|(1<<DDB5);

Ножка PB5 остаётся включоной на выход?


cron
Rambler\'s Top100 Mail.ru counter