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

 
 
> delay in 10-100mks on SAM7
tokauchusya
сообщение Jun 23 2009, 21:54
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-09
Пользователь №: 50 584



Люди добрые помогите разобраться с TimerTC от SAM7.
Мне нежно реализовать на TimerTC задержку от 10-100 микросекунд, а я не пойму как там выставляются задержки. Объясните пожалуйста.

Код
void timer0_isr (void)
{
  ***
  // мигнуть диодом
}

char InitTimer()
{  
  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TC0;// Enable Clock for TIM0
  AT91C_BASE_TC0->TC_CCR    = AT91C_TC_CLKEN | AT91C_TC_SWTRG;
  AT91C_BASE_TC0->TC_CMR    = 2 | AT91C_TC_CPCTRG;
  AT91C_BASE_TC0->TC_RC     = 0x0E; // ??

  // TIM0 Interrupt: Mode and Vector with Lowest Priority and Enable
  AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE | AT91C_AIC_PRIOR_HIGHEST;
  AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned long) timer0_isr;
  AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_TC0);
  AT91C_BASE_TC0->TC_IER    = AT91C_TC_CPCS;

  return 1;
}


Здесь я пытаюсь получить 10 микросекунд, но это на самом деле не так. Что именно не так объясните. Как высчитывается коэффициент?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
tokauchusya
сообщение Jun 24 2009, 08:09
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 23-06-09
Пользователь №: 50 584



Вы так и не обьяснили, как имея рабочую частоту MCK 48 Мгц, получить определенную задержку ? По какой формуле это считаеться?
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 25 2009, 06:11
Сообщение #3


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(tokauchusya @ Jun 24 2009, 12:09) *
Вы так и не обьяснили, как имея рабочую частоту MCK 48 Мгц, получить определенную задержку ? По какой формуле это считаеться?


T1 = 1/(Fcpu/(коэффициент деления предделителя)) время изменения содержимого таймера на единицу
delay = T1*(0xFFFF - K) если прерывание по переполнению таймера, отсюда
K = 0xFFFF - (delay/T1)

delay - требуемая задержка
К - кол-во тиков таймера ( c этого значения таймер должен стартовать)

если прерывание по совпадению, то

K = delay/T1 значение регистра совпадения
начальное значение таймера = 0


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post



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

 


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


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