Problemas com o TIMER no LPC2138

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Problemas com o TIMER no LPC2138

Mensagempor rbartholomay » 11 Jul 2011 16:39

Estou com um problema nas rotinas de delay do livro do Daniel (O poder dos 32bits) com o LPC2138. A rotina não estava funcionando com o tempo certo. Sempre ficava em torno de 16% mais lento. Coloquei na rotina do delay a multiplicação por 1.16. Depois de multiplicar o registrador o tempo do delay ficou certo. Porém quando fui testar o canal serial é logico que não funcionou. Só enviava lixo usando o hiperterminal do Windows. Troquei o cristal de 10MHz por outro também de 10MHz pensando que poderia estar com problema no cristal, mas o problema continuou. Se alguém tiver uma dica agradeço muito.
Abraços
Roberto

void PLL_init(void){
PLLCFG = 0X00000046; //Configura M = 6 e P = 2 para uma freqüência
//de 60MHz com cristal de 10MHz
PLLCON = 0X00000001; //Habilita PLL
PLLFEED = 0X000000AA;
PLLFEED = 0X00000055; //Atualiza os registradores
while(!(PLLSTAT & 0X00000400)); //Testa PLOCK
PLLCON = 0X00000003; //Conecta ao PLL
PLLFEED = 0X000000AA;
PLLFEED = 0X00000055; //Atualiza os registradores
VPBDIV = 0X00000002; //Configura Pclk = 30MHz (Cclk/2)
//60MHz / 2 = 30MHz
}

void delay_1ms_x(unsigned int x){
T0MR0 = x * 0x0000012C; //CARREGA T0MR0 VALOR DE COMPARACAO = 100(96)
T0MR0 = T0MR0 * 1.16;
T0IR |= 0x00000001; //LIMPA FLAG DO T0MR0
MA_Start_TIMER(0,1); //LIGA TIMER
while(!(T0IR & 0x00000001));//SE FLAG DO T0MR0 FOR 1, SAI DA FUNÇÃO
}
rbartholomay
 
Mensagens: 4
Registrado em: 29 Set 2007 18:38
Localização: Brasil

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x