Página 1 de 1

Preciso de sugestões (Memória vs 2 microcontroladores)

MensagemEnviado: 10 Jun 2007 02:45
por regiscruz
Olá pessoal

Estou com o seguinte problema, preciso monitorar quatro valores analógicos de uma só vez (dois de corrente e dois de tensão de uma fonte CC) só que em alta resolução para posterior análise.
A princípio, como a porta serial não vai conseguir acompanhar tal velocidade para armazenar os dados no PC, eu decidi armazenar os valores em uma RAM externa no circuito e depois transferir tudo de uma vez para o PC.
Até ai tudo bem, a questão é que para que não ocorra perda de desempenho nas amostras, eu coloquei um microcontrolador tirando as amostras e fazendo otimização do sinal (PIC16F877), enquanto o outro controlando um display, contando um tempo e executando outras tarefas mais simples (PIC16F882).

Em fim, o X do problema é, como fazer para o microcontrolador do display tirar uma amostra de cada um dos quatro valores que estão indo para a memória a cada um segundo sem interfir de forma alguma no outro microcontrolador para não perder amostragem do sinal medido?

Se alguém tiver qualquer sugestão, por favor me ajude.
Obrigado

MensagemEnviado: 10 Jun 2007 10:58
por Ander_sil
Não entendi o porque de usar dois uC, usa um só para fazer tudo.
O fato da serial não dar conta, tbem não entendi.

at.

MensagemEnviado: 10 Jun 2007 23:58
por chipselect
o microcontrolador do "display" não poderia ficar "ouvindo" o que o microcontrolador que realiza as amostras escreve na memória?

Ou a memória onde as amostras são armazenadas é interna ao microcontrolador que realiza as asmostragens? Se não for, o "display" pode ficar lendo o que é escrito na memória sem interferir na escrita, e processa os valores no tempo que quiser depois.

Também acho que um microcontrolador só pode dar conta do recado.

MensagemEnviado: 11 Jun 2007 01:17
por ernande_filho
regiscruz, deixa eu ver se entendi.

com um uC vc monitora os 4 valores e escreve numa memoria e com outro uC vc trabalha com o display.

se a memoria for externa, pq vc nao "intercepta" a comunicação com o outro uC ?? ou seja: deixa ele ouvir a "conversa" decodificar e apresentar no display.

se for a memoria interna, pq vc nao faz o seguinte:
na rotina de escrita dos dados na memoria, anexa outra rotina que mande os dados pra fora. Esses dados no lado de "fora" do uC, vc capta com o outro uC e exibe no display.

Agora, concordando com os 2 posts anteriores, acho que vc pode fazer tudo isso com um único uC. Vc vai diminuir custos.

Só uma curiosidade: vc tá usando um cristal de qto? e pq a porta serial não "dá conta"??

MensagemEnviado: 11 Jun 2007 17:25
por regiscruz
Primeiramente eu gostaria de pedir desculpas por ter me expressado tão mau.

O projeto:
Vou explicar melhor, meu cliente possue um laboratório onde ele faz testes de controle de qualidade, neste laboratório ele ja tem um equipamento que faz estas medições mas para isso ele usa um CLP. Além de não ser portátil, ele não tem condições de oferecer a taxa de amostragem que ele precisa nem as funções que ele gostaria (estas funções são coisas simples).
Meus projetos usando entradas analógicas, sempre foram para aplicações simples , ler sensores de temperatura, pressão, tensões ou correntes para mostrar em um display e sempre com um delay antes da proxima leitura.

O motivo:
Neste caso eu quero ler e gravar um sinal com o maximo de resolução para não correr o risco de perder o minimo de variação no menor tempo, entende? Eu sei que essa seria uma tarefa simples para um DSP mas com esse eu nem me atrevo a mexer...rs...
Por isso eu quero usar dois microcontroladores, é para que não exista delays de monitoramento de botões, de escrita de display, de uma comunicação 232, SPI, I2C ou outros atrasos que possam comprometer o desempenho da escrita da leitura do ADC na memória.
A memória é externa e paralela, estou testando com uma KM62256C da Sansung que tenho na bancada, ainda não decidi qual memória vou usar no projeto final.

O problema:
Bom, admito que minha teoria possa estar errada, que apenas um microcontrolador possa resolver o problema. Mas se não estiver, como vou fazer para saber se a leitura atual é a da tensão 1 ou 2, ou se é a da corrente 1 ou 2? Entende?
Supondo que eu coloque no mesmo barramento os dois microcontroladores e a memória, como o microcontrolador do display vai saber qual dos valores esta sendo escrito no barramento quando ele voltar da rotina das outras tarefas?

O custo:
O custo é sempre importante mas nesse caso eu vou montar apenas 3 unidades.

As vezes eu também acho que estou tentanto coçar a orelha esquerda com a mão direita...rs... Só que vocês nem imaginam quantas garrafas de café ja se foram nessa brincadeira...rs...

Obrigado pela atenção.

MensagemEnviado: 12 Jun 2007 01:19
por ernande_filho
regiscruz, qdo vc vai usar o AD do 16f877, vc lê cada entrada individualmente. Qdo vc for gravar os dados na memoria externa, use um outro uC interceptando a comunicação (entre o uC principal e a memoria) para decodificar os dados e projetar num display.

Porém, continuo achando que vc deveria fazer tudo isso com um único uC.

MensagemEnviado: 12 Jun 2007 08:57
por ze
Sugestões:
procure usar um uContr com maior freq. p. ex PIC18Fxxx (40MHZ).
deixe o uC o tempo todo lendo a entr. AD e escrevendo na memória.
deixe uma interrupçao de porta com um push botton p. ex. para que cada vez que for pressionado o sistema mostra no display e/ou transmita os dados para o pc. Neste momento o operador SABE que o sistema deixará ler os dados por alguns ms. Ou até mesmo uma interrupçao de TXRX para que cada vez que o pc solicite, os dados sejam enviados.
abraço

MensagemEnviado: 13 Jun 2007 02:04
por regiscruz
Acho que agora vai.....

Enquanto eu tentava implementar na bancada a sugestão dos nossos amigos Ernande_filho e Chipselect me veio uma luz.

É muito simples, o microcontrolador das amostras pode avisar quando e qual dos valores das entradas analógicas esta sendo escrito na memória através de quatro saidas.
O microcontrolador do display vai monitorar estas quatro saidas (V1...I2) e só vai interpretar o sinal do barramento quando a saidas que ele espera, sair do nivel zero para um. Assim ele não corre o risco de interpretar por acidente um valor de endereço de memória ou uma tensão no lugar de uma corrente.
Desta forma com apenas dois ciclos de scan o microcontrolador das amostras avisa para o outro sem perder desempenho.

Fiz uma estruturazinha meia boca para ajudar a entender.

Imagem

A saida serial vai ser usada para descarregar o conteudo da memória depois que terminar o trabalho de amostragem.

Obrigado a todos e vamos ver no que dá...

MensagemEnviado: 13 Jun 2007 02:10
por ernande_filho
pode mandar minha parte em dinheiro mesmo... (de preferencia em Libras ou Euros. Dólar tá caindo muito)

brincadeira.

Depois posta as fotos.

MensagemEnviado: 13 Jun 2007 16:46
por regiscruz
ernande_filho escreveu:pode mandar minha parte em dinheiro mesmo... (de preferencia em Libras ou Euros. Dólar tá caindo muito)

brincadeira.

Depois posta as fotos.



Hehehehhehehe....pode deixar.