Página 1 de 1

NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 10 Jul 2016 17:38
por Vonnilmam
Olá a todos os amigos do forum.

Sou eu denovo, para variar.

Bom eu estou brigando com o MikroC para tentar fazer o Pic877A comandar o Dois portes, o PortC e o PortD, que comandam as colunas do nosso painel de mensagens.
No caso, o programa esta funcionando legal, acionando o PORTD (uma matriz de 8x8), eu quero que aprender como fazer ele comandar duas matrizes de 8x8, incluindo o PORTC nessa tarefa, mas já tentei de tudo quanto foi jeito e não consigo. Algum de vocês pode me ajudar a entender como fazer isso, por favor.

Bom, eu peço desculpas, por estar amolando tanto vocês, mas como eu disse estou aprendendo C...tem paciência com o veio vonnilmam...rsss.

Aqui esta o video do hardware:


Aqui esta a listagem para o MiKroC...

cpp code
#include "FONT.c"

char colPort at PORTD;
char rowPort at PORTB;
char buff[24];//local para armazenar dois caracteres
unsigned char tensao;
unsigned char texto[4];

void print_chr(char c, char time)
{
char i;
while(time--)
{
for(i=0;i<8;i++)
{
rowPort = 255;
colPort = 1<<(i);
rowPort = ~Font8x8[c - 32][i];
delay_us (90);//delay_us(90); //90
}
}
}
void scroll_text(char *str)
{
char i=0;
char k=0;//deslocamento no buffer
char cnt=0;
char buff[17];//buffer
while(*(str+1) != 0)
{
for(i=0;i<16;i++)
{
if(i<8) *(buff+i) = Font8x8[*(str) - 32][i];
else *(buff+i) = Font8x8[*(str+1) - 32][i-8];
}
for(k = 0;k < 8;k++)
{
for(cnt = 60; cnt > 0; cnt--)
{
for(i=0;i<8;i++)
{
rowPort=255;
colPort = 1<<(i);
rowPort = ~buff[i+k];
delay_us(900);//vdelay_ms(tempo);//125
}
}
}

str++;

}
rowPort = 255;
colPort = 0;
}
//------------------------ROTINA PRINCIPAL DE LOOP -----------------------------
void main()
{
TRISD = 0;
TRISB = 0;
colPort = 0;
rowPort = 0;

// essas variaveis, permitem carregar um dado externo string
//texto[3] = 0;
//texto[2] = ' ';
//texto[1] = 'K';
//texto[0] = ' ';

while(1)
{
//tensao = 10;
//ByteToStr(tensao, texto); // converte variavel em string

scroll_text(" HELP ");

}
}

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 10 Jul 2016 19:06
por andre_luis
Ajudaria um pouco mais se tivesse o diagrama esquematico anexado...

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 10 Jul 2016 19:33
por Vonnilmam
IMG_20160710_170653_964-1[1].jpg

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 10 Jul 2016 20:36
por andre_luis
Voce nao esta manipulando a Porta C em lugar algum no programa acima.
Se voce já fizesse alguma tentativa, o proprio erro no video nos daria alguma dica de pra onde deveriamos atacar.

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 10 Jul 2016 22:23
por Vonnilmam
Olá andré,

Então eu não ousei colocar, justamente porque não sei por onde começar, por isso deixei em branco.

Eu tentei algumas formas, sem sucesso.

Se possivel gostaria de sugestões de vocês, que entendem melhor C do que eu...

O intuito é debulhar essa rotina, entender o raciocinio das coisas.

Muito obrigado

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 11 Jul 2016 08:26
por andre_luis
Posso estar te induzindo a usar a técnica preferida daqueles que tem preguiça de raciocinar, mas muitas vezes funciona; existe uma sistemática nisso. O que voçê já conseguir fazer funcionar meia-boca, já vai nos dar uma dica da função de cada variável na imagem apresentada no painel. É lógico que poderiamos sentar no código e tentar entender de um modo de primeira, mas ok, vamos lá: Aqui vai minhas sugestões pra primeira tentativa, por aproximação sucessiva:

  • Cria o TRIS da Porta C, espelhando exatamente o que é feito na Porta B.
  • Faça com que a 1a coluna da porta C receba sempre o valor da 8a coluna da Porta B.
  • O resto vai depender do resultado acima...

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 11 Jul 2016 10:48
por Vonnilmam
Bom dia a todos,

Amigo, Andre, não é questão de preguiça, por favor não interprete mal.

Realmente sou bem crú em C, eu andei fazendo umas alterações, mas não consegui o êxito de correr a mensagem nos dois displays.

Vou postar hoje o que eu tentei fazer, ok,

Lembrando que essa rotina, não foi eu quem desenvolveu, tomei ela como base de um site (microcontrolandos).
Posso estar enganado, mas estou entendendo que deveria iniciar apartir de algo funcional, tentando entender passo a passo as coisas, neste caso esbarrei nesse ponto.

Eu já consegui incluir a rotina de leitura do lm35, adicionei também um ds1307, tudo beleza, inclusive consegui isso com as dicas valiosas de vocês, que são experts no assunto, por isso me senti avontade para pedir ajuda, pelo Amor de Deus, não me tenham mal.


Muito obrigado pela atenção.

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 11 Jul 2016 12:35
por andre_luis
Bom, só pra não deixar dúvidas, quando disse "preguiça", me referi á mim mesmo. :lol:
Desculpa se você entendeu de modo diferente, ou se não expliquei direito... :oops:

De qualquer modo, voltando ao raciocínio anterior, não sei se existe uma nomeclatura pra isso, mas eu chamaria de programação "incremental", onde vamos dando tapas nas variáveis pra ver o que aconteçe. Enfim, não é das melhores sugestões que posso te dar, mas é como eu faço quando me falta o raciocínio, e seja por sorte ou fruto do caos, acaba funcionando.

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 14 Jul 2016 20:33
por Vonnilmam
Olá a todos,

Consegui a solução, resolvi tudo em assembler.

Obrigado pelas dicas e opniões.

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 15 Jul 2016 06:38
por Vonnilmam
Bom dia amigos,

O meu objetivo é entender o C, eu acho que a dificuldade esta em mim mesmo em assimilar o conceito de programação entre ASM e C.
Mas chego lá e quero contar com as valiosas dicas dos mestres.

Eu acabei resolvendo o dilema de acionar mais de uma matriz de leds, acabamos fazendo em ASM, fiz uma demo para acessar 5 matrizes.
Quem desejar uma cópia, inclusive com a simulação no proteus, me peça pelo email: agitecnologialtda@hotmail.com, que terei o maior prazer eme enviar uma cópia dos arquivos. :roll:

Agora o meu desafio será fazer funcionar em C, pelo menos essas duas matrizes, tá dificil mas vamos conseguir entender a lógica, estou até querendo iniciar do zero outra rotina para esse hardware, se alguém tiver uma sugestão de uma leitura mais enxuta e limpa da tabela de caracteres, por favor ajude.

Obrigado a todos vocês, pela ajuda.

Vonnilmam

Re: NOVAS DÚVIDAS, Matriz com dois caracteres.

MensagemEnviado: 15 Jul 2016 09:00
por andre_luis
Pena que voce desistiu de insistir no C por agora, eu já estava esperando pelo seu código revisado e pelo vídeo seguinte, mas pelo menos agora já sabe pelo menos que o HW acima funciona, e isso foi positivo. Na minha opinião se você conseguiu resolver em ASM, já pegou o mecanismo de como resolver em C, e pra terminar o código acima faltaria pouco. Não precisaria em princípio reiniciar do Zero, seu código acima implementa na minha opinião bem mais da metade do que você precisa pra terminar. Com relação á sua aparente insegurança com o "C", depois vai perceber que é tranquilo, e não vai mais querer voltar para o ASM novamente.