ENVIANDO DADOS PELA SERIAL

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

ENVIANDO DADOS PELA SERIAL

Mensagempor amboni » 09 Mai 2008 16:16

Boa tarde caro colegas,

estou com um problema no envios de dados pela comunicação serial,
tenho que enviar um informação pela serial, mais estava enviando com printf(" ",), depis que implementei o timer zero percebi que esta escrita demora muito tempo e acaba dando problema na escrita, acredito que seja por causa do estouro do timer..... vi alguns comentarios a respeito do PUTC mais nao consegui fazer funcionar,
seuge exemplo....

IF (SERIAL==0)
{
SERIAL++;
PUTC(UNIDADE);
PUTC(DEZENA);
PUTC(CENTENA);
}



centena dezena e unidade sao variaveis de 8 bits resultantes de uma conversao....

amboni
amboni
Nibble
 
Mensagens: 50
Registrado em: 23 Abr 2008 08:26
Localização: Içara - SC

Mensagempor tcpipchip » 09 Mai 2008 16:48

Sera que nao esta dando OVERRUN?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor phophollety » 09 Mai 2008 18:43

Sempre comece com mais infos, qual processador é, qual compilador, qual versão e qual ferramenta de debug você tem( se tiver)
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor ze » 12 Mai 2008 10:48

(a..a...) desgulbe. é que dô bêio (aaa....) resvriado (VR!) e dão pozzo comendar buito dão.(aaa...a....)acho que beguei uba gribe porgue viguei navegando bor outros vóruns enguando o 51 estava vora do ar. (rzrz)

a rotina printf é meio cavalar mesmo. tente criar uma ultratrisupermuito simples só pra transmitir 1 byte. p. ex. TXREG=dado e aguarde o flag de txok. E deixe a complexidade pra quem recebe (pc??) se virar e expor ao mundo.
aaa.aabrç
aaatchim!!!!!!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor phophollety » 12 Mai 2008 11:11

Uma boa maneira é...

Crie um vetor com n bytes, que queira..

Vá cololocando neste vetor os seus bytes a serem enviados...

crie uma função que você passa como argumentos o endereço do início dos bytes do ventor (ponteiro &vetor[0] ) e o número de bytes a serem enviados, assim conforme envia, incrementa o ponteiro e envia o próximo, até o número de incrementos do ponteiro ser igual o número de bytes enviados... assim você consegue fazer uma espécie de print sem judiar da memória... fica +- assim..

enviaStringSerial(&vetorSerial[0], 4);

vai enviar 4 bytes, começando do vetorSerial[0] e terminando no vetorSerial[3]...

e dentro da função enviaStringSerial, você chama ou que envia byte a byte..


enviaByteSerial(byte);

Assim pode enviar quando quiser, byte a byte ou um monte deles de uma vez só.. funciona super bem, pois você pode tanto enviar pelo módulo dentro do enviaByteSerial quando criar uma rotina que controla o i/o por tempo e fazer o envio por soft...
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil


Voltar para PIC

Quem está online

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

cron

x