Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: armsistem - 11 Mart 2012, 11:54:50

Başlık: lpc1769 uart problem for integer data send
Gönderen: armsistem - 11 Mart 2012, 11:54:50
Arkadaşlar merhaba , uygulama kitinden butona basıldığında x değerini birer birer arttıran bir program yaptım (butona basıldımı x=x+1) bu değeri lcd ye basabiliyorum fakat uartta problem yaşıyorum. Bu işin mantığı nedir.Int bir değer uarta veri gönderirken nasıl bir yol izlenir. Uarta string ifade veri gönderirken problem yok.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: fatihinanc - 11 Mart 2012, 12:30:24
UART üzerinden her seferinde bir basamak göndermeniz gerekiyor.
Sayı göndermeye çalıştığızda olmaz çünkü bu değeri ASCII olarak ekranda görüntüleyemezsiniz.

Mesela 123 diye bir sayıyı UART üzerinden göndermek istiyorsunuz;
Önce bu sayının basamaklarını bulmalısınız;

sayi = 123;
birler = (sayi % 10) +48;
onlar = (sayi /10) %10) + 48;
yuzler = (sayi /100) +48;


sonra da uart_send gibi bir fonksiyon ile bunları ASCII karakter olarak UART üzerinden göndereceksiniz.
Bir diziye atıp for döngüsü ile de gönderebilirsiniz.

uart_send(yuzler);
uart_send(onlar);
uart_send(birler);


Kolay Gelsin.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: mcan - 11 Mart 2012, 13:19:34
Printf kullan. printf("integer sayi = %u",degisken), gibi kullanabilirsin. Kullandığın derleyicide retarget  olayını kullanman gerekebilir.
Örnek retarget şu şekilde kullanıyorum bendeki mcu cm3 derleyici keil,

int fputc(int ch, FILE *f)
{ while ( !(USART1->SR & USART_SR_TXE) );
USART1->DR = (uint16_t)(ch & 0x01FF);
while ( !(USART1->SR & USART_FLAG_TC) );
return (ch);
}

int fgetc(FILE *f)
{
while (!(USART1->SR & USART_FLAG_RXNE));
    return ((uint16_t)(USART1->DR & (uint16_t)0x01FF));
}
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: armsistem - 11 Mart 2012, 14:50:21
yanıtlar için teşekkürler peki int i =356 i yi string char="356" şekline çevirezmiyiz.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: mcan - 11 Mart 2012, 14:59:30
sprintf ile çevirirsin
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: armsistem - 11 Mart 2012, 15:58:07
mcan arkadaşım ben den hızlı davramışın sprint ile çevirdim çözüme ulaştım ,int to string yapıyorum ,istediğim oldu lakin kulağı tersten tutmak değil dimi bu iş ?
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: yamak - 11 Mart 2012, 17:32:46
Alıntı yapılan: armsistem - 11 Mart 2012, 15:58:07
mcan arkadaşım ben den hızlı davramışın sprint ile çevirdim çözüme ulaştım ,int to string yapıyorum ,istediğim oldu lakin kulağı tersten tutmak değil dimi bu iş ?
Neden ki?Bence bu en kolay yol.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: armsistem - 11 Mart 2012, 22:31:11
Sağol yamak hocam , bu programlama işini mbed tarzı hazır kütüphane vs. şeklinde de yapabilirdim ben biraz daha temele inmek istiyorum daha farklı mcu programlarken zorluk çekmemek için.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: matador - 30 Haziran 2012, 14:32:45
int data nasıl string'e çeviriliyor?
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: yamak - 30 Haziran 2012, 15:08:35
itoa fonksiyonu ile dönüştürebilirsin
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: matador - 30 Haziran 2012, 16:06:11
hocam bunu yaptım ama stringi inte dönüştüremedim fonksiyonu denediğim zaman uart bağlantısı kesiliyor
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: hosiminh - 02 Temmuz 2012, 16:59:51
bir "debug log" un varsa örneğin elindeki görmek istediğin rakam 74 diyelim veya klavyeden giriş yapacaksın bu durumda aşağıdaki gibi kullanabilirsin

x= atoi("değişken");
dbglog("x: %d",x);

burada klavyeden x e ne girdiysen dbglog mekanizmanda onu görürsün.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: matador - 02 Temmuz 2012, 19:28:14
benim amacım şu ben uart kullanan rf modülden string bilgiyi göndereceğim alıcı bu string bilgiyi integer yapacak. atoi fonksiyonuna keilin internet sitesinden baktım denedim yanlış oldu isis te deneme yaparken virtual terminal kullandım atoi fonksiyonunu denediğimde haberleşme olmadı programdan kaldırınca düzeldi.
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: yamak - 02 Temmuz 2012, 23:14:06
Aldığın karakterlerden 48 çıkar ve bir int değişkene yükle integer a dönüştürmüş olursun. Örnek:
#include <stdio.h>
int main(void)
{

int i;
char a;
a=getchar();
i=a-48;
printf("%d",i);
}
Başlık: Ynt: lpc1769 uart problem for integer data send
Gönderen: matador - 03 Temmuz 2012, 20:43:48
çok teşekkürler.