Não creio que seja culpa do CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Não creio que seja culpa do CCS

Mensagempor vtrx » 30 Set 2018 13:40

Minha nova distração é ficar fazendo saída de vídeo VGA.
JA fiz no STM(800X600 56hz) e agora estou fazendo no PIC18F2550,640x480 60HZ.
Uma parte da rotina de vídeo para testar as coluna consta assim:

Código: Selecionar todos
void saida_vga(void)
{
         output_b(out_vga[0]);
         output_b(out_vga[1]);
         output_b(out_vga[2]);
         output_b(out_vga[3]);   
         output_b(out_vga[4]);
         output_b(out_vga[5]);
         output_b(out_vga[6]);
         output_b(out_vga[7]);   
         output_b(out_vga[8]);
         output_b(out_vga[9]);
         output_b(out_vga[10]);
         output_b(out_vga[11]);   
         output_b(out_vga[12]);
         output_b(out_vga[13]);
         output_b(out_vga[14]);
         output_b(out_vga[15]);   
         output_b(out_vga[16]);
         output_b(out_vga[17]);
         output_b(out_vga[18]);
         output_b(out_vga[19]);   
         output_b(out_vga[20]);     
         output_b(out_vga[21]);   
         output_b(out_vga[22]);   
         output_b(out_vga[23]);   
         output_b(out_vga[24]); 
         output_b(out_vga[25]);   
         output_b(out_vga[26]);
         output_b(out_vga[27]);   
         output_b(out_vga[28]); 
         output_b(out_vga[29]);   
         output_b(out_vga[30]);     
         
         output_b(out_vga[31]);
         output_b(out_vga[32]);
         output_b(out_vga[33]);
         output_b(out_vga[34]);   
         output_b(out_vga[35]);
         output_b(out_vga[36]);
         output_b(out_vga[37]);
         output_b(out_vga[38]);   
         output_b(out_vga[39]);
         output_b(out_vga[40]);
         output_b(out_vga[41]);
         output_b(out_vga[42]);   
         output_b(out_vga[43]);
         output_b(out_vga[44]);
         output_b(out_vga[45]);
         output_b(out_vga[46]);   
         output_b(out_vga[47]);
         output_b(out_vga[48]);
         output_b(out_vga[49]);
         output_b(out_vga[50]);   
         output_b(out_vga[51]);     
         output_b(out_vga[52]);   
         output_b(out_vga[53]);   
         output_b(out_vga[54]);   
         output_b(out_vga[55]); 
         output_b(out_vga[56]);   
         output_b(out_vga[57]);
         output_b(out_vga[58]);   
         output_b(out_vga[59]); 
         output_b(out_vga[60]);     
         
         output_b(out_vga[61]);
         output_b(out_vga[62]);
         output_b(out_vga[63]);
         output_b(out_vga[64]);   
         output_b(out_vga[65]);
         output_b(out_vga[66]);
         output_b(out_vga[67]);
         output_b(out_vga[68]);   
         output_b(out_vga[69]);
         output_b(out_vga[70]);
         output_b(out_vga[71]);
         output_b(out_vga[72]);   
         output_b(out_vga[73]);
         output_b(out_vga[74]);
         output_b(out_vga[75]);
         output_b(out_vga[76]);   
         output_b(out_vga[77]);
         output_b(out_vga[78]);
         output_b(out_vga[79]);
         output_b(out_vga[80]);   
         output_b(out_vga[81]);     
         output_b(out_vga[82]);   
         output_b(out_vga[83]);   
         output_b(out_vga[84]);   
         output_b(out_vga[85]); 
         output_b(out_vga[86]);   
         output_b(out_vga[87]);
         output_b(out_vga[88]);   
         output_b(out_vga[89]); 
         output_b(out_vga[90]);   
         output_b(out_vga[91]);     
         
         output_b(out_vga[92]);
         output_b(out_vga[93]);
         output_b(out_vga[94]);
         output_b(out_vga[95]);   
         output_b(out_vga[96]);
         output_b(out_vga[97]);
         output_b(out_vga[98]);
         output_b(out_vga[99]);   
         output_b(out_vga[100]);
         output_b(out_vga[101]);
         output_b(out_vga[102]);
         output_b(out_vga[103]);   
         output_b(out_vga[104]);
         output_b(out_vga[105]);
         output_b(out_vga[106]);
         output_b(out_vga[107]);   
         output_b(out_vga[108]);
         output_b(out_vga[109]);
         output_b(out_vga[110]);
         output_b(out_vga[111]);   
         output_b(out_vga[112]);     
         output_b(out_vga[113]);   
         output_b(out_vga[114]);   
         output_b(out_vga[115]);   
         output_b(out_vga[116]); 
         output_b(out_vga[117]);   
         output_b(out_vga[118]);
         output_b(out_vga[119]);   
         output_b(out_vga[120]);
         output_b(out_vga[121]); 
       
}


out_vga são as posições da RAM.
Esta rotina pode ser chamada dentro da interrupção do TIMER0 e funciona como esperado,gerando as barra de cores,mas se eu for 'agilar' o código fazendo um Looping,tipo:
Código: Selecionar todos
 for(l=0; l<120; l++)
 {
  output_b(out_vga[l]); 
 }

Não funciona.
Ou a interrupção não é gerada,ou o tempo é muito longo desta rotina(mesmo fazendo Looping de 3 posições) ou não sei o que é.
Não interessa onde esta a variável l,nem interessa se a rotina está fora ou dentro da interrupção,mas sem o Looping,a rotina pode ser usada dentro ou fora da interrupção.
Alguém tem uma ideia?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Não creio que seja culpa do CCS

Mensagempor cfreund » 30 Set 2018 16:56

São dois resultados totalmente diferentes. Da uma olhada no ASM gerado.

Além disso, no primeiro vc está indo até 121 e 119 no segundo.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Não creio que seja culpa do CCS

Mensagempor vtrx » 04 Out 2018 09:29

Algum usuário do CCS sabe como carregar o conteúdo de uma variável no registrador WORK?

Código: Selecionar todos
void Saida()

{
 int8 count;
 
   #asm
    movlw 121
    movwf count
  SAIDA: 
 //   movlw  5//Buf_VGA[count]
    movwf  PORTB
    decfsz count
    goto  SAIDA
  FIM: 
   #endasm
}
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x