![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Annuta |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 3.10.2006 Где: Dubna Репутация: нет Всего: 1 |
Привет всем.! Только знакомлюсь с работой с контролерами и решила написать прогу которая бы устанавливала бы определённую частоту прерываний, ну например 20КГц. В хелпе вижу примерчик
Этот пример устанавливает частоту прерываний в 10 КГЦ -- как мне его изменить.. как вообще рассчитать частоту прерываний..??? Делаю эту прогу - хочу посмотреть миандр на осциллографе... А на какой ножке будет сигнал...?? Буду очень признательна за подробный ответ и пример... спасибо. --------------------
Программист - это комбинация лени и логики ! |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Если я правильно понял, этот контроллер какой-то из 51 контроллеров. У большинства этих контроллеров на вход таймера подаётся частота кварца делённая на 12. Во время переполнения таймера происходит прерывание.
Для расчёта времени между двумя прерываниями используем формулу: время_в_микросекундах = (1/(частота_кварца_в_мегагерцах/12))*(255 - значение_регистра_TH1) В твоём коде добавлю комментарии /* * Timer 1 Interrupt Service Routine: executes every 100 clock cycles */ static unsigned long overflow_count = 0; void timer1_ISR (void) interrupt 3 { overflow_count++; // Increment } void timer () { TMOD = (TMOD & 0x0F) | 0x10; TH1 = 256 - 100;// таймер переполняется после 100 инкрементов, меняя это число можешь менять // время которое будет выдерживать твой таймер TL1 = TH1; ET1 = 1; TR1 = 1; EA = 1; while (1); Добавлено @ 18:43 да, ещё, чтобы увидеть меандр на ножке измени код функции обслуживания прерывания data unsigned char my_timer = 0;// добавляем переменную счётчик void timer1_ISR (void) interrupt 3 { overflow_count++; // Increment my_timer++; P1 = my_timer; } после этого на выходах порта P1 ты можешь наблюдать прямоугольные импульсы. Если контроллер в 40выводном DIP-корпусе то это выводы с 1 по 8, если в другом,то смотри даташит на контроллер. -------------------- Мне нужны помощники. |
|||
|
||||
Annuta |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 3.10.2006 Где: Dubna Репутация: нет Всего: 1 |
... ОООГРОМНОЕ спасибо Mazzi, за подробный ответ, я попробывала, но меандры не получила... к сожелению... написала так...
Может чё нить не правильно написала...гляньте опытным глазом.... Это сообщение отредактировал(а) Annuta - 20.3.2007, 10:51 --------------------
Программист - это комбинация лени и логики ! |
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 1 Всего: 12 |
Annuta, а что-то хоть получила, или вообще ничего?
Добавлено @ 11:09
А2 - это порт? -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
Annuta |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 3.10.2006 Где: Dubna Репутация: нет Всего: 1 |
Да ... там сигнал равен стабильно 1 ... и он не меняется... может надо осциллограф настроить по другому...???
или сделать такой вызов ???
вместо моего ??? У меня порт А на нём вывод (ножка) A2 вот ... .... сама нашла баг... ![]() надо было так писать
.... спасибо всем за помощь ![]() Это сообщение отредактировал(а) Annuta - 20.3.2007, 11:31 --------------------
Программист - это комбинация лени и логики ! |
||||
|
|||||
Metal_Heart |
|
||||
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 1 Всего: 12 |
сделай так:
Добавлено @ 11:37 Просто Mazzi своим кодом:
писал целый байт в 8-разрядный порт, в результате на младшем разряде порта ты бы могла видеть миандр наивысшей частоты... а в твоем случае, как я понял, это лишь одна нога, поэтому надо бы "экранировать" с помощью &1 (можно и с другим числом ![]() Добавлено @ 11:38 Annuta, молодец! Добавлено @ 11:39 не забудь тему пометить как решенную ![]() -------------------- не стыдно учиться, а стыдно не учиться |
||||
|
|||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |