Leitura de um botão antes do main (rotina principal)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor msamsoniuk » 15 Mar 2009 16:48

na verdade utiliza-se um algoritmo ABR (auto baudrate) para determinar o baudrate remoto a partir do primeiro caractere recebido (normalmente um CR). este paper da texas explica perfeitamente como isso eh feito:

http://focus.ti.com/lit/an/slaa215/slaa215.pdf

portanto a solucao eh bastante simples: se o outro lado iniciar a comunicacao sempre da mesma forma, o primeiro caractere recebido pode ser suficiente para determinar o baudrate correto automaticamente.

Renie escreveu:Olá Fábio,

Para conectar em uma linha sem padrão de Baud, apesar de não ser
muito complicado, todos os dispositivos precisam estar preparados para
tal atuação!


O método usado desde a pré-historia dos modems, era ir testando a
conexão desde a taxa mínima até a máxima!

[]'s
Renie
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabio_pic » 18 Mar 2009 08:10

Senhores,

Agradeço a grande ajuda mas ainda preciso saber como faço para trocar o baud rate da porta serial do PIC em tempo de execução.
1 - Tentei a solução do buiz mas o PIC assume somente uma taxa.
2 - A solução do Marcelo Samsoniuk também é bem interessante.
3 - O que o Jorge_Francisco sugeriu também está na lista.
4 - Outra forma que pensei foi de fazer uma porta serial "na unha" mesmo. A rotina está pronta para testar. Tive essa idéia pois um dos dispositivos não envia respostas, somente funciona como TX.

Ainda não finalizei os testes dos quatro processos. Em alguns dias espero retornar com os resultados.

Abraços,
Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Mensagempor Mersin » 21 Mar 2009 23:12

Amigão,

Acho que antes do Main você não vai conseguir nunca, o que é preciso lembrar é que no main sempre colocamos um loop infinito tipo:
for(;;)
{...
}
, que será o funcionamento permanente do nosso programa.

O que você pode fazer então, é tratar a leitura do seu "botão de configuração" e setar sua USART antes desse loop infinito.

Inté!
Mersin
Mersin
Byte
 
Mensagens: 121
Registrado em: 22 Out 2006 13:07
Localização: Goiânia

Mensagempor guest2003 » 22 Mar 2009 11:06

Fabio,

É só você mudar o valor destes registros:

SPBRGH e SPBRG

Da uma olhada no datasheet sobre como fazer o calculo... depois fica simples assim:

VALORES FICTICIOS !
If (blabla)
SPBRGH = 1; //baud 115200
SPBRG = 22;
else
SPBRGH = 0; //baud 9600
SPRG = 66;
Restart serial (desliga e liga denovo o bit de controle)

ATENCAO os valores que coloquei nao tem nada haver, são somente exemplos !!! da uma olhada no datasheet e faça os calculos.

Caso não consiga fazer os calculos, da um toque qual PIC e Clock esta utilizando...

[]'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 fabio_pic » 22 Mar 2009 11:37

guest2003 e Mersin,

É realmente esse o ponto (em cheio). Ontem, finalmente, consegui fazer o um pino do PIC virar um TX de serial a 9600. Pelo menos nos teste de transmissão com números funcionou bem.
Agora tenho duas taxas num PIC só, uma a 9600 (via software) e outra a 115200 (via hardware).

guest2003,

Estou usando o 16F877A com cristal de 20MHz e programando em C. Não sei se terei tempo para testar a sua sugestão (que aliás é a resposta que eu procuro) pois tenho que entregar o código pronto até sexta agora e ainda tenho que terminar a comunicação com o último dispositivo e juntar todas as partes do código no projeto, trabalhar, cuidar da filha de 1 ano e meio (meu orgulho), ajudar a patroa, verificar o trabalho do pedreiro na obra, etc... etc... Coisas de um chefe de família...

Obs: depois do reset da usart tenho que esperar algum tempo para que o código continue?

Desde já agradeço o caminho das pedras.

Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Anterior

Voltar para PIC

Quem está online

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

x