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

 
 
> Много вопросов накопилось... Сильно не глумитесь, ATMega16 & etc
Screw
сообщение Nov 29 2006, 22:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 149
Регистрация: 29-11-06
Из: Барнаул
Пользователь №: 22 916



Здравствуйте, господа хорошие.
Перечитал я весь форум и охватило меня дикое желание узнать что-то новое в сфере AVR у профи, а не у таких же "знатоков" как я unsure.gif

Итак, от слов к делу:

1) Прерывания.... Знаю, тема больная, перечитал все, что тут есть..... Но.... либо опыта маловато, либо голова моя садовая - не принимает информацию wink.gif
Объясните на пальцах, что произойдет, если... (везде имеется ввиду Mega16)
Произошло прерывание Int1, в нем стоит задержка (ну или какая-то работа выполняется), во время которой происходит событие на порту INT0 (больший приоритет по документации). Далее во время этой же задержки срабатывает прерывание по таймеру-счетчику.

Распишите, если не трудно, в каком порядке это все будет отработано....

Возможно как-либо изменить приоритет прерываний ? Какие существуют решения?

2) Каким образом можно посчитать количество времени, затраченного на выполнение определенного куска кода (подпрограммы обработки прерывания допустим) в CVAVR?

3) У Атмела существует такой AppNote - Zero-Detector. Суть (если кто не видел) - соединяем ч/з 1Мом фазу и int0, а так же ноль и землю питания контроллера. Далее через прерывание идет обработка...
Дак вот - собрал сначало я со стабилитроном (на всякий пожарный) на 2,5 В. Все бы ничего - но контроллер в прерывание не уходил. На осциллографе все красиво, но видимо Меге мои красоты до..... Стабилитрон убрал - работает. Объясните, почему так оно происходит? При длительной работе без стабилитрона выход контроллера из строя как скоро произойдет?
За одно про int0 и тп.... в настройке этого прерывания можно выставлять передний и задний фронты сигналов (выставлял есс-но не я, а CVAVR). У меня есть подозрение, что что-то я делаю не так, ибо на осциллограмме смотрю фазу - ушла вниз, а прерывание на передний фронт сработало. (фазу и ноль не перепутал.... единственное - может меандр уплывает, но двухлучевика нет).

4) Граждане, привидите пример опроса клавиатуры 4x4 матрица... Самый простой, чтобы в глобальную переменную (назовем её key) выводилось значение нажатой клавиши.
Делал сам по 2-м алгоритмам.... сначало бегающим нулем с pullup, затем код клавиши вычислял через значения pinX.... Но то ли лыжи не едут.....


Надеюсь на Вашу помощь. Извините за сумбурность, писалось это все в 1-27 ночи wacko.gif

Сообщение отредактировал Screw - Nov 29 2006, 22:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Screw
сообщение Nov 30 2006, 17:34
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 149
Регистрация: 29-11-06
Из: Барнаул
Пользователь №: 22 916



Цитата(demaven @ Nov 30 2006, 07:06) *
И самое главное - обработчик прерываний не должен быть длинным по времени, желательно его сделать как можно короче, а окончательную обработку прерывания передать в основную программу. Тогда есть шанс не потерять следующее прерывание при обработке пришедшего.


Т.е. из обработчика прерывания вызвать подпрограмму обработки? А МК не будет думать, что этот код относится к обработчику (ну и загнул wink.gif ?
т.е. к примеру если я сделаю так:

<Timer1 Overflow>
{
obrabotka();
};

void main(void)
{
основная программа
};

void obrabotka(void)
{
Обработка прерывания
};


Будет правильно? Или в начало подпрограммы obrabotka надо вставить "SEI"?
Цитата(otrog @ Nov 30 2006, 08:50) *
По поводу второго вопроса: Определить время выполнения куска кода можно в симуляторе, например в AVR Studio.
По стабилитрону: 2,5В явно мало для уровня логической единицы, при питании контроллера от 5В. Поставьте стабилитрон на 5,1В или 4,7В и все заработает. А ИМХО полагаться только на встроенные защитные диоды как-то неправильно.

Стабилитроны были 3,9 В куплены.... но реальность оказалась суровой 2,5 В wink.gif По идее при 5-ти вольтовом питании 1,7 В - минимальный порог, а 2,5 В - гарантированный порог... Но это так, болтология, надо будет все же поставить защитный стабилитрон.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 1 2006, 17:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Screw @ Nov 30 2006, 17:34) *
Т.е. из обработчика прерывания вызвать подпрограмму обработки? А МК не будет думать, что этот код относится к обработчику (ну и загнул wink.gif ?

Можно, но увеличится время прерывания. Так делают пацаны smile.gif , когда в одном прерывании много обработчиков событий, а в проекте много файлов. Например, я вот так:
Код
#pragma vector=TIMERB0_VECTOR
__interrupt void TimerB_modul0()
{ KbdService();
  ValveService();
  BackgroundService();
  PumpsService();
  SendByteFromBuffer0();
  ChemCounterSimulation();
  SensorService();
}

(был реальный открытый проект, но на MSP, не обессудьте tongue.gif )
То есть Вам и обработку клавиш можно, как и я, включить в одно прерывание с чем-нибудь. После включения тиристоров до пятницы (следующего прерывания) контроллер абсолютно свободен.

2. По поводу лазанья глубоко и проектика.
Пока кажется, что наоборот, Вы плаваете по поверхности wink.gif
Успехов


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Screw   Много вопросов накопилось... Сильно не глумитесь   Nov 29 2006, 22:35
- - SasaVitebsk   Цитата(Screw @ Nov 29 2006, 22:35) Здравс...   Nov 29 2006, 22:49
|- - Screw   Цитата(SasaVitebsk @ Nov 29 2006, 22:49) ...   Nov 30 2006, 07:08
- - aesok   Цитата3) У Атмела существует такой AppNote - Zero-...   Nov 29 2006, 23:30
- - demaven   И самое главное - обработчик прерываний не должен ...   Nov 30 2006, 07:06
- - otrog   По поводу второго вопроса: Определить время выполн...   Nov 30 2006, 08:50
- - Wild007   По первому пункту: При входе в пп обработки прерыв...   Nov 30 2006, 09:59
|- - SasaVitebsk   Цитата(Wild007 @ Nov 30 2006, 09:59) По п...   Nov 30 2006, 16:38
|- - defunct   Цитата(SasaVitebsk @ Nov 30 2006, 16:38) ...   Dec 1 2006, 01:35
|- - SasaVitebsk   Цитата(defunct @ Dec 1 2006, 01:35) Цитат...   Dec 1 2006, 12:37
|- - defunct   Цитата(SasaVitebsk @ Dec 1 2006, 12:37) 1...   Dec 2 2006, 02:03
|- - SasaVitebsk   Цитата(defunct @ Dec 2 2006, 02:03) как м...   Dec 2 2006, 23:58
||- - defunct   Цитата(SasaVitebsk @ Dec 2 2006, 23:58) А...   Dec 3 2006, 02:09
||- - SasaVitebsk   Цитата(defunct @ Dec 3 2006, 02:09) Гм.. ...   Dec 3 2006, 16:02
||- - defunct   Цитата(SasaVitebsk @ Dec 3 2006, 16:02) М...   Dec 4 2006, 17:49
||- - SasaVitebsk   Цитата(defunct @ Dec 4 2006, 17:49) Цит...   Dec 4 2006, 21:39
|- - Сергей Борщ   Пожалуй я тоже вставлю слова, т.к. вложенные преры...   Dec 3 2006, 01:08
- - Dog Pawlowa   Цитата(Screw @ Nov 29 2006, 22:35) Надеюс...   Nov 30 2006, 10:07
- - Screw   Вообще что-то сильно я вглубь полез.... Есть у мен...   Nov 30 2006, 17:49
|- - SasaVitebsk   Цитата(Screw @ Nov 30 2006, 17:49) Вообще...   Nov 30 2006, 22:15
|- - IgorKossak   Цитата(Screw @ Nov 30 2006, 16:49) P.S. Д...   Dec 1 2006, 11:51
||- - Dog Pawlowa   Цитата(IgorKossak @ Dec 1 2006, 11:51) Ес...   Dec 1 2006, 16:52
|- - bodja74   Цитата(Screw @ Nov 30 2006, 17:49) Вообще...   Dec 1 2006, 17:28
|- - Screw   Спасибо всем за советы - как чего-нибудь надумаю -...   Dec 1 2006, 19:52
- - Dopler   Если у вас два прерывания, одно по возрастающему ф...   Nov 30 2006, 23:44
- - archi2000   Я думаю, что стабилитрон как ограничитель работать...   Dec 3 2006, 11:56
|- - bodja74   Цитата(archi2000 @ Dec 3 2006, 11:56) Я д...   Dec 3 2006, 14:54
- - Alex_Pol   В сети 310 вольт. Амплитудное значение.   Dec 3 2006, 13:37
- - xemul   И стабилитроны бывают разные. Есть с нормированием...   Dec 3 2006, 14:05
- - Alex_Pol   2 xemul Точно. Были такие 2С133В. Ток стабилизизац...   Dec 3 2006, 14:55
- - archi2000   Автор топика не говорит какой у него стабилитрон. ...   Dec 3 2006, 15:05
|- - xemul   Цитата(archi2000 @ Dec 3 2006, 15:05) Авт...   Dec 3 2006, 16:14
- - demaven   и будем греть плату и все вокруг. Прикинтье кол-во...   Dec 3 2006, 15:24
- - archi2000   Поставим 100 кОм. Но пока не сказано какая точнос...   Dec 3 2006, 15:38
- - archi2000   Итак есть ФАЗА и НОЛЬ. Ноль на вывод земли процесс...   Dec 3 2006, 16:38
|- - xemul   Цитата(archi2000 @ Dec 3 2006, 16:38) Ита...   Dec 3 2006, 16:54
- - archi2000   Да, спасибо за ответы. Я вообще не знаю зачем авто...   Dec 3 2006, 16:59
|- - xemul   Цитата(archi2000 @ Dec 3 2006, 16:59) Да,...   Dec 3 2006, 17:24
- - archi2000   Я бы такое устройство побоялся покупать без гальва...   Dec 3 2006, 19:18
|- - xemul   Цитата(archi2000 @ Dec 3 2006, 19:18) Я б...   Dec 3 2006, 19:36
- - Screw   А тема как оказалось очень живая Спасибо всем за...   Dec 3 2006, 20:33
- - archi2000   Про оптроны и тиристоры можно тут посмотреть. http...   Dec 3 2006, 20:52
- - Screw   Да общий принцип-то понятен.... интересует вся обв...   Dec 3 2006, 22:24
|- - xemul   Цитата(Screw @ Dec 3 2006, 22:24) Да общи...   Dec 3 2006, 22:41
|- - Screw   Цитата(xemul @ Dec 3 2006, 22:41) Цитата(...   Dec 3 2006, 22:57
- - demaven   Последние в списке МОСов переключаются ТОЛЬКО при ...   Dec 4 2006, 06:26
- - xemul   Цитата(demaven @ Dec 4 2006, 06:26) После...   Dec 4 2006, 14:44
- - Screw   Цитата(demaven @ Dec 4 2006, 06:26) После...   Dec 5 2006, 20:57


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 14:42
Рейтинг@Mail.ru


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