Ir ao conteúdo
  • Cadastre-se

PIC 40mhz no pic 18f4520


Posts recomendados

ola galera tudo bem ? Eu novamente com uma duvida com relação ao PIC.... Estou tentando configurar meu pic para utiliza-lo em 40MHz e pelo que vi no datasheet deve ser habilitado o OSC como HSPLL, pois o PLL é um fator multiplicativo de OSC1, mais adiante vi que ele serve para multiplicar OSC1 por 4 ou  dividir se não me enganei... pois bem, para ele chegar aos 40MHz deve ser utilizado um cristal de 10Mhz e configurar o OSC para HSPLL, então testei e vi que ficou mais lento, então criei um programa bem basico só para analisar a frequencia que esta sendo gerada:

void main(void) {
    TRISB = 0;
    LATB = 0;
    while(1){
        LATBbits.LATB7 = 1;
        LATBbits.LATB7 = 0;
    }
}

na minha saida RB7 esta saindo uma frequencia de 2,5Mhz e nao os 40MHz como havia previsto ( na pratica ), esta dividindo em vez de multiplicar. Alguem sabe configurar isso exatamente?

 meu hardware de teste segue abaixo ( utilizando 18F4520 e cristal de 10MHz).

 

Sem título.png

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Cada instrução em assembly leva determinado número de ciclos de clock pra ser executada. E geralmente o clock ou ciclo de instrução não é exatamente o valor máximo do cristal ou pll. Por gentileza, analise o assembly que o compilador gerou e consulte o datasheet do seu mc pra ver as coerências temporais.

 

Pra testar a velocidade máxima do pino, tente fazer direto em asm algo como:

comeco:
bsf PORTB,0
bcf PORTB,0
goto comeco

Por favor, confira no instruction set do seu mc

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

adicionado 10 minutos depois

Como você já deve ter visto o vídeo a frequência do pino com um cristal de 16MHz externo é de 1Mhz.

Esse teu 2,5Mhz confirma um aumento dessa frequência com o multiplicador.

Link para o comentário
Compartilhar em outros sites

Em 18/10/2017 às 19:33, Zago10 disse:

vou testar... mas ainda assim, com tão poucas instruções operando em 40Mhz a oscilação seria tão baixa de 2,5Mhz se comparado a 40? 

Então,quando você coloca 40mhz,vai executar há 10mhz,dividir por 4(verificar cap 5.2 do datasheet para entender).Então efetivamente executa 10mhz de instrução,para levar 1 ou 0 gasta 1 ciclo cada,o goto gasta 2 ciclos(veja na tabela 24-2 do datasheet),então naquele loop gasta 4 ciclos,como funciona efetivamente a 10mhz,gera uma saida de 2.5Mhz.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...