реклама на сайте
подробности

 
 
> О подходах к программированию, Вынесено из темы "Какой-то бред..."
Aesthete Animus
сообщение Jan 3 2008, 00:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(IgorKossak @ Jan 2 2008, 23:07) *
Для тех, кто читает не всё:
порты - по Atmel (default value);
глобальные переменные - по АНСИ СИ.

Да действительно, прежде всего стоит смотреть в даташит, какие начальные значения у регистров - тут уж посыпаю голову пеплом. Насчет ANSI C, то он насколько я знаю убнуляет в том числе автоматические переменные. В любом случае, когда не уверен, то лучше сделать все вручную.

Цитата(HCHUNTER @ Jan 2 2008, 23:36) *
Цитата
При этом не забудьте убрать цикл "while (1)" из мейна.

А это для чего? что оно мне даст?
куда же я тогда возвращаться-то буду... в "никуда" получается...

Вы в цикле выставляете ногу порта в еденицу. Я прежде всего имел ввиду убрать именно это.
Насчет возврата в никуда, не знаю как в CV, но в AVR GCC нет необходимсоти вставлять чечный цикл.

Цитата(HCHUNTER @ Jan 2 2008, 23:36) *
Цитата
Хочу заметить, что всякие задержки в прерываниях (наподобее delay_us) крайне не рекоммендуются, прерывание - это критическая часть кода, из которого следует выходить как можно скорее.

Вот это мне тоже, кстати, не совсем понятно... Звучит как заученная фраза из книжек.
А если мне нужно по возникновении прерывания выполнить массу всего? Что мне тогда делать...?

Тут уж я научен горьким опытом. Прерывание опасно тем, что создает многопоточность, но при этом с непресдсказуемым вызовом "потоков". Если нужно выполнить какое-то критичное по времени действие, то делайте его в прерывании; если вы к примеру семплируете звук в реалтайме, то обрабатывайте событие АЦП то-же в прерывании. В прерывании должен содержаться минимальный код, в крайнем случае, код прерывания должен выполняться минимальное время. Во всех остальных случаях в мейне должен крутиться цикл с провркой флагов. Притом, не забывайте, что для всез прерываний есть аппаратные флаги, таким образом, нет необходимсоти делать софтовый флаг, который будет устанавливаться в прерывании.

Насчет инициализации таймеров, могу сослать на соседнюю тему - http://electronix.ru/forum/index.php?showtopic=41239# - там я писал про инициализацию таймера для отсчета секунды. То, что там написано, конечно, не истина в последней инстанции, но, во всяком случае, у меня работает.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Aesthete Animus   О подходах к программированию   Jan 3 2008, 00:47
- - rezident   Цитата(Aesthete Animus @ Jan 3 2008, 05:4...   Jan 3 2008, 16:17
|- - zltigo   Цитата(rezident @ Jan 3 2008, 18:17) ...   Jan 3 2008, 17:23
|- - rezident   Цитата(zltigo @ Jan 3 2008, 22:23) Соверш...   Jan 3 2008, 23:24
|- - zltigo   Цитата(rezident @ Jan 4 2008, 01:24) Скоб...   Jan 3 2008, 23:38
- - Aesthete Animus   Цитата(rezident @ Jan 3 2008, 19:17) Они ...   Jan 3 2008, 18:28
|- - zltigo   Цитата(Aesthete Animus @ Jan 3 2008, 20:2...   Jan 3 2008, 18:45
|- - Aesthete Animus   Цитата(zltigo @ Jan 3 2008, 21:45) Зачем ...   Jan 4 2008, 14:06
|- - zltigo   Цитата(Aesthete Animus @ Jan 4 2008, 16:0...   Jan 4 2008, 18:36
- - Aesthete Animus   Цитата(zltigo @ Jan 4 2008, 21:36) Только...   Jan 4 2008, 21:44
|- - zltigo   Цитата(Aesthete Animus @ Jan 4 2008, 23:4...   Jan 4 2008, 22:59
- - Aesthete Animus   Цитата(zltigo @ Jan 5 2008, 01:59) Разниц...   Jan 6 2008, 17:17
|- - zltigo   Цитата(Aesthete Animus @ Jan 6 2008, 19:1...   Jan 6 2008, 18:38
|- - Aesthete Animus   Ей богу, я уже начинаю терять нить нашего с Вами с...   Jan 6 2008, 20:49
|- - zltigo   Цитата(Aesthete Animus @ Jan 6 2008, 22:4...   Jan 6 2008, 23:00
|- - Herz   Цитата(Aesthete Animus @ Jan 6 2008, 22:4...   Jan 7 2008, 08:24
- - INT1   Как показалось, эта ветка скорей философская. Кому...   Jan 6 2008, 20:35


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016