Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Всех связистов с праздником!!! Вопросик есть по меге 8, по таймерам
Отправлено
Метценгерштейн
(213.33.244.142)
07 мая 2010, г. 11:14
если я инициализирую таймер как
TCCR0 = (0<<CS02)|(0<<CS01) |(1<<CS00); //none prescaled
т.е. без предделителя, а в ф-ии обработки прерывания сделаю так:
#pragma vector = TIMER0_OVF_vect // when counter 0 will interrupt
__interrupt void overflow_timer1(void) // this function will be do
{
CntT0++;
}
что получится? при каждом тике я буду сюда вваливаться и инкрементировать переменную? А основную прогу буду успевать делать?
Составить ответ
|
Вернуться на конференцию
Ответы
если под тиком подразумевать 256 тактов, то будете вваливаться
-
mandigit
(07.05.2010, 11:21:19
91.79.36.202
, 107 байт)
Не на каждом тике. А на 256-ом или 65536-ом. Вы забыли о собственном счетчике таймера.
-
Doppler
(07.05.2010, 11:19:8
87.213.66.226
,
пустое
)
т.е. минимум это кварц/ 256 так?
-
Метценгерштейн
(07.05.2010, 11:20:15
213.33.244.142
,
пустое
)
Что значит минимум? Если Вы в обработчике перезагрузите таймер значением например 250, то уже через 6 тиков он опять сработает. Или выберите режим работы таймера с автоперезагрузкой. Тогда можно получить прерывания с ПОЧТИ частотой тактирования таймера. Что вам на самом деле надо-то?
-
Doppler
(07.05.2010, 11:29:25
87.213.66.226
,
пустое
)
надо прерывания, не зависимые от программы, т.е. стабильность отсчетов
-
Метценгерштейн
(07.05.2010, 11:38:37
213.33.244.142
,
пустое
)
Ловушка заключается в слове "стабильных". Насколько стабильных? Оно будет гулять +-несколько тактов, в зависимости какая инструкция основной программы прерывалась. Поэтому например буквы в телевизионном сигнале будут очень сильно дрожать на каждой строке (если не принимать особых, извращенных мер) .
-
Doppler
(07.05.2010, 11:45:59
87.213.66.226
,
пустое
)
в принципе, эта стабильность устраивает, т.е. если мне надо прерваться через 143 тика, то предустанавливаю в регистр значение 113? Вопрос- в какой регистр (пока читаю) и как включить режим автопредустановки
-
Метценгерштейн
(07.05.2010, 11:48:35
213.33.244.142
,
пустое
)
Как-то так.
-
Doppler
(07.05.2010, 12:09:16
87.213.66.226
, 436 байт)
гляньте, пож-ста, ничего не забыл (+)
-
Метценгерштейн
(07.05.2010, 14:47:57
213.33.244.142
, 643 байт)
Не забыть объявить переменную CntMC volatile. А если она более 8 бит, то еще и считывать в основной программе ее дважды и сравнить значения. Если разные, то считывать пока два последовательные чтения не дадут одинаковый результат.
-
Doppler
(07.05.2010, 15:06:55
87.213.66.226
,
пустое
)
а с регистрами правильно все? это мега8
-
Метценгерштейн
(07.05.2010, 15:19:18
213.33.244.142
,
пустое
)
Ну ёлы-палы, прошей и посмотри. Не забудь разрешить глобальные прерывания. И переключение тестового пина в прерывании от таймера, да стань на нем осциллографом. Сразу все и увидишь.
-
Doppler
(07.05.2010, 15:37:17
87.213.66.226
,
пустое
)
программатор сломался ((( другого нет под рукой- только теория пока.
-
Метценгерштейн
(07.05.2010, 15:38:35
213.33.244.142
,
пустое
)
Типо то что паял ?! у меня два уже год пашут
-
MegaJohn
(07.05.2010, 16:01:19
81.222.85.88
,
пустое
)
он, но похоже, что дело в макетке, т.к. желтая лампочка мигает при передаче символа. осцилла тоже нет под рукой
-
Метценгерштейн
(07.05.2010, 16:10:20
213.33.244.142
,
пустое
)
там светодиоды =)))
-
MegaJohn
(07.05.2010, 18:18:14
81.222.85.88
,
пустое
)
Прекрасный повод открыть даташит на разделе "timer-counter" ;-) Удачи!
-
Doppler
(07.05.2010, 15:44:24
87.213.66.226
,
пустое
)
))) там и сижу. спасибо. удачи
-
Метценгерштейн
(07.05.2010, 15:48:6
213.33.244.142
,
пустое
)
тьфу, нада так оформлять
-
MegaJohn
(07.05.2010, 13:34:42
81.222.85.88
, 119 байт)
Женя, а разве TIMER0 имеет СТС режим? в даташите речь только про таймер1
-
Метценгерштейн
(07.05.2010, 13:36:9
213.33.244.142
,
пустое
)
ты бы еще бы at90s4433 юзал ! Я использую мега88, и в зависимости какой код потом применяю либо 48 либо 168
-
MegaJohn
(07.05.2010, 13:41:5
81.222.85.88
,
пустое
)
что было, то и поставил. а их что, уже сняли с производства? я вообще недавно ещё под AT90S2313 писал ))
-
Метценгерштейн
(07.05.2010, 13:44:34
213.33.244.142
,
пустое
)
не сняли, есть mega8a. Но мне нужон DebugWire и пожирнее периферия, поэтому под мелкие проекты юзаю 88
-
MegaJohn
(07.05.2010, 13:47:33
81.222.85.88
,
пустое
)
ясно, потом поглядим на него
-
Метценгерштейн
(07.05.2010, 13:48:12
213.33.244.142
,
пустое
)
в меге8 с счетчике 0 есть режим СТС?
-
Метценгерштейн
(07.05.2010, 13:31:33
213.33.244.142
,
пустое
)
похоже, надо режим с предзагрузкой
-
Метценгерштейн
(07.05.2010, 11:43:8
213.33.244.142
,
пустое
)
а, точно. при каждом тике будет регистр счетчика 8 бит увеличиваться до переполнения- тогда и прерывание. вроде так.
-
Метценгерштейн
(07.05.2010, 11:21:21
213.33.244.142
,
пустое
)
читай gaw.ru
-
MegaJohn
(07.05.2010, 11:35:41
81.222.85.88
,
пустое
)
или ДШ
-
MegaJohn
(07.05.2010, 11:35:56
81.222.85.88
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 654:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru