Moderadores: 51, guest2003, Renie, gpenga
fabim escreveu:Cara eu estou fulo com isso, ou sei lá que esta acontecendo com esse fdp..
To utilizando o TMR0 com Math0 interrupt e reset no estouro....
Eu estou configurando o seguinte.
CCLOCK = 102mhz..
Ou seja a fonte de clock para os perifericos é de 102mhz. Estou jogando direto no timer sem preescaler.
o tempo que eu estou utilizando para comparaçao do math0 =.
(1/12000) / (1/102000000) == 102000000/12000.
Acontece que o frame rate, fica 4X maior!!!!!
no user manual fala que eu não pego o sinal do PLL0 out, e sim na saida de clock que vai para CPU.
Que coisa estranha, eu procurei errata e nao achei nada..
57: LPC_DAC->DACR = sample; //3 ciclos "ja subtraido do timer"
0x00004088 4920 LDR r1,[pc,#128] ; @0x0000410C
0x0000408A 9800 LDR r0,[sp,#0x00]
0x0000408C 6008 STR r0,[r1,#0x00]
58: ((char *)&sample)[1] = *dados; //4 ciclos
0x0000408E 481C LDR r0,[pc,#112] ; @0x00004100
0x00004090 6800 LDR r0,[r0,#0x00]
0x00004092 7800 LDRB r0,[r0,#0x00]
0x00004094 F88D0001 STRB r0,[sp,#0x01]
59: sample |= 0x00010000; // 3 ciclos
0x00004098 9800 LDR r0,[sp,#0x00]
0x0000409A F4403080 ORR r0,r0,#0x10000
0x0000409E 9000 STR r0,[sp,#0x00]
60: dados++; // 5 ciclos
0x000040A0 4817 LDR r0,[pc,#92] ; @0x00004100
0x000040A2 6800 LDR r0,[r0,#0x00]
0x000040A4 1C40 ADDS r0,r0,#1
0x000040A6 4916 LDR r1,[pc,#88] ; @0x00004100
0x000040A8 6008 STR r0,[r1,#0x00]
61: tamanho--; // 5 ciclos
0x000040AA 4816 LDR r0,[pc,#88] ; @0x00004104
0x000040AC 6800 LDR r0,[r0,#0x00]
0x000040AE 1E40 SUBS r0,r0,#1
0x000040B0 4914 LDR r1,[pc,#80] ; @0x00004104
0x000040B2 6008 STR r0,[r1,#0x00]
62: if(tamanho==0) acabou();
0x000040B4 4608 MOV r0,r1
0x000040B6 6800 LDR r0,[r0,#0x00]
0x000040B8 B910 CBNZ r0,0x000040C0
0x000040BA 2001 MOVS r0,#0x01
0x000040BC 4912 LDR r1,[pc,#72] ; @0x00004108
0x000040BE 7008 STRB r0,[r1,#0x00]
63: LPC_TIM0->IR = 1; /* clear interrupt flag */
64: return;
proex escreveu:Incremento no ARM :
dados++; // 5 ciclos
LDR r0,[pc,#92]
LDR r0,[r0,#0x00]
ADDS r0,r0,#1
LDR r1,[pc,#88]
STR r0,[r1,#0x00]
Incremento no PIC:
dado++; // 1 ciclo
INCF dado,f
Ai que saudade que dá !!!!
.
void TIMER0_IRQHandler(void)
{
*LPC_DAC_DACRL = *dados++;
*LPC_DAC_DACRH = 0x0001;
if (dados==(dados+tamanho))
acabou();
*LPC_TIM0_IR = 1;
return;
}
void TIMER0_IRQHandler(void)
{
*LPC_DAC_DACRL = dados[idx++];
*LPC_DAC_DACRH = 0x0001;
if (idx==tamanho)
acabou();
*LPC_TIM0_IR = 1;
return;
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante