Технический форум по робототехнике.
Romikgy » 11 июл 2011, 18:42
Не нравится компилятору работа с переменными вне ф-кций....
плюс почитайте о динамических и статических массивах... ибо создаете динамику , а используете как статику....
без асма не понять правильной оптимизации ... так что не извращайтесь ИМХО
КСАТИ КОД НЕ ПРАВИЛЬНЫЙ!!!!
Добавлено спустя 10 минут 17 секунд:
так правильнее ....
по коду было одно выделение памяти ... а после серва офф память убивалась последующие обращение к серва он привело бы к краху программы.....
- Вложения
-
ADC.zip
- (236.16 КиБ) Скачиваний: 0
Korbofos » 11 июл 2011, 19:18
Мега Благодарю. Мой С ещё очень жидкий. буду читать и читать...
Vooon » 11 июл 2011, 21:35
Vooon » 12 июл 2011, 02:22
Преждевременная оптимизация это плохо, понятненько?
boez » 12 июл 2011, 11:03
Korbofos писал(а):не нравится мне что в памяти будет такой массив висеть, если сервы будут отключены!
Пара наводящих вопросов:
1. ОК, освободили мы память когда сервы не нужны, а что мы туда положим?
2. А когда сервы понадобятся снова, куда мы это "что-то" денем?
Korbofos » 12 июл 2011, 13:25
При ручном управлении нужен будет только шим и уарт, зачем грузить всё остальное?
boez » 12 июл 2011, 16:06
А в смысле - грузить? Статический массив или одиночная переменная - это просто зарезервированное место в адресном пространстве МК. Пока не пользуешься - просто ничего не происходит. Да, ничего другого ты туда не положишь. Но тут мы возвращаемся к моим двум вопросам в предыдущем посте.
Dmitry__ » 12 июл 2011, 16:19
сначала malloc() и free() в микроконтроллер, потом mmu туда же
а, потом бабушку через дорогу не переведут
и так покатятся по наклонной
![Shocked :shock:](http://roboforum.ru/images/smilies/shok.gif)
=DeaD= » 12 июл 2011, 16:24
Dmitry__, а вы то какой подход предлагаете? Мне самому не нравится, что товарищ желает освобождать память и занимать чем-то еще дальше. У вас есть варианты красивей, без malloc'а? Чтобы потом доработка программы не превращала её в фарш?
Dmitry__ » 12 июл 2011, 16:30
если контроллеру нужно управлять сервами, то эта память нужна всегда
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
это не компьютер на котором можно разные операционки запускать в один день
boez правильно пытается донести мысль
boez писал(а):Да, ничего другого ты туда не положишь. Но тут мы возвращаемся к моим двум вопросам в предыдущем посте.
=DeaD= » 12 июл 2011, 16:53
Добавлено спустя 2 минуты 7 секунд:
Вполне может быть некая практическая задача, когда роботу нужно остановиться, освободить всю память под какое-нибудь "простенькое" распознавание речи, выполнить распознавание, затем загрузить снова "в память" таблицу переменных под сервы и двинуться вперед. Хотя я бы конечно в таком случае постарался взять МК, где памяти хватает без malloc+free.
blindman » 12 июл 2011, 18:26
Korbofos,
вы не должны этого хотеть ![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
Другими словами, так не делают. Одна из причин - повышение шансов схватить трудноуловимый баг. Есть и другие. Так что пока забудь. С опытом приходит понимание, в каких редких случаях такие вещи все же можно делать, но к тому моменту и вопрос "как?" уже не будет возникать.
Korbofos » 13 июл 2011, 04:57
=DeaD= » 13 июл 2011, 08:12
Вырезал из темы обсуждение кольцевого буфера и практически флейм и перенес сюда:
forum7/topic10289.html
Korbofos » 25 авг 2011, 19:15
Почему установки ножек на выход всё в порядке
- Код: Выделить всё • Развернуть
DDRB|=(1<<DDB6)|(1<<DDB5);
А при обратной операции
- Код: Выделить всё • Развернуть
DDRB&=~(1<<DDB6)|(1<<DDB5);
Ножка PB5 остаётся включоной на выход?