SPRINTF & KEIL

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

SPRINTF & KEIL

Mensagempor fabim » 29 Nov 2010 11:41

Alguém aqui esta tendo problemas com o uso de sprintf no keil ?
Tipo, não esta obedecendo a formatação!!!!

Ta dureza.
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 proex » 29 Nov 2010 11:59

Essa função esta bixada faz tempo e o pessoal da keil nao dá bola.

Tá cheia de bugs.

Use esta: http://www.coocox.com/repo/c37f2731-96e ... printf.zip

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Nightcrawler » 29 Nov 2010 12:08

Bah, e eu achando que o problema era comigo. Notei que as vezes a formatação sai correta, outras vezes imprime varias casas a mais... :shock:
Diego
Avatar do usuário
Nightcrawler
Byte
 
Mensagens: 450
Registrado em: 11 Out 2006 14:20
Localização: Santa Maria - RS

printf source code

Mensagempor tcpipchip » 30 Nov 2010 08:19

Opa
Veja isto
Talvez ajude
http://www.menie.org/georges/embedded/
TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor styg » 30 Nov 2010 09:41

da pra especificar que tipo de problema?

uso ela faz tempo e nunca notei nada de errado..
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor fabim » 30 Nov 2010 09:56

char text[15];
float temp;

temp = 26.31;

sprintf(text,"TEMP: %00.00f", temp);
ou
sprintf(text,"TEMP: %2.2f",temp);
ou
sprint(text,"TEMP: %.2f", temp);

somente a primeira formatação funciona, lembrando que ele não esta inserindo o ".".. As outras formas o sprintf trava, e não faz absolutamente nadegas.

Cabrito ?
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 Rodrigo_P_A » 30 Nov 2010 10:05

fabim escreveu:char text[15];
float temp;

temp = 26.31;

sprintf(text,"TEMP: %00.00f", temp);
ou
sprintf(text,"TEMP: %2.2f",temp);
ou
sprint(text,"TEMP: %.2f", temp);

somente a primeira formatação funciona, lembrando que ele não esta inserindo o ".".. As outras formas o sprintf trava, e não faz absolutamente nadegas.

Cabrito ?


qual o tamanho que vc colocou na Heap Size?

as rotinas printf, sprintf usam alocação dinâmica de memória para alocar as variáveis necessárias para conversão do valor e depois liberam a memória automaticamente.

Eu tenho 99% de certeza que a sua HEAP SIZE ou está com 0 ou está muito pequena, e por isso não funciona.

Eu não acho que tem um bug tão grande assim , ainda mais no Keil.

Só mais um detalhe, se você quer usar sprintf, printf sem usar alocação dinâmica, marque a opção MICROLIB, a MICROLIB não usa alocação dinâmica, mas tem algumas limitações, para saber quais, dá uma olhada no help do keil, ele é bem completo!

at+
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor fabim » 30 Nov 2010 10:23

o heap ta com 8K!!!!
Eu ja tinha mexido nisso pois você explicou isso a muito tempo aqui!!! LEmbra ?Você ja havia explicado mais umas 2 vezes.
É bug mesmo, nos Uvision <4 ta beleza, de 4 pra cima, num funciona direito!!!
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 Rodrigo_P_A » 30 Nov 2010 10:24

fabim escreveu:o heap ta com 8K!!!!
Eu ja tinha mexido nisso pois você explicou isso a muito tempo aqui!!! LEmbra ?Você ja havia explicado mais umas 2 vezes.
É bug mesmo, nos Uvision <4 ta beleza, de 4 pra cima, num funciona direito!!!


vixe, então... usa a que o pessoal indicou.

mas pelo que eu vi a que foi indicada não imprime float


fabim, verifica mais uma coisa, não adianta você colocar a heap size grande e não aumentar o stack tbm, pois ambos são usados para alocar as variáveis.

Tem mais, não adianta colocar um heap size grande, se no seu programa vc usar muitas variáveis, pois a heap size cresce para baixo do topo da RAM, e parece que o Keil não verifica bem isso, nem estouros da pilha.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor styg » 30 Nov 2010 14:41

cara, estranho hein, eu to usando o keil 4.10, e nao acontece isso aí.
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor fabim » 30 Nov 2010 15:09

styg escreveu:cara, estranho hein, eu to usando o keil 4.10, e nao acontece isso aí.


c ta comendo bronha!!!
Isso acontece com o meu, diego, junior "proex", e mais um monte""""""
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 styg » 30 Nov 2010 15:49

capaz, é justamente dessas 2 formas que eu mais uso, é uma coisa que não tem como passar batido

sprintf(text,"TEMP: %2.2f",temp);
ou
sprint(text,"TEMP: %.2f", temp);

vou até testar aqui...
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor styg » 30 Nov 2010 15:59

testado,

Imagem

Imagem

Imagem

Uploaded with ImageShack.us
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor fabim » 30 Nov 2010 17:54

é, intão faz favor. Abre a string no wath ali embaixo, e deixa eu ver se a formatação ficou certa... ou se ele fez a formatação
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 fabim » 30 Nov 2010 17:55

á sim, o 00.00 converte para 4 digitos decimais, mais não insere o "."...
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!!!?

Próximo

Voltar para ARM

Quem está online

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

x