Comunicar PIC direto com outro PIC, é possível?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

serial

Mensagempor mugangalinux » 09 Ago 2010 17:45

Mastk...

Ainda nao estou tendo problemas..tenho que fazer com dois pics se comuniquem via serial e gostaria de saber:

Qual a diferenca entre utilizar interrupcao (rda) e o comando kbhit() ??

Obrigado

Muganga
mugangalinux
Nibble
 
Mensagens: 62
Registrado em: 19 Abr 2007 15:59

Mensagempor vtrx » 09 Ago 2010 19:58

Ja que ninguem até agora respondeu(eu programo em ASM),vou tentar te ajudar nesta complexa situação em C.
kbhit() é usado para detectar o início do 'start bit',logo em seguida,detectado o 'start bit',voce chama por getc().
kbhit,testa o pino RCV,se o nível for LOW,retorna TRUE.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor msamsoniuk » 10 Ago 2010 00:43

eu francamente acho que isso ae eh problema de conceito... mas enfim, dah uma olhada antes na pagina do manual:

http://iranmicro.ir/Online/Help/ccs/ind ... ?kbhit.htm

basicamente, kbhit pode operar em dois modos, mas independente disso vai sempre ser uma solucao para fazer polling. isso tem vantagens e desvantagens.

se a serial eh usada para interface de usuario, para um prompt de comandos, por exemplo, vc tem a vantagem de fazer o polling em main() e com isso livrar as interrupcoes para as operacoes realtime. o usuario jah nao digita muito rapido, entao dificilmente vc vai perder um caracter pq o polling atrasou.

agora, para comunicacao com algo que nao seja uma pessoa, fazer polling jah nao funciona muito bem, pq dispositivo para dispositivo pode ser mais rapido do que o loop de polling e vc pode perder caracteres.

daih o ideal eh usar interrupcao, onde cada caractere que chega eh processado em realtime, como no exemplo abaixo:

http://pic-c.ccsinfo.com/forum/viewtopic.php?t=26739

agora, no problema do smarley a primeira coisa que eu faria seria habilitar a verificacao de paridade e ficar de olho nos erros de recepcao.

se indicar erros de paridade, pode ser integridade de sinal.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

serial

Mensagempor mugangalinux » 10 Ago 2010 13:58

beleza..ficou mais claro para o que pretendo fazer.
No meu caso usarei a int_rda pois para monitorar o recebimento de dados atraves destes modulos RF.
Ou seja, no transmissor quando pressionar um botao envia uma sequencia de caracter atraves da RS-232 e no receptor usarei o int_rda para checar os dados recebidos. Caso a seqüência de caracter coincida com o transmitido pelo transmissor, então executa uma tarefa.

É esse mesmo o raciocínio ou estou falando bobagem?

Obrigado a todos mais uma vez.

Muganga
mugangalinux
Nibble
 
Mensagens: 62
Registrado em: 19 Abr 2007 15:59

serial

Mensagempor mugangalinux » 10 Ago 2010 18:05

quando configuro dois pinos (tx e rx) do pic, posso usar qualquer pino ou o pic tem o pino exato para comunicação serial?

#use rs232(baud=2400,xmit=PIN_C6, rcv=PIN_C7, ERRORS, STREAM=USB)


neste exemplo poderia utilizar o PIN_C4 como tx e PIN_C3 como rx??
Obs.: C4 e C3 foram apenas exemplo.

Obrigado

Muganga
mugangalinux
Nibble
 
Mensagens: 62
Registrado em: 19 Abr 2007 15:59

Mensagempor btpavao » 10 Ago 2010 22:03

mugangalinux

Até o pouco que conheço de PIC, só programei alguns 16F e 18F, eles não permitem o roteamento de pinos. Dê uma olhada no datasheet do PIC que vc está usando, lá no PIN DIAGRAM, vc achará os pinos correspondentes a serial.

Só por curiosidade, existem microcontroladores que permitem o roteamento dos pinos. Nos PSoC`s vc pode atibuir qualquer coisa (expl: serial, AD, 485, etc) a qualquer pino, ele é modular, o que é excelente para dificultar a engenharia reversa do projeto. Os uC ARM também permitem o roteamento, porém neste uC, o roteamento é limitado a alguns pinos.

De nada,
Btpavao
btpavao
Bit
 
Mensagens: 37
Registrado em: 18 Set 2009 13:46

Mensagempor fabim » 11 Ago 2010 07:33

btpavao escreveu:mugangalinux

Até o pouco que conheço de PIC, só programei alguns 16F e 18F, eles não permitem o roteamento de pinos. Dê uma olhada no datasheet do PIC que vc está usando, lá no PIN DIAGRAM, vc achará os pinos correspondentes a serial.

Só por curiosidade, existem microcontroladores que permitem o roteamento dos pinos. Nos PSoC`s vc pode atibuir qualquer coisa (expl: serial, AD, 485, etc) a qualquer pino, ele é modular, o que é excelente para dificultar a engenharia reversa do projeto. Os uC ARM também permitem o roteamento, porém neste uC, o roteamento é limitado a alguns pinos.

De nada,
Btpavao


ARM, só para algumas funções muito especificas. Como exemplo controle de TFT.. Fora isso, os que eu conheço e estudei, nenhum permite.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor btpavao » 11 Ago 2010 11:43

btpavao escreveu:
mugangalinux

Até o pouco que conheço de PIC, só programei alguns 16F e 18F, eles não permitem o roteamento de pinos. Dê uma olhada no datasheet do PIC que vc está usando, lá no PIN DIAGRAM, vc achará os pinos correspondentes a serial.

Só por curiosidade, existem microcontroladores que permitem o roteamento dos pinos. Nos PSoC`s vc pode atibuir qualquer coisa (expl: serial, AD, 485, etc) a qualquer pino, ele é modular, o que é excelente para dificultar a engenharia reversa do projeto. Os uC ARM também permitem o roteamento, porém neste uC, o roteamento é limitado a alguns pinos.

De nada,
Btpavao


ARM, só para algumas funções muito especificas. Como exemplo controle de TFT.. Fora isso, os que eu conheço e estudei, nenhum permite.

Fabim


Só programei os Cortex-M3 da ST, nesses sei que é possível rotear os pinos de AD, UART, I2C, SPI, CAN.

Btpavao
btpavao
Bit
 
Mensagens: 37
Registrado em: 18 Set 2009 13:46

Mensagempor vtrx » 11 Ago 2010 11:58

quando configuro dois pinos (tx e rx) do pic, posso usar qualquer pino ou o pic tem o pino exato para comunicação serial?

Se for implementar a comunicação por SoftWare voce pode escolher qualquer pino de I/O em qualquer Microcontrolador ou Processador.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor msamsoniuk » 11 Ago 2010 15:05

rotear arbitrariamente para qq pino?

btpavao escreveu:
btpavao escreveu:
mugangalinux

Até o pouco que conheço de PIC, só programei alguns 16F e 18F, eles não permitem o roteamento de pinos. Dê uma olhada no datasheet do PIC que vc está usando, lá no PIN DIAGRAM, vc achará os pinos correspondentes a serial.

Só por curiosidade, existem microcontroladores que permitem o roteamento dos pinos. Nos PSoC`s vc pode atibuir qualquer coisa (expl: serial, AD, 485, etc) a qualquer pino, ele é modular, o que é excelente para dificultar a engenharia reversa do projeto. Os uC ARM também permitem o roteamento, porém neste uC, o roteamento é limitado a alguns pinos.

De nada,
Btpavao


ARM, só para algumas funções muito especificas. Como exemplo controle de TFT.. Fora isso, os que eu conheço e estudei, nenhum permite.

Fabim


Só programei os Cortex-M3 da ST, nesses sei que é possível rotear os pinos de AD, UART, I2C, SPI, CAN.

Btpavao
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

serial

Mensagempor mugangalinux » 11 Ago 2010 15:22

entao..se quero comunicar entre receptor e transmissor atraves da serial...e atraves do transmissor com o pc, necessariamente tenho que ter um pic com dois pinos tx e dois pinos rx.

receptor (rx e tx)..........(rx e tx) transmissor (rx e tx).......(rx e tx) pc

O transmissor recebera o comando atraves da serial e enviara via RF (serialmente) para o receptor.

Obrigado

Muganga
mugangalinux
Nibble
 
Mensagens: 62
Registrado em: 19 Abr 2007 15:59

Anterior

Voltar para PIC

Quem está online

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

x