Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: fide - 21 Aralık 2018, 19:29:31

Başlık: Float printf problemi
Gönderen: fide - 21 Aralık 2018, 19:29:31
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.
Başlık: Ynt: Float printf problemi
Gönderen: serdararikan - 21 Aralık 2018, 20:07:01
sprintf(tempStr,"%3.2f",voltValue);
Böyle deneyin
Başlık: Ynt: Float printf problemi
Gönderen: fide - 21 Aralık 2018, 20:12:35
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.
Başlık: Ynt: Float printf problemi
Gönderen: serdararikan - 21 Aralık 2018, 20:46:07
Değişken den önce virgül koymanız gerekiyor
Başlık: Ynt: Float printf problemi
Gönderen: quarko - 21 Aralık 2018, 21:01:04
printf in kök fonksiyonunu seri porta yönlendirdiniz mi peki ?
Başlık: Ynt: Float printf problemi
Gönderen: fide - 21 Aralık 2018, 21:31:42
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.
Başlık: Ynt: Float printf problemi
Gönderen: fide - 21 Aralık 2018, 21:32:28
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.
Başlık: Ynt: Float printf problemi
Gönderen: gokhangokcen - 22 Aralık 2018, 11:25:30
@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);
Başlık: Ynt: Float printf problemi
Gönderen: fahri- - 22 Aralık 2018, 11:29:40
Hocam eğer LCD ekran kullanıyorsanız bunu deneyin.

printf(LCD_PUTC,"v:%3.2f",voltValue);
Başlık: Ynt: Float printf problemi
Gönderen: quarko - 22 Aralık 2018, 11:49:46
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;
}
Başlık: Ynt: Float printf problemi
Gönderen: fide - 01 Ocak 2019, 15:49:13
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.
Başlık: Ynt: Float printf problemi
Gönderen: RaMu - 01 Ocak 2019, 16:46:35
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.