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

 
 
> задержка aka Delay, кто как пишет
CAHTA_1939
сообщение Aug 18 2007, 18:08
Сообщение #1


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

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



начал программировать жки ака MT-12864J. и столкнулся с необходимостью задержки на несколько нс.
for'ом уже не катит. пришла в голову мыслю использования прерывания, но вот как... хз.
нашел несколько примеров, но мне они показались странными...

напишите, кто как реализует задержку на несколько нс (сек)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Aug 19 2007, 20:57
Сообщение #2


Гуру
******

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



Для кварца 8Мгц используемого в качестве источника тактирования SMCLK

Код
#define SYSTEM_TICK_MS 1UL  //период системного тика

unsigned long tick_ms;  //счетчик системных тиков

//===================================//
// функция инициализации TimerA      //
//===================================//
void initTimerA(void) //инициализация таймераА на период счета 1мс
{ TACTL=TASSEL_2 | TACLR; //TACLK=SMCLK
  TACCR0=7999; //период (7999+1)/8000000=1мс
  TACCTL0=CCIE; //разрешим прерывание от регистра сравнения CCR0
  TACTL|=MC_1;  //запускаем в режиме счета CountUp
}
//===================================//
// обработчик прерывания CCR0 TimerA //
//===================================//
#pragma vector=TIMERA0_VECTOR
#pragma type_attribute=__interrupt
void TIMERA0_ISR(void)
{ tick_ms += SYSTEM_TICK_MS; //инкремент переменной системных тиков на заданную величину
}
//===================================//
// обработчик прерывания ошибки      //
// осциллятора                       //
//===================================//
#pragma vector=NMI_VECTOR
#pragma type_attribute=__interrupt
void osc_fault(void)
{ BCSCTL2=SELM_0|DIVM_0|DIVS_0;  //MCLK=DCO, SMCLK=DCO
  DCOCTL=DCO2|DCO1|DCO0;
  BCSCTL1=DIVA_0|RSEL2|RSEL1|RSEL0;  //ACLK=LFXT
  while ((IFG1&OFIFG)!=0) IFG1&=~OFIFG;   //Ожидаем стабилиз. колебаний кварца XT2
  BCSCTL2=SELM_0|DIVM_0|DIVS_0|SELS;  //MCLK=DCO, SMCLK=XT2/1=8МГц
  IE1|=OFIE;                  //разр. прерывание от детектора ошибки
}

//===================================//
// основной суперцикл программы      //
//===================================//
#pragma type_attribute=__task
void main(void)
{ WDTCTL=WDTPW+WDTHOLD; //остановим WDTimer
  IFG1|=OFIFG; //принудительно установим флаг ошибки осциллятора
  IE1|=OFIE;  //разрешим прерывание от детектора ошибки осциллятора
  initTimerA(); //вызов функции инициализации TimerA
//
// тут ваш код
//
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- CAHTA_1939   задержка aka Delay   Aug 18 2007, 18:08
- - Dog Pawlowa   Цитата(CAHTA_1939 @ Aug 18 2007, 21:08) н...   Aug 18 2007, 20:31
|- - CAHTA_1939   Цитата(Dog Pawlowa @ Aug 19 2007, 00:31) ...   Aug 18 2007, 20:42
|- - Dog Pawlowa   Цитата(CAHTA_1939 @ Aug 18 2007, 23:42) н...   Aug 18 2007, 20:52
|- - CAHTA_1939   Цитата(Dog Pawlowa @ Aug 19 2007, 00:52) ...   Aug 18 2007, 20:57
|- - Dog Pawlowa   Цитата(CAHTA_1939 @ Aug 18 2007, 23:57) э...   Aug 18 2007, 21:45
- - CAHTA_1939   а примерчик можешь дать?   Aug 18 2007, 21:55
|- - Dog Pawlowa   Цитата(CAHTA_1939 @ Aug 19 2007, 00:55) а...   Aug 18 2007, 22:13
- - CAHTA_1939   эм... чтото не воткну =) выложи плиз все ф-ции. пл...   Aug 18 2007, 22:30
- - rezident   Господа, вы обалдели что ли? Судя по тому, что т...   Aug 18 2007, 22:57
|- - Dog Pawlowa   Цитата(rezident @ Aug 19 2007, 01:57) Гос...   Aug 19 2007, 18:29
- - CAHTA_1939   вот блин... то есть задержки нужно мутить NOD...   Aug 18 2007, 23:06
|- - rezident   Цитата(CAHTA_1939 @ Aug 19 2007, 05:06) в...   Aug 18 2007, 23:19
- - CAHTA_1939   ну лан, с "нс" я понял , а что делать с...   Aug 19 2007, 12:54
- - VAI   Цитатакак их мутить? нужна задержка от 100мс до 10...   Aug 19 2007, 13:48
|- - rezident   Цитата(VAI @ Aug 19 2007, 19:48) У меня т...   Aug 19 2007, 17:53
- - CAHTA_1939   а можно поподробней. как настроить тикание =) ибо ...   Aug 19 2007, 19:14
- - CAHTA_1939   ппц как мудрено. а попроше нет ничего? я же тока н...   Aug 19 2007, 21:52
- - rezident   Куда уж проще-то? И так ничего лишнего. Только m...   Aug 19 2007, 22:10
- - aag   По идее можно код обработки прерывания ошибки квар...   Aug 24 2007, 06:38
|- - rezident   Цитата(aag @ Aug 24 2007, 12:38) По идее ...   Aug 24 2007, 13:51
- - FREEKER   Вот очень элементарный пример задержки Функция De...   Sep 12 2007, 19:25
|- - rezident   Цитата(FREEKER @ Sep 13 2007, 01:25) Но с...   Sep 12 2007, 20:40
- - a1ex   Вот я задержку пишу так: void delay(unsigned int ...   Dec 3 2007, 16:47
- - Сергей Борщ   Цитата(a1ex @ Dec 3 2007, 18:47) Может кт...   Dec 3 2007, 17:22


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 01:17
Рейтинг@Mail.ru


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