Página 1 de 1
Interface de Comunicação SCI

Enviado:
15 Jan 2008 15:20
por Giovak
Boa tarde, estou tentando utilizar a interface de comunicação serial SCI.
Tenho dois microcontroladores AW, onde quero transmitir e receber nas duas, mais não ao mesmo tempo ou seja uma comunicação half-duplex.
Para ser mais especifico queria saber como configurar os registradores e as funções de transmissão e recepção em "C".
Eu consegui transmitir e receber utilizando dois pinos qualquer do micro, mais não consegui utilizar os pinos Tx e Rx do micro.
Muito obrigado.

Enviado:
15 Jan 2008 16:05
por Fábio Pereira
Você já tentou com os exemplos do meu livro sobre HCS08?
T+

Enviado:
16 Jan 2008 07:56
por Giovak
Eu não tenho o livro mais vi os exemplos. Tem dois. Simulei os dois mais não obtive resultados.
No exemplo numero 12 quando simulo, fica sempre aguardando um caractere. Imagino que seja porque não esta recebendo.
Poderia me explicar como devo transmitir e como devo receber?
Vou ligar dois AW e fazer um transmitir e o outro receber.
Grato

Enviado:
22 Jan 2008 21:47
por CCandido
configuraçao xtal=4mhz up pll bus=20mhz
BAUD= 178571 bps
void Init_sci1(void){
SCI1C1= 0x00; /* Configure the SCI */
SCI1C3=0x00; /* Disable error interrupts */
SCI1S2=0x00;
SCI1C2=0x00; /* Disable all interrupts */
SCI1BDH = 0x00;
SCI1BDL = 0x07;
SCI1C2_TE = 0x01; /* Enable transmitter */
SCI1C2_RE = 0x01; /* Enable receiver */
SCI1C2 |= ( SCI1C2_TE_MASK | SCI1C2_RE_MASK | SCI1C2_RIE_MASK);
// SCI1C2=0x34;
}
//----------------------------------------------------------
void Init_sci2(void){
SCI2C1= 0x00; /* Configure the SCI */
SCI2C3=0x00; /* Disable error interrupts */
SCI2S2=0x00;
SCI2C2=0x00; /* Disable all interrupts */
BAUD= 178571 bps
SCI2BDH = 0x00;
SCI2BDL = 0x07;
SCI2C2_TE = 0x01; /* Enable transmitter */
SCI2C2_RE = 0x01; /* Enable receiver */
SCI2C2 |= ( SCI2C2_TE_MASK | SCI2C2_RE_MASK | SCI2C2_RIE_MASK);
}
------------
__interrupt 20 void SCI2_Interrupt(void){
while(!SCI2S1_RDRF); wait
byte = SCI2D; salva o byte recepcionado
}
//------------------------------------------------
__interrupt 17 void SCI1_Interrupt(void){
while(!SCI1S1_RDRF); wait
byte = SCI1D;
}
---------------------------
para enviar byte
while (! SCI2S1_TC ); wait
SCI2D = Byte;
eu uso no aw isto ai e funciona
na hora de colar aqui pode ter avido erros....
boa sorte

Enviado:
23 Jan 2008 07:08
por Fábio Pereira
Basicamente você transmite escrevendo um dado no registrador SCIxD. A transmissão é completada quando a SCI coloca o bit TC (registrador SCIxS1) em um.
A recepção é sinalizada por RDRF (registrador SCIxS1). Quando RDRF está setado, um novo caractere foi recebido. Você deve efetuar a leitura do mesmo no registrador SCIxD.
Até +

Enviado:
23 Jan 2008 10:31
por Giovak
Consegui transmitir e receber.
Realmente não tem nenhum segredo. Estava configurando errado os registradores.
Fico muito grato.

Enviado:
31 Jan 2008 18:09
por Giovak
Seguinte,,, consegui comunicar dois microcontroladores AW, os dois mandam dados e recebem. Gostaria de comunicar 5 microprocessadores.
Como poderia fazer a ligação entre elas. Pelos pinos Rx e Tx???
Quero que uma central receba os dados dos outros 4 modulos.
Muito obrigado.

Enviado:
31 Jan 2008 20:24
por Kremer
A SCI nao seria o periferico mais indicado para esta sua necessidade. Eu partiria para outras que o micro pode oferecer. Acho que ficaria mais simples se fosse por SPI ou I2C.

Enviado:
31 Jan 2008 21:39
por Giovak
tem algum link onde possa entender como funciona isso?
Grato

Enviado:
01 Fev 2008 07:43
por Kremer

Enviado:
01 Fev 2008 07:49
por Fábio Pereira
O meu livro novo tem um exemplo de comunicação mestre-escravo de dois HCS08 (QG8) via I2C. O dispositivo master lê e escreve no slave. O Slave possui duas entradas analógicas selecionáveis e uma porta de I/O de 8 bits.
Tem uma aplication note da Freescale que mostra algo parecido com isso.

Enviado:
01 Fev 2008 18:04
por CCandido
pode verificar rede LIN usado em automotiva
veja no site da freescale.
Re: Interface de Comunicação SCI

Enviado:
22 Ago 2017 17:22
por raillux
eu estou com um problema, que em alguns dados ele muda 1 bit
por exempro se eu mando 0x07 ele entende como 0x0f.
alguem pode ajudar??
Re: Interface de Comunicação SCI

Enviado:
17 Out 2017 10:57
por mastk
Veja se o Baudrate está bom, antes de considerar que o dado obtido é valido, checar os registros de erros, que podem ser dos mais diversos.