Ir ao conteúdo

Posts recomendados

Postado

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

  • Membro VIP
Postado

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
Postado

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? 

Postado

 

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.

Postado
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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!