Página 1 de 1

Problemas com clock

MensagemEnviado: 30 Nov 2010 11:03
por denis neves
Fala pessoal...

estou trabalhando com um MSP430F149 e estou tendo problemas em configurar o clock do bichinho !!!

Tenho o livro do Fabio Pereira, estava lendo a teoria e vi que esse MSP tem varias fontes de clock.

Bom, configurei o XT2 (cristal de 8MHs) como fonte de clock principal e também como fonte para o SMCLK de acordo com a teoria do livro.

Fiz uma rotina para fazer um toogle de um pino na rotina principal do programa e constatei que a frequência gerada por essa rotina não ultrapassa os 700KHz !!!

Alguém poderia me ajudar com a configuração do clock do dito cujo ???

Muito obrigado,

Denis.

MensagemEnviado: 28 Mar 2011 00:34
por luisf.rossi
Bom.. posta o seu código e compilador para podermos ajudar.. eu realmente nunca vi os livros do Fabio Pereira.. acho melhor ir direto a fonte dos conhecimentos (o datasheet, ou no cado o User's Guide).

De uma olhada na pagina 4-12 (121 do pdf) com um exemplo de como proceder.

De modo geral o que você deve fazer é configurar o Bit 7 do BCSCTL1 (ou XT2OFF), zerar o OFIFG, esperar 50us e olhar o OFIFG. Se ele não estiver em zer quer dizer que deu algo de errado na inicialização do clock, dai repete tudo até funcionar. Depois que ele estiver estavel voce configura os Bits SELMx e SELS do BCSCTL2.

Abs

MensagemEnviado: 06 Abr 2011 15:19
por denis neves
Bom...acabei trocando de modelo de MSP...agora estou usando o MSP430FG439 pois tive a necessidade de um canal de DA. Mas ainda estou com problemas no clock....bom, não sei se é um problema ou se é limitação de hardware !!!

Fiz um código no IAR para testar o sistema de clock :

#include <msp430xG43x.h>

void main(void)
{
volatile unsigned int i;

WDTCTL = WDTPW + WDTHOLD;

P6DIR = 0xff; //configura o PORT P6 como saída
P6OUT = 0x00; //zera o PORT P6

//xxxxxxxxxxxxxxxxxxxxxxx Configuração do clock xxxxxxxxxxxxxxxxxxxxxxxxxxx

do
{
IFG1 &= ~OFIFG;
for (i = 0; i < 1000; i++);
} while(IFG1 & OFIFG); //zera o flag do clock

FLL_CTL1 = 0x14; // liga XT2, SMCLK = XT2CLK, MCLK = SMCLK

P1DIR |= 0x32; // Configura P1.5,P1.4 e P1.1 como saida
P1SEL = 0x32; // Configura P1.5,P1.4 e P1.1 como saida de clock
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

while(1)
{
P6OUT ^= 0xff; //toogle no port P6

}
}

O que vejo no osciloscópio não passa dos 625KHz....acho estranho, pois estou usando um cristal de 4MHz no XT2 !!!....não deveria dar os mesmos 4MHz no toogle ???

Na saída de clock do SMCLK (P1.4) eu consigo ver os 4MHz, mas a CPU não passa dos 625KHz !!!

Luis, eu estou achando que isso é uma limitação de hardware !!!...peço ajuda a vocês do fórum para esclarecer essa minha duvida.

Muito obrigado,

Denis.

MensagemEnviado: 06 Abr 2011 15:20
por denis neves
..

MensagemEnviado: 06 Abr 2011 19:40
por andre_luis
As saídas de clock estão "bem-comportadas", ou sofrem alguma alteração numa cadencia fixa ?
( Acredito que o Watchdog esteja atuando e voce não o esteja ressetando )

+++

MensagemEnviado: 07 Abr 2011 00:14
por luisf.rossi
Bom primeiramente o fato de o seu processador estar rodando a 4Mhz não garante que você consegue chavar seus pinos nesta frequencia. Depende da arquitetura do microcontrolador. Por exemplo, um PIC32 a 80Mhz consegue chavear o sue pino a 80Mhz.. ja um AVR32 a 66Mhz consegue chavear a 33Mhz.. e um Cortex-M3 auns 72Mhz acredito que no maximo uns 16Mhz.

Segundo .. você não esta setando o clock do seu processador para o XT2, apenas o SMCLK e terceiro você tem que ajustar o XT2S no FLL_CTL2 para a frequencia correta.

Um bom modo de você descobrir qual o seu clock é colocando a UART para funcionar. Isso não vai ter erro.

Abs

MensagemEnviado: 07 Abr 2011 10:00
por denis neves
Olá andre_teprom,
as saídas de clock estão bem comportadas sim !!!....consigo ver os 4MHz bunitinho na saída do SMCLK (P1.4) !!!!....será que o WATCHDOG está atuando ?!?!...eu desativei ele no inicio do programa !!!
( WDTCTL = WDTPW + WDTHOLD;).

Olá Luis,
eu configurei o MCLK para XT2...

(FLL_CTL1 = 0x14;) que é igual a (FLL_CTL1 = 00010100)...aqui eu ligo o XT2 e configuro o MCLK e o SMCLK para XT2 !!!

O MSP430FG439 não possui o registrador FLL_CTL2 !!!...basta configurar o registrador FLL_CTL1 !!!

Ok...vou fazer os testes com a UART !!!

Muito o brigado a todos,

Denis.

MensagemEnviado: 07 Abr 2011 19:17
por andre_luis
denis neves escreveu:...consigo ver os 4MHz bunitinho na saída do SMCLK (P1.4)...


Então o problema está resolvido, não é mesmo ?
Voce nunca vai conseguir uma saída manipulada pelo firmware com a frequencia do OSC, já que as microinstruções, mesmo num uC RISC consomem alguns ciclos de máquina.

+++

MensagemEnviado: 08 Abr 2011 08:55
por denis neves
Olá Andre,

é eu suspeitava que poderia ser isso mesmo, mas não imaginava que teria tanta diferença !!!...estou usando um cristal de 4MHz e o uC não consegue rodar meu firmware pra fazer um simples toogle a mais do que 625K !!!

Vou ter que mudar de uC !!!...talvez use um dsPIC !!!

Depois posto os resultados !!!

Muito obrigado,

Denis.