Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Установка таймера для AT91SAM7S256
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
AlfaStar
Помогите, пожайлуста... Необходимо установить таймер для светодиода.. Может у кого есть какой нибудь пример работающий на C.
mirr
можно вот так:
Код
  // обработчик прерывания. вызывается через 1 сек
  void TC0_ISREntry( void )
  {
    unsigned long STATUS = AT91C_BASE_TC0->TC_SR;
    
    //тут изменяешь состояние светодиода

    AT91C_BASE_AIC->AIC_IVR = 0;                          
    AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);  
    /* End the interrupt in the AIC. */
    AT91C_BASE_AIC->AIC_EOICR = 0;  
  }

  // ---------------- INITIALIZE TCO ----------------
  AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_TC0);  
  AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
  AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF;
  AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV5_CLOCK | AT91C_TC_CPCTRG;
  AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
  AT91C_BASE_TC0->TC_RC = 46285;                          // MCK / 1024 = 47,4МГц / 1024 => 1 сек
  AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
  AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;
  // ---------------- INITIALIZE AIC FOR TCO ----------------
  AT91C_BASE_AIC->AIC_IDCR = (1 << AT91C_ID_TC0);
  AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) TC0_ISREntry;
  AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 0x3;
  AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);
  AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_TC0);

AlfaStar
Спасибо за программу... После штудирования ДАташит, все заработало...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.