Página 1 de 1

Dúvida SPI

MensagemEnviado: 27 Nov 2006 07:43
por lafourcade
Oi
Eu estou seguindo as orientações do livro do Fabio e estou testando o SPI. eu fiz essa rotina simples:

cpp code
#include <hidef.h> 
#include <MC9S08QG8.h>

void main(void) {

unsigned int contdelay=0, receiv=0;

PTBDD_PTBDD7=1;
PTBD_PTBD7=0;

SPIC1 = 0x00;
SPIC2 = 0x00;
SPIBR = 0x00;
(void)(SPIS == 0); //Ele criou esse comando na Inicialização
SPIC1 = 0x50;

for(;;) {

SPID = 0xB9; // Move byte to send to SPI data register
receiv = SPID;

PTBD_PTBD7=0;

for (contdelay=40000; contdelay; contdelay--) __RESET_WATCHDOG();

PTBD_PTBD7=1;

for (contdelay=40000; contdelay; contdelay--) __RESET_WATCHDOG();

}

}


Só que eu coloco o osciloscópio no pino do clock (SPSCK) e não tem nada. Coloquei um breakpoint no programa, depois que eu atribuo valor para o SPID, e ele não seta o bit de buffer cheio. Será que eu esqueci alguma coisa?

Obrigado

MensagemEnviado: 27 Nov 2006 13:27
por Emerson
Não olhei a fundo a configuração dos registros do QG8 que vc postou, mas tem um USER GUIDE chamada HCS08QRUG (HCS08 Peripheral Module Quick Reference) no site da Freescale. Nele tem exemplos de implementação dos módulos da família HCS08.

Até mais

Emerson

MensagemEnviado: 06 Dez 2006 06:49
por lafourcade
Obrigado Emerson, dei uma olhada e tem bastante coisa ali. Não achei ainda a resposta para essa questão:

O fato de eu ficar monitorando a flag de buffer de recepção cheio: SPIS_SPRF, ja não deveria ser suficiente para mim ter a certeza de que posso mandar outro dado pela SPI? Inicialmente eu fazia só assim, mas sem aquele "for" para dar um delay entre um byte enviado e o próximo ele não funciona quando eu mando varios bytes seguidos. É muito tempo, da uns 3ms no meu firmware. Será que eu estou fazendo da melhor forma?


cpp code
unsigned char SpiReadWrite(unsigned char bn) {
unsigned int crw;

SPID = bn; // Move byte to send to SPI data register
while (SPIS_SPRF) crw=SPID;
for (crw=800; crw; crw--) __RESET_WATCHDOG();
return SPID;
}


a quem puder ajudar...

Obigado

MensagemEnviado: 06 Dez 2006 08:58
por Fábio Pereira
E que tal se você configurar corretamente os pinos da SPI ?

Lembre-se de que no modo mestre, o PTB2 deve ser uma saída, PTB3 saída, PTB4 entrada e PTB5 (se a função SS estiver ativada) uma saída.

Até +

MensagemEnviado: 18 Dez 2006 13:38
por leandrosilva
Onde eu posso encontrar esse livro do fábio?
Obrigado

MensagemEnviado: 19 Dez 2006 17:37
por Fábio Pereira