CCS uart

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

CCS uart

Mensagempor vtrx » 17 Out 2018 17:25

Alguem poderia postar o código usando CCS para eu usar a AURT para apenas enviar bytes sem se importar se o outro lado recebeu ou não?
Desejo a velocidade máxima,não usarei código ASCII,apenas bytes,enviarei uma média de 50 bytes por comando,quero usar o Hardware do PIC e deixar a CPU livre no envio.
Sempre usei USB,não tenho muito conhecimento pela serial.
Código: Selecionar todos
#define BAUDRATE 9600

#use rs232(baud=BAUDRATE, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: CCS uart

Mensagempor andre_luis » 18 Out 2018 09:11

Pra enviar na velocidade maxima escolhe os pinos TX e RX default onde já possua periferico UART embutido, caso contrário o compilador vai forçar uma 'soft-uart'. Como voce naõ especificou o uC não dá pra saber se é esse o seu caso.
"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

Re: CCS uart

Mensagempor vtrx » 18 Out 2018 12:33

18F2550.
É obrigatório que quando se manda algo pela UART,ter que receber uma resposta?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: CCS uart

Mensagempor andre_luis » 18 Out 2018 15:00

A regra do negócio é voce quem decide; numa comunicação segura em que ambos o transmissor e receptor cada qual sabe o status do outro lado imediatamente após o envio do comando, a resposta é SIM. O mais simples seria o receptor fazer o eco da mensagem recebida para o transmissor; foi isso que voce perguntou ?
"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

Re: CCS uart

Mensagempor xultz » 18 Out 2018 16:46

No caso da UART, você pode mandar sem receber uma resposta. Puxando pela memória, no CCS é possível fazer um printf e ele mandar os bytes prá serial, essa função bloqueia e fica travada até transmitir todos os bytes, e continua a execução após isto.Independente de saber se alguém recebeu estes bytes ou não, ele transmite, e segue a vida.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Re: CCS uart

Mensagempor vtrx » 19 Out 2018 14:29

andre_teprom escreveu:A regra do negócio é voce quem decide; numa comunicação segura em que ambos o transmissor e receptor cada qual sabe o status do outro lado imediatamente após o envio do comando, a resposta é SIM. O mais simples seria o receptor fazer o eco da mensagem recebida para o transmissor; foi isso que voce perguntou ?


Desisti da UART,vou suar SPI.
Com SPI a velocidade é maior correto?
Posso apenas enviar Bytes puros?
Na UART,o byte enviado segue junto com bit de paridade etc,usando SPI consigo apenas enviar 8 bits por vez(o dado)?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: CCS uart

Mensagempor edsont » 19 Out 2018 14:39

vtrx escreveu:
andre_teprom escreveu:A regra do negócio é voce quem decide; numa comunicação segura em que ambos o transmissor e receptor cada qual sabe o status do outro lado imediatamente após o envio do comando, a resposta é SIM. O mais simples seria o receptor fazer o eco da mensagem recebida para o transmissor; foi isso que voce perguntou ?


Desisti da UART,vou suar SPI.
Com SPI a velocidade é maior correto?
Posso apenas enviar Bytes puros?
Na UART,o byte enviado segue junto com bit de paridade etc,usando SPI consigo apenas enviar 8 bits por vez(o dado)?


Acho que sim, mas a SPI é síncrona. Tem que ter uma linha de clock.
Avatar do usuário
edsont
Word
 
Mensagens: 555
Registrado em: 22 Mai 2007 17:19
Localização: Araraquara-SP Brasil - Terra - Sistema Solar - Via Láctea

Re: CCS uart

Mensagempor andre_luis » 19 Out 2018 14:48

vtrx escreveu:Desisti da UART,vou suar SPI


Dado o requisito menionado anteriormente, a UART ainda é a melhor escolha, a menos que faça uma lógica para interromper a CPU a cada bit enviado, o que seria uma loucura na minha opiniao, embora viável.

quero usar o Hardware do PIC e deixar a CPU livre no envio.
"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

Re: CCS uart

Mensagempor vtrx » 20 Out 2018 12:12

Código: Selecionar todos
void Point_Out(void)
 {
  int8 K;
   for(k=0; k<12 ; k++){spi_write(0xAA);}
  //  spi_write(0x00);
 
 }


Existe um método de se enviar um array de bytes sequencialmente mas por hardware ou meio melhor?
Do modo acima,fica um 'vácuo' entre cada envio...
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: CCS uart

Mensagempor andre_luis » 20 Out 2018 17:23

Sem saber de que cartola saiu essa função spi_write() ou se está sendo usado SPI por hardware, fica dificil avaliar.
Em principio, em havendo ambos os perifericos no chip cada um deveria se encarregar de transformar o byte do bufer em bits.
Mas na pratica, o SPI exige um pouco mais de bytes para serem enviados (endereço, etc...) de modo que demoraria um pouco mais.
"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

Re: CCS uart

Mensagempor vtrx » 20 Out 2018 21:48

Função usado no CCS por Hardware.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: CCS uart

Mensagempor andre_luis » 20 Out 2018 22:47

vtrx escreveu:Existe um método de se enviar um array de bytes sequencialmente mas por hardware ou meio melhor?
Do modo acima,fica um 'vácuo' entre cada envio...


Voltando ao assunto da UART, nesses casos onde o processamento fica travado esperando enviar a string completa, eu usava o putc() ao invez do printf(), habilitando interrupção RX. O mesmo poderia ser feito no caso do spi_write(), mas na verdade o spi_prewrite() parece ser uma opção melhor.
"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


Voltar para PIC

Quem está online

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

x