Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Float printf problemi

Başlatan fide, 21 Aralık 2018, 19:29:31

fide

Arkadaşlar merhaba.
Dspic33f mcu ile Adc'den okuduğum değeri ekrana yada seri porta printf /fprintf ile yazdırmak istiyorum. Aşağıdakileri internette bulup denedim ama netice alamadım.

fprintf (dbg, "v:%3.2f/r/n"voltValue)

sprintf(tempStr,"%3.2f"voltValue)
fprintf (dbg, "v:%s/r/n" tempStr)

fprintf (dbg, "v:%3.2w/r/n"voltValue)

Bir çıkış bulamadım.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

serdararikan

sprintf(tempStr,"%3.2f",voltValue);
Böyle deneyin

fide

Alıntı yapılan: serdararikan - 21 Aralık 2018, 20:07:01sprintf(tempStr,"%3.2f",voltValue);
Böyle deneyin

Bunun

sprintf(tempStr,"%3.2f"voltValue)
fprintf (dbg, "v:%s/r/n" tempStr)

İle farkını göremedim.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

serdararikan

Değişken den önce virgül koymanız gerekiyor

quarko

printf in kök fonksiyonunu seri porta yönlendirdiniz mi peki ?
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

fide

#5
Alıntı yapılan: serdararikan - 21 Aralık 2018, 20:46:07Değişken den önce virgül koymanız gerekiyor
Ansi c istiyor biliyorum ama ccs c bu şekilde kabul ediyor.
Problemim yazdıramamak değil. Saçma sapan bir veri yazıyor. Doğru veriyi, doğru formatta alamadım.
Bunu başta belirtmem gerekirdi. Kusura bakmayın.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

fide

Alıntı yapılan: quarko - 21 Aralık 2018, 21:01:04printf in kök fonksiyonunu seri porta yönlendirdiniz mi peki ?


Dediğinizi tam anlayamadım.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

gokhangokcen

@fide hocam lcd ekrana cihaz süresi ve akü voltajını yazdırdığım kısım şu şekilde;

cihaz dakika ve cihaz saniye cihazın çalışma süresini belirtiyor. dakika ve saniye 40 ise 40 olarak yazılır, 10'dan küçük 9-8-7 gibi ise 09-08-07 şeklinde yazılır akü voltajı ise float değerdir. noktadan sonra 1 hane yazılacağını temsil eder.

printf(lcd_putc,"%02d:%02d  AKU %2.1fV",cihaz_dakika,cihaz_saniye,aku_voltaji);
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

fahri-

Hocam eğer LCD ekran kullanıyorsanız bunu deneyin.

printf(LCD_PUTC,"v:%3.2f",voltValue);

quarko

Alıntı yapılan: fide - 21 Aralık 2018, 21:32:28Dediğinizi tam anlayamadım.

Normalde printf fonksiyonu usart tan veri basabilmek için değildir. Ama bunu yönlendirmek mümkün tabiki de. CCS C de bu otomatik olarak yapılıyor olabilir. Onu tam bilmiyorum. Diğerlerinde printf leri kullanabilmek için (örnek STM32), fputc fonksiyonunu usart tan veri gönderebilmek için ayarlamanız gerekiyor. Şunun gibi;

int fputc(int ch, FILE *f)
{
  USART_SendData(USART1, (uint8_t) ch);
  while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  
  return ch;
}
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

fide

Float printf problemi yeni bir boyut kazandı.

Dspic33fj128mc804 çipinden elimde 7-8 adet vardı. Daha önceleri çift uartı olmasından dolayı bikaç yerde kullanmıştım.

Pic24fj256gb106 çipi ile konu başlığını açarken yazdığım
 
fprintf(dbg,"v:%3.2f/r/n"voltValue)

 kodlar düzgün çalışırken mc804 denetleyicide çalışmıyor.

Aynı şekilde fgets(deg, port) komutu da diğer denetleyicilerde çalışırken mc804 te çalışmıyor.

Sebebini anlamış değilim.

Bir de CCS C derleyici de 18f26k22 için 64 mhz pll olarak ayarlayamadım. Kristal 20mhz.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

RaMu

Datasheet e bakman lazım,
muhtemelen pll ancak 2 4 8 gibi sayılarla çarpabiliyordur,
yani 16MHz kristal ile 64 MHz elde edebiliyorsundur
tabi mcu o frekansta çalışabiliyor ise.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html