Página 1 de 1

CCS uart

MensagemEnviado: 17 Out 2018 17:25
por vtrx
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)

Re: CCS uart

MensagemEnviado: 18 Out 2018 09:11
por andre_luis
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.

Re: CCS uart

MensagemEnviado: 18 Out 2018 12:33
por vtrx
18F2550.
É obrigatório que quando se manda algo pela UART,ter que receber uma resposta?

Re: CCS uart

MensagemEnviado: 18 Out 2018 15:00
por andre_luis
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 ?

Re: CCS uart

MensagemEnviado: 18 Out 2018 16:46
por xultz
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.

Re: CCS uart

MensagemEnviado: 19 Out 2018 14:29
por vtrx
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)?

Re: CCS uart

MensagemEnviado: 19 Out 2018 14:39
por edsont
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.

Re: CCS uart

MensagemEnviado: 19 Out 2018 14:48
por andre_luis
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.

Re: CCS uart

MensagemEnviado: 20 Out 2018 12:12
por vtrx
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...

Re: CCS uart

MensagemEnviado: 20 Out 2018 17:23
por andre_luis
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.

Re: CCS uart

MensagemEnviado: 20 Out 2018 21:48
por vtrx
Função usado no CCS por Hardware.

Re: CCS uart

MensagemEnviado: 20 Out 2018 22:47
por andre_luis
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.