Rs232 USART e Buffer!!!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Rs232 USART e Buffer!!!

Mensagempor Bardelli » 25 Jul 2007 21:30

Olá all

Tenho uma dúvida a tirar.

QUando se usa a Usart, tem como o PIC armazenar tudo em um buffer, sem que ele interrompa aquilo que ele está fazendo?, tipo como se fosse um processamente paralelo?.

abraços
Bardelli
Byte
 
Mensagens: 126
Registrado em: 20 Out 2006 12:42

Re: Rs232 USART e Buffer!!!

Mensagempor andre_luis » 26 Jul 2007 08:13

Voce está dando a descrição do tratamento da recepção via interrupção.
Para transmissão, fica mais fácil ainda, podendo ser feito no main().


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor fabim » 26 Jul 2007 08:25

não.. o pic não tem fifo.
E não sei se outro uC tenha esta função.
O que acontece é que como o andre falou, se chegar dado valido o buffer de 8 bits estiver com dado valido, acontece uma interrupção.
Aí voce vai ao registrador e joga o dado no lugar devido.
Mais as vezes á sofrimento atoa, porque não usar tipo um 12F629 pra fazer esta função custa R$4,00 por aí.

Abraços
Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Bardelli » 26 Jul 2007 09:51

Essa realmente foi minha ideia, utilizar um outro PIC, mas depois vem a pergunta: Qual é a melhor maneira de passar as informações de um PIC para OUTRO de forma mais rápida???.

abraços
Bardelli
Byte
 
Mensagens: 126
Registrado em: 20 Out 2006 12:42

Mensagempor fabim » 26 Jul 2007 09:57

da forma que voce preferir.
Vai funfar +/- assim.
O pic ligado a usart vai ficar pegando os dados que chegam, e guardando na ram, quando a ram encher ele vai sobre escrever da primeira casa..

quando o master quiser saber se tem dados, etc.

Voce pode fazer por SPI,i2c etc. ai vai do clock e da maneira que voce precisa.

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor zielpunkt » 26 Jul 2007 10:08

Bardelli,

Dependendo do modelo (16F com AUSART, por ex) vc tem disponível um buffer fifo de 2 bytes que é o RCREG. Ao terminar de receber um eventual terceiro dado (byte), dá erro e vc perde este último. Dependendo do que pretende receber, pode verificar continuamente a existência de dados no RCREG, sem sair do corpo do programa e sem precisar usar interrupção de rx. Ou seja, se estiver esperando apenas um controle para posterior início de troca de dados entre aplicações, fica viável. Do contrário, precisando receber pacotes maiores de dados, tem que implementar um buffer (circular?), mas ai o sistema precisa ter como prioridade o canal serial.


É isso.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor andre_luis » 26 Jul 2007 10:44

Bem lembrado.

Como este recurso do FIFO built-in do da USART do PIC não é padrão para todas as UARTs de outros uCs, a gente acaba o esquecendo e raciocinando de modo convencional para todas as plataformas de HW.

É um Buffer realmente pequeno ( poderia ser maior ), mas parece que a finalidade dele é mais de previnir a perda de dados do que propriamente receber frames.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Vonnilmam » 27 Jul 2007 12:15

ola´,


eu já tive um problema parecido, a solução foi utilizar um buffer rotativo...
O mesmo fica no loop do programa principal e voce irá criar todas as variaveis que irão receber os dados provenientes do RX e envialos atraves dessas variaveis (o tamanho depenedera de sua necessidade) ao buffer, quando a rotina excecutar esse buffer irá descarregar tudo de uma só vez, ou somente as que forem carregadas, esse controle poderá ser feito através de flags em cada registro dentro do buffer...
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial


Voltar para PIC

Quem está online

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

cron

x