Página 1 de 1
usart por soft para 70caracteres . dar certo ?

Enviado:
09 Fev 2010 10:48
por cristian
galer nao estou conseguindo fazer um usart por soft no ccs para 70 caracteres recebe os primeiros normal depois se perde , sera q nao da certo???

Enviado:
09 Fev 2010 12:33
por tcpipchip
mostra o codigo...

Enviado:
09 Fev 2010 13:47
por EDSONCAN
A grande maioria desses problemas são devido a velocidade de processamento, o processador recebe um segundo byte sem salvar o primeiro.
De um delay entre as transmissões e veja como se comporta
Edson
www.idroid.com.br

Enviado:
09 Fev 2010 13:58
por Sergio38br
Qual cristal tu ta usando e qual vel. da serial?
[ ]'s
Sergio

Enviado:
09 Fev 2010 14:26
por cristian
o codigo é o mesmo do livro compilador c de fabio pereira
cristal 4mhz
velocidade 9600
o que nao gosto dessa versao de soft,é pq o pic fica preso esperando os dados
...esta usart vai ser ate comprar um pic com 2 seriais ou tomar coragem e comprar um lpc21xx

Enviado:
09 Fev 2010 15:23
por tcpipchip
cade teu codigo fonte ?
Outra coisa, voce monitora OVERRUN ?

Enviado:
09 Fev 2010 16:44
por cristian
Outra coisa, voce monitora OVERRUN ?
coo fazer isso com usart por soft ???
queria aprimorar este codigo usando interrupçao para evitar que o pic fique parado esperando os 70 char chegar
- Código: Selecionar todos
#ifndef baud_rate
const long int baud_rate = 9600;
#endif
const int tempo_bit_dado = 1000000/baud_rate-10; // tempo do bit de dado
const int tempo_bit_start = 1500000/baud_rate; // tempo do bit de start
// Definições dos pinos de comunicação
// Para utilizar outros pinos, basta incluir novas definições
// no arquivo do programa onde esta biblioteca for incluída
#bit pino_tx = 0x06.0 // pino de transmissão é o RB0
#bit pino_rx = 0x06.1 // pino de recepção é o RB1
#bit dir_tx = 0x86.0 // direção do pino de tx
#bit dir_rx = 0x86.1 // direção do pino de rx
void rs232_inicializa (void)
{
dir_tx = 0; // pino de tx como saída
pino_tx = 1; // coloca o pino de tx em nível 1
dir_rx = 1; // configura o pino de rx como entrada
}
- Código: Selecionar todos
char rs232_recebe (void)
{
int conta,dado;
while (pino_rx); // aguarda o bit de start
delay_us(tempo_bit_start); // aguarda o tempo de start
conta = 8; // são 8 bits de dados
dado = 0; // apaga o dado recebido
while (conta)
{
shift_right( &dado, 1, pino_rx); // insere o bit recebido
// deslocando à direita a
// variável com o dado
// recebido
delay_us(tempo_bit_dado); // aguarda o tempo de 1 bit
conta--; // decrementa o número de bits
}
delay_us(tempo_bit_dado); // aguarda o tempo de 1 bit
return dado; // retorna o dado recebido
}
[/quote]

Enviado:
09 Fev 2010 17:38
por EDSONCAN
"..esta usart vai ser ate comprar um pic com 2 seriais ou tomar coragem e comprar um lpc21xx"
Na minha humilde opinião, concordo plenamente com a frase acima.
Um serial por HW e uma por SW a 9600 bps e com cristal de 4Mhz e sem usar interrupção para receber os dados, parando o programa, fica dificil.
Edson
www.idroid.com.br

Enviado:
09 Fev 2010 18:47
por fabim
cristian, xo priguntar..
Existe a possibilidade dos equipos que estão espetados no PIC, terem a vontade de mandar dados simultaneamente ?
Caso não, com dois diodos 1n4148, e um resistor de 1.5K tu resolve isso... PErgunta pro fernando fernandes, que ele lhe explica como.. eu ja expliquei pra ele, e to com pregui de explicar novamente

Enviado:
09 Fev 2010 19:51
por guest2003
No CCS tem isso pronto...
Só define os pinos e tal, e pronto... ele faz pra vc.
[]'s

Enviado:
10 Fev 2010 20:17
por guest2003
Explicando melhor...
No CCS ele gera UART por software pra vc, ele tem driver pra isso...
Ai vc teria uma UART do PIC via HW e outra via SW...
[]'s

Enviado:
10 Fev 2010 20:51
por cristian
so nao achei este driver qual o nome do arquivo ?

Enviado:
11 Fev 2010 07:06
por guest2003
Procura no help do compilador por isso:
#USE RS232
[]'s