Página 1 de 1

Me ajudem, por favor...

MensagemEnviado: 10 Nov 2016 17:17
por Vonnilmam
Caros e ilustres, amigos.

Sou eu novamente,

Vejam só, terminei o programa que escreve através de vetores em "ROM", textos num GLCD.

Bom, consegui terminar, funcionar belezinha, só que me deparei com um problema MALUCO e preciso de ajuda, de vocês que são muito mais experientes que o veio vonnilmam que não passa de um NOVATO.

O que ocorre é que na trecho de rotina abaixo, tem uma função "bytetostr (index_table, txt);", ela não serve para nada no programa, mas se eu tirar essa função, o contador "DATAIN", não incrementa...DOIDERA, tô boiando, sem entender nadinca...Agora se eu eliminar essa função e eliminar o #include "Buffer_texto.h", do programa, o contador funciona normalmente...

SOCORRO....qui que eu tô fazendo de errado?

Obrigado

cpp code
// ESSA AQUI É A TALELA GRAVADA NA "ROM" DO MCU

// ---------------------------------------------
// RELAÇÃO DE TODOS OS TEXTOS / TIMBRES GM 170
// "INDEX_TABLE" é o indexador, "TXT" é um ARRAY 17
// O TAMANHO DO TEXTO É FIXO EM 17 CARACTERES + END (18)
// ---------------------------------------------
const code char vetor[3][18] = {
"00 Grand Piano ",
"01 Bright Piano ",
"02 El Grand Piano",

//***********************************************

// ESSA AQUI É O MAIN LOOP DE TESTE.
// TODAS AS VARIÁVEIS ESTÃO DECLARADAS COMO USINGNED CHAR
// EXETO A "TXT" QUE UM ARRAY FIXO DE 18 CELULAS.

datain = 0;
while(1) {

if (datain == 76)
{
datain = 255;
}
else
{
datain ++;
index_table = datain;
#include "Buffer_texto.h" // Tabela de textos gerais.
Glcd_Write_Text(txt, 25, 4, 1); // Envia Texto para GLCD
bytetostr (index_table, txt);
delay_ms(1000);
}

Re: Me ajudem, por favor...

MensagemEnviado: 10 Nov 2016 17:20
por Vonnilmam
Esqueci de mencionar que o arquivo #include "Buffer_texto.h", é o listado acima, ok

Re: Me ajudem, por favor...

MensagemEnviado: 10 Nov 2016 17:46
por Vonnilmam
Peço perdão...


Segue o código correto, favor desconsiderar o anterior, eu esqueci de adcionar uma parte...

Considerem esse aqui:

cpp code
// ESSA AQUI É A TALELA GRAVADA NA "ROM" DO MCU

// ---------------------------------------------
// RELAÇÃO DE TODOS OS TEXTOS / TIMBRES GM 170
// "INDEX_TABLE" é o indexador, "TXT" é um ARRAY 17
// O TAMANHO DO TEXTO É FIXO EM 17 CARACTERES + END (18)
// ---------------------------------------------
const code char vetor[3][18] = {
"00 Grand Piano ",
"01 Bright Piano ",
"02 El Grand Piano",

//***********************************************

// ESSA AQUI É O MAIN LOOP DE TESTE.
// TODAS AS VARIÁVEIS ESTÃO DECLARADAS COMO USINGNED CHAR
// EXETO A "TXT" QUE UM ARRAY FIXO DE 18 CELULAS.

datain = 0;
while(1) {

if (datain == 76)
{
datain = 255;
}
else
{
datain ++;
index_table = datain;
#include "Buffer_texto.h" // Tabela de textos gerais.
Glcd_Write_Text(txt, 25, 4, 1); // Envia Texto para GLCD
bytetostr (index_table, txt);
delay_ms(1000);
}


// ---------------------------------------------
// MATRIX MULTIDIRECIONAL VETORIZADA BUFFER 18
// ---------------------------------------------
txt[0] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[1] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[2] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[3] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[4] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[5] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[6] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[7] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[8] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[9] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[10] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[11] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[12] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[13] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[14] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[15] = vetor[index_table][caracter];
vetor [index_table][caracter++];
txt[16] = vetor[index_table][caracter];
txt[17] = 0;
caracter = 0; // Guia do indexador de matriz

Re: Me ajudem, por favor...

MensagemEnviado: 10 Nov 2016 20:38
por andre_luis
Vonnilmam escreveu:O que ocorre é que na trecho de rotina abaixo, tem uma função "bytetostr (index_table, txt);", ela não serve para nada no programa, mas se eu tirar essa função, o contador "DATAIN", não incrementa...


Não é que essa função nao sirva pra nada, mas na verdade o que ela parece estar fazendo é incluir o caractere NULL no array de caracteres.
Pensando bem, acho que me enganei...tem de olhar com mais calma.

Re: Me ajudem, por favor...

MensagemEnviado: 11 Nov 2016 14:40
por Vonnilmam
Andre do céu e amigos,


Agradeço as dicas,

Obrigado,

Re: Me ajudem, por favor...

MensagemEnviado: 14 Nov 2016 11:17
por ze
Quase me deu vontade mencionar que vc nem deu bola ou retorno pras dicas lá no outro post mas acho que nem vou falar nada. Fofoquemos neste...

-estranho espaço antes do ++
-estranho colocar o #include dentro do loop
-ao retirar a função, seu compilador deve estar decidindo que a variável datain é inútil pois não é usada em lugar nenhum ou é usada e não causa nada no hw ou sw. O mesmo para index_table. Tente desligar as otimizações
...

Re: Me ajudem, por favor...

MensagemEnviado: 15 Nov 2016 07:35
por tcpipchip
Voce testou em outro compilador ?

O mikroc esta cheio de bugs, principalmente de paginaçao (pelo menos nas versoes mais antigas)

Re: Me ajudem, por favor...

MensagemEnviado: 15 Nov 2016 10:56
por pamv
"..ela não serve para nada no programa, mas se eu tirar essa função, o contador "DATAIN", não incrementa..."

Você precisa tira-la?
Outra dúvida, você pegou esse trecho de programa de algum exemplo da mikroe?

Re: Me ajudem, por favor...

MensagemEnviado: 15 Nov 2016 22:10
por Vonnilmam
Boa noite a todos,


Caro amigo "ze", pelo amor de Deus, me perdoe, não foi minha intenção... Lá no outro post, o problema já havia sido resolvido, com a dica do andré e do info...

Eu sou muito grato a todos vocês, nossa, muito mesmo. Como vocês sabem estou aprendendo "C"...vim do assembler da velha guarda e tudo é novidade para mim.

Eu acabei descobrindo o problema, adivinhem aonde estava?

Lá na configuração do MCU, tem uma opção que habilita ou desabilita o A/D no portB (eu tô usando o PIC18F4520), então, só foi desabilitar essa opção e tudo voltou ao normal...

"ze", quanto aos espaços, já testei com e sem espaços e funciona do mesmo jeito...mas vou pegar sua dica e vou começar de agora em diante a não deixar espaços.

Agora, pessoal que aprendi a mexer com VETORES e MATRIZES, vou mexer com um GLCD colorido com o processador SSD1963. Alguém ai já mexeu com essa coisinha.

Gozado é que no MIKROC, tem uma LIB para esse controlador, porém, não há exemplo com rotina, tal como em outros exemplos.

Eu tentei inicializar esse GLCD colorido e não consegui, dá erros...alguém tem uma dica?

Obrigado,

Re: Me ajudem, por favor...

MensagemEnviado: 16 Nov 2016 13:14
por tcpipchip
adcon1 ? !

Re: Me ajudem, por favor...

MensagemEnviado: 18 Nov 2016 20:39
por Vonnilmam
Tcpip, eu estou utilizando o mikroc, ok

Lá na configuração do microcontrolador, tem a opção de configurar o PORTB como digital ou entrada analógica. No modo standar, ele vem em modo entrada analógica.

Depois que eu mudei para DIGITAL, funcionou direitinho...

Obrigado,