Показать сообщение отдельно
Непрочитано 16.11.2011, 00:53  
Vastok83
Прописка
 
Регистрация: 31.01.2011
Сообщений: 112
Сказал спасибо: 27
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
Vastok83 на пути к лучшему
По умолчанию Re: Помогите начинающему по ATmega8515

Сообщение от alvadep Посмотреть сообщение
Зря, батенька, зря.
Ну, в принципе не зря. Дельные советы в основном на первых страницах. А потом флуд...

Еще дополню от себя, т.к. я прошел часть этого интересного пути, хоть и не постиг всех вершин, но нахожусь дальше, чем автор этой темы.

1. Не привязывайтесь к конкретной модели контроллера(как было сказано выше). Для начала выбирайте ЛЮБУЮ. На практике, для каждого проекта подбирается свое решение.

2. Не изучайте все устройства контроллера. Это лишняя информация на начальном этапе. Нужно ознакомиться с каждым и существующих устройств и знать что такое устройство существует. Вникать в тонкости его работы не нужно. Вы все освоите по мере необходимости. Начните просто с портов и таймеров.

Из практики. То на что Вы наступите в ближайшее время.
1. Большинство проектов стоит писать на С. Только ОЧЕНЬ специфические вещи требуют ASM. По времени лучше использовать С с ассемблерными вставками, чем писать весь проект на ASM.
2. Не изобретайте велосипед. Существует очень много библиотек под каждый экран, датчик или микросхему. Если такую библиотеку не нашли, то можно найти аналогичное устройство, где такая библиотека есть. Цените свое время.
3. Если Вы пишите на С, то:
а. Не используйте длинные переменные напрасно. Помимо выделения большего куска памяти, требуется большее количество команд чтоб обработать эти переменные.
б. По возможности, старайтесь избегать переменных с плавающей точкой. Операции с плавающей точкой очень затратны.
в. Передавайте как можно меньше параметров в функции. Это уменьшит требуемый размер стека. Чаще лучше передать указатель, чем длинную переменную.
г. Не объявляете все переменные глобальными. Этим страдают особенно бывшие электронщики. Потом черт ногу сломит искать в каких функциях эта переменная меняется. Везде должен быть разумный подход.
д. Переменные, которые меняются внутри прерываний объявляйте как volatile. Отключайте прерывания на время работы с такими переменными. Это позволит избежать проблем с "непонятными значениями" в этих переменных.
е. Втройне аккуратно работайте с массивами (и указателями). Часто крах программы возникает если Вы случайно обратились за границу массива и чего-то там поменяли.
ж. Применяйте "таблицу переходов" - это существенно уменьшит программу и сделает ее более прозрачной.
В простом случае это двумерная таблица, где одно измерение - это номер состояния системы, а втрое - номер события. На пересечении стоит номер состояния, в которое должна перейти система после наступления этого события.
Если вы не поняли что здесь имеется введу - найдите доходчивое описание этого метода. Применяйте его, по возможности, вместо многочисленных "case".

4. Подбирайте контроллер, который аппаратно реализует нужные Вам устройства/интерфейсы. Старайтесь не эмулировать эти устройства программно. Это чревато не устойчивой работой всей программы.

5. Подбирая контроллер, для не до конца продуманного проекта, помните: "Сколько лапок не бери, а две б еще не помешали."

6. Для работы с датчиками требуется контроллеры с меньшим объемом флеш памяти. Если добавляете экраны/дисплеи (пользовательский интерфейс), то требуется куда больше памяти для реализации такого интерфейса.

7. Установите SVN (или другую аналогичную программу) на свой компьютер и контролируйте версии. У меня не раз было когда приходилось откатываться на несколько версий назад, чтоб найти внезапно проявившуюся ошибку.

(чувствую как "профи" начнут распинать этот пост)

Последний раз редактировалось Vastok83; 16.11.2011 в 01:05.
Vastok83 вне форума