Pic Microcontrolador Slave e Master

D

dfullmer

Guest
Oi Pessoal,

Estou a pensar sobre a execução de vários Pic's em um escravo e mestre modo.Alguém tinha experiance em fazer isso?Pode me dar qualquer conselho que poderia poupar algum obstáculo?

Obrigadodfullmer

 
Eu nunca trabalhei com PICs, mas não estou certo se PIC vem com essa capabilites em hardware.Se pretende implementá-lo em seu software muito fácil.Já fiz isso com AVRs e 8051s.

I2C/SPI é um definitivo ir, se a sua disposição, uma vez que permite essa comunicação.
Você pode mapear a memória escravos no endereço mestres gama tornando escravo PICs como periféricos para o mestre.

Mais exótico coisas memória partilhada baseada mensagem passa é demasiado gerais para tais aplicações simples.

 
Graças kishore2k4,

Vou tomar todas as informações que posso obter.

atenciosamente

dfullmer

 
dfullmer escreveu:

Graças kishore2k4,Vou tomar todas as informações que posso obter.atenciosamentedfullmer
 
Seu direito que deveria ser mais descritivo,Ok, então eu quero juntar quatro ou cinco pic16F877A com um escravo / mestre relacionamento.Como você afirmou I2C ou SPI com os endereços de cada um.Tenho criado um I2C driver de vídeo, e estou começando a obter uma alça sobre como fazer a comunicação I2C.Tenho feito também SPI (um pouco) no passado e ter usado com sucesso.Seria ótimo se alguém teve algum software exemplo de um escravo / mestre código microcode estúdio para que eu pudesse expandir em.Cada um dos dispositivos terão as suas próprias tarefas a executar e eu preciso entender como a chamar cada um de forma independente e falar com ela.Trata-se de uma base iterupt ou sondagem.Esta é parte da minha falta de conhecimento.Com base na folha de dados para o 877A, parece ter esta capacidade.Eu tinha esperanças de obter um exemplo de alguém.Minha fronte é plana suficiente de bater contra a minha mesa não tenho necessidade de acrescentar a ela.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Muito Feliz" border="0" />Obrigado novamente qualquer informação que você seria apreciada.

Atenciosamente

dfullmer

 
Em anexo são um casal de trechos de código mestre de transmissão / recepção e 10-bit escravo recepção.

Estes casos foram teste tão pinos têm sido levados para indicar estado (por exemplo, BF bandeira definida, Interrupt Routine entrou, etc)

Temos muitos clientes desenvolvendo sistemas multi-core como, quando você etapa ou depurar no Proteus, todo o sistema de adiantamentos / pausa no tempo para que não tenha secundário processadores tarificação fora enquanto está a depurar primária.

O protocolo I2C e SPI analisadores pode também atuar como mestre ou escravo, quer dispositivos de modo que você pode simplesmente digitar em seqüência e injectar-las para o autocarro para testar TX / RX de ou para um MC.
Desculpe, mas você precisa de login para ver esta penhora

 
Uau Iain,

Graças isso será útil.Posso seguir o código para a maior parte dos casos e pode trabalhar em adaptá-lo ao meu pedido.Infelizmente eu não sou um programador sou um cara de hardware e da montagem código leva-me um pouco de reflexão_O "básico" codificação é onde minha cabeça normalmente pode alcançar.Se você se deparar com qualquer coisa é fundamental esta seria apreciada também.Obrigado novamente

felicidades

dfullmer

 
Não estou com medo, mas base Heres uma base muito <grin> 7-bit escravo recepção (16f887) em C.

Código:# include <system.h># pragma CLOCK_FREQ 16000000

# pragma DADOS _CONFIG1, _HS_OSC & _MCLRE_ON & _WDT_OFF

# pragma DADOS _CONFIG2, _WRT_1FOURTH & _BOR21V/ / Ensaio em I2C Slave modo com máscara endereço registo./ / Endereços e Comandos I2C

# define I2C_ADDRESS 0xA8void interromper (void)

(If (pir1.SSPIF)

(Portc.7 = pir1.SSPIF; / / o espelho SSPIF estado.

portc.7 = pir1.SSPIF = 0;

portc.6 = sspstat.BF;

if (sspstat.S & sspstat.BF)

/ / Slave recebe endereço / dados após o início

portb = sspbuf;portc.6 = sspstat.BF;

)

)void main ()

(Portc.7 = 0;

portc.6 = 0;

trisc.3 = 1; / / SCL como insumos (liberação ônibus)

trisc.4 = 1; / / SDA como insumos (liberação ônibus)

trisc.6 = 0; / / usado para sinalizar BF bit

trisc.7 = 0; / / usado para o estado do espelho SSPIF

portb = 0;

trisb = 0;

/ / Faça baixo mordidela bits como "don't care" bit endereço.

/ / * Este registo deve ser iniciado antes da fixação * SSPM <3:0> bits para seleccionar o modo I2C Slave (7-bit ou 10-bit endereço).

/ / Note que SSPMASK coincide com SSPADD e que deveríamos escrever SSPCON com 0b1001, a fim de ter acesso a ele.

sspcon.SSPM0 = 1;

sspcon.SSPM1 = 0;

sspcon.SSPM2 = 0;

sspcon.SSPM3 = 1;

sspadd = 0xF0;

/ / Activar I2C, Slave modo, 7bit, com Start / Stop bits interromper

sspcon.SSPM0 = 0;

sspcon.SSPM1 = 1;

sspcon.SSPM2 = 1;

sspcon.SSPM3 = 1;

/ / SSPSTAT Status Register

sspstat.SMP = 0; / / Slewrate Controle deficientes

sspstat.CKE = 0; / / SMBUS insumos específicos deficientes

/ / CKP, Release Relógio

sspcon.CKP = 1;

/ / Desativar Endereço 0x0 Chamada Geral

sspcon2.GCEN = 1;

/ / Desativar relógio alongamento

sspcon2.SEN = 0;

/ / Set I2C Slave endereço

sspadd = I2C_ADDRESS;

/ / Synchronous Serial Port Enable

sspcon.SSPEN = 1;

/ / Dummy ler apura BF

unsigned int dummy = sspbuf;

/ / Limpar o buffer overflow

sspcon.SSPOV = 0;

/ / Receber Ativar

sspcon2.RCEN = 1;

/ / Enable Global, Periférico e SSP módulo interrompe

intcon.GIE = 1;

intcon.PEIE = 1;

pie1.SSPIE = 1;/ / Fazê-lo para sempre

while (1);

)

 
pl considerar PSP (porta paralela escravo) também, como eu sinto a sua simples.

Eu já vi exemplos de trabalho de TI DSP como um mestre e 16f87 * como um escravo

 
Uma coisa simpática sobre PIC chips é que eles podem ser facilmente sincronizados - executá-los na mesma fonte relógio e redefinir o mesmo sinal, você pode escrever código que funciona em paralelo.Eu tive uma situação em que eu usei 3 PIC 18F dispositivos, entre eles dois foram transmitindo um 10Mb / s bit stream (alternando 5Mb / s em cada compensar instrução ciclos), enquanto estiver recebendo dados de um terceiro PIC em 1.25MByte / s através da PSP!Uma grande diversão para desenvolver (pesadelo para depurar), mas funcionou muito bem!

Se você não precisa transferência rápida, porém, o I2C escravo / mestre é provavelmente uma boa escolha ....

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Muito Feliz" border="0" />
 
É I2C/SPI interface é uma solução viável para comunicações de inter multicondutores.

 

Welcome to EDABoard.com

Sponsor

Back
Top