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

 
 
> timer0 interrupt, led blinking
i.dmitry
сообщение Aug 28 2008, 18:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 8-07-07
Пользователь №: 28 963



исходные данные:
плата Olimex LPC-P2148
cpu: lpc2148
хочу: мигать светодиодом каждые 2 секунды по прерыванию от таймера 0
результат: вообще ничего не происходит (не мигает)

код задержки
Код
void Soft_Delay (DWORD N)
{
    volatile DWORD i;
    for (i=0; i<N; i++)
    {
       ;
    }
    return;
}



код main:
Код
//******************************************************************************
//  GLOBAL    DEFINITIONS
//******************************************************************************
#define TIMER0_INT 0x00000010  

#define LED 0x00000400          // P0.10 pin

#define PRESCALE_VAL 0x0001869F // TC increments on every 100000 PCLK

#define MATCH_VAL 0x00000078    // Match on 120 value (decimal)

#define MATCH_CONFIG 0x0003     // Interrupt on MR0; Reset on MR0



//******************************************************************************
//  FUNCTION    PROTOTYPE
//******************************************************************************
__irq void FIQ_Handler (void);



//******************************************************************************
//  CODE
//******************************************************************************
int main()
{
    //Fosc = 12 MHz
    Init_PLL(0x42, 0x00); // CCLK = 2*Fosc = 24 MHz; PCLK = CCLK / 4 = 6 MHz
                                  
    IO0DIR=LED;    // Set P0.10 as output
    IO0SET=LED;  // initially turn OFF LED    

    Init_Timer(PRESCALE_VAL, MATCH_VAL, MATCH_CONFIG);
    Enable_Timer(0x00);        // Timer 0 enable    
                                                      
    VICIntSelect = TIMER0_INT; //assign TIMER0 intterupt to FIQ category
    VICIntEnable = TIMER0_INT; //Enable TIMER0 interrupt
    
    while(1)
    {
       ;
    }
}

//interupt handler function
__irq void FIQ_Handler (void)
{
    IO0CLR=LED;            // turn ON LED
    Soft_Delay(10000000);  // delay
    IO0SET=LED;            // turn OFF LED
    T0IR = 0x00;           // Clear the interrupt flag  
}


код PLL_Init
Код
void Init_PLL (BYTE MP_Mask, BYTE PCLK_Mask)
{
    //set multiplier and divider of the PLL0
    PLL0CFG = MP_Mask;
    //enable PLL0
    PLL0CON = 0x1;
    //provide feed sequence
    PLL0FEED = 0xAA;
    PLL0FEED = 0x55;
    //wait until PLL0 is locked
    while (!(PLL0STAT & PLL0_LOCKED))
    {
       ;
    }
    //connect PLL0
    PLL0CON = 0x3;
    //provide feed sequence
    PLL0FEED = 0xAA;
    PLL0FEED = 0x55;
    //set peripheral clock
    VPBDIV  = PCLK_Mask;
    return;
}


Init_timer:
Код
void Init_Timer(DWORD Prescale_Val, DWORD Match_Val, WORD Match_Config)
{                                                
    T0PR = Prescale_Val;
    T0MR0 = Match_Val;
    T0MCR = Match_Config;    
    return;
}
void Enable_Timer(BYTE Timer_Num)
{
    if (Timer_Num==0)
    {
        T0TCR = 0x01;
    }
    else
    {
        T1TCR = 0x01;
    }
    return;
}


PCLK настроил на 6 МГц (VPBDIV=0 --> pclk=0.25*cclk),
в таймере Prescale настроил на 100000 чтобы счетчик считал с частотой 60 Герц (6MHz/100000), в MR записал 120 (120/60 = 2 сек), т.е. каждые 2 секнды должно быть прерывание по таймеру 0 и LED должен мигнуть.

но этого не происходит ... в чем проблема - понять не могу.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- i.dmitry   timer0 interrupt   Aug 28 2008, 18:28
- - sKWO   i.dmitry, с lpc не работал. может причина в том чт...   Aug 28 2008, 19:13
|- - i.dmitry   Цитата(sKWO @ Aug 28 2008, 23:13) i.dmitr...   Aug 28 2008, 19:36
- - aaarrr   Ужас-ужас Код//interupt handler function __irq ...   Aug 28 2008, 19:39
|- - i.dmitry   Цитата(aaarrr @ Aug 28 2008, 23:39) Ужас-...   Aug 28 2008, 20:01
|- - zltigo   Цитата(i.dmitry @ Aug 28 2008, 22:01) но ...   Aug 28 2008, 20:11
||- - i.dmitry   Цитата(zltigo @ Aug 29 2008, 00:11) 1. Ва...   Aug 28 2008, 20:25
||- - zltigo   Цитата(i.dmitry @ Aug 28 2008, 22:25) а п...   Aug 28 2008, 20:30
||- - aaarrr   Цитата(i.dmitry @ Aug 29 2008, 00:25) а п...   Aug 28 2008, 20:30
||- - zltigo   Цитата(i.dmitry @ Aug 28 2008, 22:25) нас...   Aug 28 2008, 20:32
||- - aaarrr   Цитата(i.dmitry @ Aug 29 2008, 00:25) sta...   Aug 28 2008, 20:33
|- - aaarrr   Цитата(i.dmitry @ Aug 29 2008, 00:01) но ...   Aug 28 2008, 20:13
|- - i.dmitry   Цитата(aaarrr @ Aug 29 2008, 00:13) Попро...   Aug 29 2008, 17:00
- - sKWO   Народ, подскажите а чё в ЛПС нету регистра статуса...   Aug 28 2008, 20:13
|- - aaarrr   Цитата(sKWO @ Aug 29 2008, 00:13) Народ, ...   Aug 28 2008, 20:16
|- - sKWO   Цитата(aaarrr @ Aug 28 2008, 23:16) В ARM...   Aug 28 2008, 20:19
|- - aaarrr   Цитата(sKWO @ Aug 29 2008, 00:19) Подскаж...   Aug 28 2008, 20:21
|- - i.dmitry   Цитата(aaarrr @ Aug 29 2008, 00:21) В ста...   Aug 28 2008, 20:41
- - zltigo   Полное непонимание того, что пишите и железа. Этот...   Aug 29 2008, 17:26


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

 


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


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