Falta memória!!!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Falta memória!!!

Mensagempor renanwalenczuk » 02 Out 2009 11:43

Bom pessoal estou com um certo probleminha de memória.
Estou usando o Pic16F870, mas o programa que estou desenvolvendo é um pouco grande até certo ponto.

Quando eu mando imprimir este valor:
printf("%01.2fV\r\n",tensao);
//x.xxV

A memória utilizada aumenta 20%, ou seja, meu programa está consumindo 78% mas depois dessa linha a memória passa pra 98%.
O que devo fazer. :?:
"O segredo da criatividade é saber como esconder as fontes."
Albert Einstein
renanwalenczuk
Nibble
 
Mensagens: 69
Registrado em: 17 Nov 2008 14:22
Localização: Canoas - RS

Mensagempor fabim » 02 Out 2009 11:47

não use printf ou sprint ou sei lá o que ntf.
Isso chupa uma memo lascada.

Faz na unha,

o que exatamente você precisa fazer ?

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 renanwalenczuk » 02 Out 2009 11:50

Eu só preciso enviar esse valor de tensão para o PC.
O valor tem que ter duas casas decimais:

1.24V por exemplo

Sendo este valor um float.

Valew
"O segredo da criatividade é saber como esconder as fontes."
Albert Einstein
renanwalenczuk
Nibble
 
Mensagens: 69
Registrado em: 17 Nov 2008 14:22
Localização: Canoas - RS

Mensagempor ze » 02 Out 2009 13:24

Só pra transf pela serial é fácil:
...//configurar o hw, lógico!
char dado;
TXREG= dado; while(!TRMT); //transmite 1 byte
Pra separar um float em 4 char pode fazer uma struct dentro de uma union com char´s e float. Mas agora tô com pregui de pensar. Afinal sabe que dia é hoje??

bfds........ não! com chuva de novo não!!!
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor andre_luis » 03 Out 2009 10:56

Renan,

Eu desaconselho usar o printf(). Já tive problemas também com o processamento porque o printf() segura o programa num laço fechado enquanto não terminar de enviar o ultimo caractere da string.

Use o putc().


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor polesapart » 03 Out 2009 14:33

Não testei muito, mas deve ser um começo:

Código: Selecionar todos
#include <stdio.h>
#include <math.h>

void imprime_int(unsigned int data)
{
  unsigned char buffer[6], *p = &buffer[sizeof(buffer)];
  *--p = 0;
  do
  {
     *--p = (data % 10) + '0';
     data /= 10;
  } while (data && p != buffer);
  while (*p)
    putchar(*p++);
}

void imprime_float(float data)
{
  float ipart;
  unsigned int frac = (unsigned int)(modff(data, &ipart) * 100.0);
  imprime_int((unsigned int)ipart);
  putchar('.');
  imprime_int(frac );
  putchar('\n');
}



Boa sorte compilando isto pra pic hehe. A precisão é de dois digitos, data pelo multiplicador 100.0 na funcao imprime_float, e pode ser aumentada (1000.0 = 3 digitos, 10000.0 = 4, etc, mas float não representa muito bem os números, quanto maior o multiplicador, mais imperfeições vão ocorrer nas frações).
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor polesapart » 03 Out 2009 14:44

P.S..: Eu não previ suporte a números negativos :P
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor Djalma Toledo Rodrigues » 03 Out 2009 15:25

polesapart escreveu: A precisão é de dois digitos, data pelo multiplicador 100.0 na funcao imprime_float, e pode ser aumentada (1000.0 = 3 digitos, 10000.0 = 4, etc, mas float não representa muito bem os números, quanto maior o multiplicador, mais imperfeições vão ocorrer nas frações).

Nunca confunda Precisão com Resolução

Para que haja Precisão se faz necessária Resolução
mas, a recíproca pode não ser verdadeira.
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor polesapart » 03 Out 2009 15:37

Djalma Toledo Rodrigues escreveu:
polesapart escreveu: A precisão é de dois digitos, data pelo multiplicador 100.0 na funcao imprime_float, e pode ser aumentada (1000.0 = 3 digitos, 10000.0 = 4, etc, mas float não representa muito bem os números, quanto maior o multiplicador, mais imperfeições vão ocorrer nas frações).

Nunca confunda Precisão com Resolução

Para que haja Precisão se faz necessária Resolução
mas, a recíproca pode não ser verdadeira.
.


Corretíssimo; Eu tenho problema com termos :D

Abraços!
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor buiz » 05 Out 2009 16:11

Olá Renan,

Por acaso vc vai fazer a prova das Olimpiadas do Senai?

Somente por curiosidade.

Um abraço.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor renanwalenczuk » 05 Out 2009 19:40

Vou competir por eletrônica industrial.
Em Caxias do Sul.
"O segredo da criatividade é saber como esconder as fontes."
Albert Einstein
renanwalenczuk
Nibble
 
Mensagens: 69
Registrado em: 17 Nov 2008 14:22
Localização: Canoas - RS

Mensagempor buiz » 06 Out 2009 09:01

Você esta tentando fazer uma mensagem rolante da esquerda para a direita "Olimpiada do Conhecimento 2009" na 1º linha, relógio com dois pontos piscantes e voltimetro na 2º linha, ajuste do relógio por 3 botões e envio para o HyperTerminal. Correto?

Um abraço e Boa Sorte para você!!
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor renanwalenczuk » 06 Out 2009 22:49

É isso mesmo.
Você te algun "vínculo" com o senai ou conhece alguém de lá?
"O segredo da criatividade é saber como esconder as fontes."
Albert Einstein
renanwalenczuk
Nibble
 
Mensagens: 69
Registrado em: 17 Nov 2008 14:22
Localização: Canoas - RS


Voltar para PIC

Quem está online

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

x