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

 
 
> О подходах к программированию, Вынесено из темы "Какой-то бред..."
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
 
Start new topic
Ответов
rezident
сообщение Jan 3 2008, 16:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Aesthete Animus @ Jan 3 2008, 05:47) *
Насчет ANSI C, то он насколько я знаю убнуляет в том числе автоматические переменные.
Ошибаетесь. Автоматические это то же что и локальные переменные, выделяемая для них память находится на стеке или в регистрах. Они и еще регистровые (register) переменные не инициализируются нулями в отличие от глобальных и статических (static).
Цитата(Aesthete Animus @ Jan 3 2008, 05:47) *
В любом случае, когда не уверен, то лучше сделать все вручную.
А вот это правильно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 3 2008, 17:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(rezident @ Jan 3 2008, 18:17) *
"В любом случае, когда не уверен, то лучше сделать все вручную"

А вот это правильно.

Совершенно не правильно sad.gif Когда не уверен, надо уверенность и твердость знаний приобретать а не заниматься инициализаций всего, чего попало неуверенными руками.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 3 2008, 23:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zltigo @ Jan 3 2008, 22:23) *
Совершенно не правильно sad.gif Когда не уверен, надо уверенность и твердость знаний приобретать а не заниматься инициализаций всего, чего попало неуверенными руками.

Скобки в сложных выражениях и (ре)инициализация переменных никогда лишними не бывают. В таких случаях лучше перебдеть...или перебдедь?... в общем перестраховаться, чем недобд... тьфу... короче лучше, чем наоборот smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Aesthete Animus   О подходах к программированию   Jan 3 2008, 00:47
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 14:39
Рейтинг@Mail.ru


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