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

 
 
> AT91sam7s->TC, Не пойму что считает.
D!m@
сообщение Jun 15 2010, 17:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901



Привет.

Настроил Т2 на измерение время импульсов. Импульс подаю 50Гц -> 20мс
А счетчик дает значение примерно 87136->3.6ms (1 переполнение и рег. захвата). MCK=48MГц или нет?
Настроен на TIMER_CLOCK1->MCK/2
Я не правильно МСК считаю или как??

Стоит кварц 18.432 МГц. стартап: стандарт
Код
// Initialize main oscillator
    AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));

    // Initialize PLL at 96MHz (96.109) and USB clock to 48MHz
    //18432000Hz / 14 * (72+1) = 96109714MHz
  
    AT91C_BASE_PMC->PMC_PLLR = BOARD_USBDIV | BOARD_CKGR_PLL | BOARD_PLLCOUNT
                               | BOARD_MUL | BOARD_DIV;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK));

    // Wait for the master clock if it was already initialized
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

    // Switch to slow clock + prescaler
    AT91C_BASE_PMC->PMC_MCKR = BOARD_PRESCALER; //2
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));


таймер:
Код
unsigned int over=0;
unsigned int mas[1000];
unsigned char count=0;
static void ISR_TC2(void)
{
   unsigned int uiSR = AT91C_BASE_TC2->TC_SR;
    if( (uiSR & AT91C_TC_COVFS) )
   {
       over++;
   }
   if( (uiSR & AT91C_TC_LDRAS) )
   {
       mas[count] = AT91C_BASE_TC2->TC_RA;
       count++;
       over=0;
   }
  
    
}
void InitTC()
{
  
    //AIC configure.
    AT91C_BASE_AIC->AIC_IDCR = 1 << AT91C_ID_TC2;     // Disable the interrupt first
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC2] = 0;
    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC2] = (unsigned int) ISR_TC2;
    AT91C_BASE_AIC->AIC_ICCR = 1 << AT91C_ID_TC2;     // Clear interrupt
    AT91C_BASE_AIC->AIC_IECR = 1 << AT91C_ID_TC2;     // Enables interrupts
    
  
    
    // Enable PWMC peripheral clock
    AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TC2;
    
    // Disable TC clock
    AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKDIS;

    // Disable interrupts
    AT91C_BASE_TC2->TC_IDR = 0xFFFFFFFF;

    // Clear status register
    AT91C_BASE_TC2->TC_SR;

    // Set mode
    AT91C_BASE_TC2->TC_CMR = AT91C_TC_CLKS_TIMER_DIV1_CLOCK | // MCK/2
                             AT91C_TC_BURST_NONE |
                             AT91C_TC_EEVTEDG_RISING |//AT91C_TC_EEVTEDG_BOTH |
                             AT91C_TC_ABETRG |    
                             AT91C_TC_LDRA_RISING;//AT91C_TC_LDRA_BOTH; // each edge of TIOA
    // Enable interrpt
    AT91C_BASE_TC2->TC_IER = AT91C_TC_COVFS | // Counter Overflow
                             AT91C_TC_LDRAS;  // RA Loading
    
    // Start TC2  
    AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG;
    
     // connect to PIO for TIOA2
    AT91C_BASE_PIOA->PIO_BSR= AT91C_PA26_TIOA2;
    AT91C_BASE_PIOA->PIO_PDR = AT91C_PA26_TIOA2;
}



Как и что, мне настроить, чтоб измерять точно время импульсов???
На АВР просто - какой кварц такая и частота, а на АРМ ПЛЛ с какой точностью умножает и делит?
Можно таймер тактировать от кварца? (бес умножений и делений)

Сообщение отредактировал D!m@ - Jun 15 2010, 17:20
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
D!m@
сообщение Jun 15 2010, 18:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 10-04-07
Пользователь №: 26 901



25.9.10 PMC Master Clock Register
Register Name: PMC_MCKR
Access Type: Read-write
• CSS: Master Clock Selection
• PRES: Processor Clock Prescaler

CSS Clock Source Selection
0 0 Slow Clock is selected - что значит ?????????
0 1 Main Clock is selected - что значит ?????????
1 0 Reserved
1 1 PLL Clock is selected.
PRES Processor Clock
0 0 0 Selected clock
0 0 1 Selected clock divided by 2
0 1 0 Selected clock divided by 4
0 1 1 Selected clock divided by 8
1 0 0 Selected clock divided by 16
1 0 1 Selected clock divided by 32
1 1 0 Selected clock divided by 64

Этим регистром можно настроить MCK – непосредственно кварц а проц через PLL ???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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