usart por soft para 70caracteres . dar certo ?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

usart por soft para 70caracteres . dar certo ?

Mensagempor cristian » 09 Fev 2010 10:48

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???
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor tcpipchip » 09 Fev 2010 12:33

mostra o codigo...
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor EDSONCAN » 09 Fev 2010 13:47

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
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor Sergio38br » 09 Fev 2010 13:58

Qual cristal tu ta usando e qual vel. da serial?

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor cristian » 09 Fev 2010 14:26

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor tcpipchip » 09 Fev 2010 15:23

cade teu codigo fonte ?

Outra coisa, voce monitora OVERRUN ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor cristian » 09 Fev 2010 16:44


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]
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor EDSONCAN » 09 Fev 2010 17:38

"..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
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor fabim » 09 Fev 2010 18:47

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor guest2003 » 09 Fev 2010 19:51

No CCS tem isso pronto...

Só define os pinos e tal, e pronto... ele faz pra vc.

[]'s
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor guest2003 » 10 Fev 2010 20:17

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
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor cristian » 10 Fev 2010 20:51

so nao achei este driver qual o nome do arquivo ?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor guest2003 » 11 Fev 2010 07:06

Procura no help do compilador por isso:

#USE RS232

[]'s
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x