STM32F10X Çalışmalarım

Başlatan Mucit23, 12 Mart 2012, 11:17:48

muhittin_kaplan

#120
Bir image bastım. 100x69 boyutundaki bir image için 6900 adet 16bit bilgi gerekli oldu
Doğrudan img basmak pek mantıklı gelmiyor bana (13Kb mi oluyor yoksa beynim mi bulanıyor)


mesaj birleştirme:: 27 Mart 2013, 20:44:59

"ST's STM32F100RB operates at a maximum speed of 24 MHz and features 128 Kbytes of Flash and 8 Kbytes of SRAM."

sadece tam ekran (240x320) bir img 150kb ediyor :D

Mucit23

Hocam Yok Benim Acilen SD kart işini çözmem lazım. Direk Resim Basmak akıl karı değil. Çok masraflı oluyor böyle, 2. Resimde şiştim kaldım..

Ben şunu anlamıyorum.

Programda 2 adet 320x240 çözünürlüğe sahip resim var. Bunun yanı sıra 14 tanede 20x20 resim var. Bunların hepsi derleniyor program çalışıyor.

Programımın sadece 2 yerinde 320x240 resim ekrana basıyorum. 1. Resmi bassam sıkıntı olmuyor ama mesela programın başka yerinde 2. resmi bassam yukarıdaki hataları veriyor

Program hafızasına sığmasa ozaman neden tek resim kullanılırken derlensin, Sığıyorsa neden bu hatayı veriyor.

Bence Ram ile felan ilgisi yok.

Çünkü iki resimide ve diğer 14 ufak resminde programa dahil edip derliyebiliyorum.


Acaba bitmap resim basma rutinimdemi sıkıntı var bi baksanız çok iyi olacak

void GLCD_Bitmap (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap) {
  int i;
  unsigned short *bitmap_ptr = (unsigned short *)bitmap;
  int size = (w * h);
	
  GLCD_SetWindow (x, y, w, h);

  wr_cmd(0x22);
  wr_dat_start();
  for(i=0;i<size;i++)
	{
     wr_dat_only (*bitmap_ptr++); 
  }
  wr_dat_stop();
	bitmap_ptr=0;
}


:'( :'( :'( :'(

Gökhan BEKEN

Konunun sadece son sayfasını okuyarak daldım. Eğer doğru anladıysam size resim pixellerini okuyan program lazım galiba. Kendiniz yaparsanız istediğiniz gibi bir dosyaya her türlü formatta yazabilirsiniz. Ben daha önce pixel okuyup ekranda tablolayan birşey yazmıştım c# ile. İsterseniz yollayabilirim.
Özel mesaj okumuyorum, lütfen göndermeyin.

muhittin_kaplan

#123
meftun durduğun hata hemen alalım. bende başladım öyle bir programa hatta benimki fontu img çeviriyor oradan getpixel ile hex kodlarını alıyorum.
şimdi renk kodlarınıda alacağım get pixel ile

mesaj birleştirme:: 27 Mart 2013, 21:39:15

@ mucit


unsigned char LCD_DrawPicture2(unsigned char startX, unsigned int startY,unsigned char sizeX, unsigned char sizeY)
{
	unsigned int i,j,veri,adr=0;
  
			LCD_CS(0);
			
		LCD_Set_Window(0,0,68,99);
	    LCD_WR_REG8(0x22); 
	for (j = 0; j<100; j++)
	{ 	
    	for(i = 0; i<69; i++)
    	{
	 

	    	veri=gImage_resim[adr++];

			LCD_WR_DATA16(veri);
    	}
   
  	}
			LCD_CS(1);
return 0;
}


ben yukardakini kullandım. Ama iki adet değil bir adet bile 240x320 img kullanamadım. küçük img ları düzgün basıyor. yukardaki algoritma ile senin ki aynı mantıkta.

bilgi basacak alanı hazırla (GLCD_SetWindow (x, y, w, h);)

img arraydan renk bilgisini oku ve ardışık olarak hazırlanmış alana  pixel pixel bas

Gökhan BEKEN

Özel mesaj okumuyorum, lütfen göndermeyin.

Mucit23

#125
Meftun program için teşekkürler.

Hocam bu problemin mantıklı bir açıklamasını arıyorum.

Gerbay Hocam, Klein Hocam nerelerdesiniz :-X :-X

Edit;

Ramle ilgili kısım şurası olabilir.

Normalde Resimleri main programında kullanabilmem için şöyle tanıtıyorum

   extern unsigned char Ana_Res[];
   extern unsigned char image_1[];

Bununla ilgili olabilirmi?

Mucit23

Arkadaşlar Bu resimler başka nasıl saklarım.

Bildiğiniz başka bir yöntem varmı?

M_B

@Mucit23 hocam;
SD kart veya w25q16bv model SPi Flash kullansanız olmaz mı ?
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Mucit23

Hocam bugün bu işi halletmem lazım.

Aslında En çok SD karttan okumak isterdim ama vaktim yok. SD karttan yapmak çok zor. Başka bir çaresini bulmam lazım.

Bazı tespitlerim var sorunun sebebini anlamamıza yardımcı olabilir.

Şimdi hocam iki adet 320X240 çözünürlüğe sahip resim var. Bunun yanı sıra 14 tanede ufak (20x20) Resim var.
Proje ağacım aşağıdaki gibi.


image hoster

Bu resimlerin hepsi resimdeki gibi programa dahil edip derliyorum. Ufak resimlerin hepsi programda kullanılıyor çalışmasında sıkıntı yok. Ana_Res ve image_1 320x240 çözünürlüğe sahip. Şimdi bu resimlerin ikiside programa dahil edip derleyebiliyorum.

Şuanda sıkıntısız olarak Resimlerin birini GLCD_Bitmap ile ekrana basıyorum.
Sorun şurada başlıyor.

Programın başka bir yerinde ikinci resmi ekrana basmak istersem yukarıda bahsettiğim uyarıları alıyorum. Program nedense sadece iki resmin kullanımına izin vermiyor.

Bunu anlam vermiyorum. Dizinin kullanıma izin vermiyor. Resim dizisini kullanmazsam yine program yok..

M_B

Alıntı YapProgramın başka bir yerinde ikinci resmi ekrana basmak istersem yukarıda bahsettiğim uyarıları alıyorum. Program nedense sadece iki resmin kullanımına izin vermiyor.
Bunu anlam vermiyorum. Dizinin kullanıma izin vermiyor. Resim dizisini kullanmazsam yine program yok..
Peki hocam ikinci resmi birinci resim olarak basıp denediniz mi ?
Yani

ikinci resmi bastığınız yerde tekrardan  Ana_Res  resmi basmak

Not: Her iki resim dosyasıda yuklu olsun.

Birde hocam aklıma geldi. Test icin 2. resmin cozunurlugunu (Boyutunu ) dusurup denediniz mi ? Ornek 240x320 değilde. 120x180 gibi.



İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

buzkırıcı

bu resimleri basarken resim hexlerini rame alıp basmıyor mu? 2 resim size ram taşırıyor olabilir? Direk flashtan okuyup basmaya kalksa hızı yetişmeyebilir.(zaten yetiştiremez ekranda kasmalar meydana geliyor) şimdi stm'in ahb bus ı nasıl çalışıyor bilmiyorum ama benim kullandığım işlemcide sdram(32mb) takılı o yüzden usb den sdrame adresliyorum resimleri oradan da işlemci lcd_dma kullanarak ekrana basıyor..
İmza Atmayı bilmem Parnak Bassam olur mu?

Mucit23

#131
Alıntı yapılan: buzkırıcı - 28 Mart 2013, 11:20:59
bu resimleri basarken resim hexlerini rame alıp basmıyor mu? 2 resim size ram taşırıyor olabilir? Direk flashtan okuyup basmaya kalksa hızı yetişmeyebilir.(zaten yetiştiremez ekranda kasmalar meydana geliyor) şimdi stm'in ahb bus ı nasıl çalışıyor bilmiyorum ama benim kullandığım işlemcide sdram(32mb) takılı o yüzden usb den sdrame adresliyorum resimleri oradan da işlemci lcd_dma kullanarak ekrana basıyor..

Hocam iki Resmide Tek tek basıyorum. Sıkıntı olmuyor. Yani Resim datalarında sıkıntı olmaması gerekir.
Programın bir yerinde 1. resmi başka bir yerinde ikinci resmi basmak istersem sıkıntı yaratıyor. İsterse komut hiç çalışmasın farketmiyor.. GLCD_Bitmap(0,0,320,240,image_1);

İki tane bu komuttan olsun program hataya düşüyor. İsterse ikiside çalışmasın. Bitmap fonksiyonunu önceki mesajlarımda vermiştim. Orada alınan dizi komple ram'e atılıyor sanırım.

void GLCD_Bitmap (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap) {
  int i;
  unsigned short *bitmap_ptr = (unsigned short *)bitmap;

Şöyle bir komut var.

İki resimde ayrı ayrı basılıyor hocam. Belki Ramin gerekli bölgelerini temizlersem eğer taşma veya sığmama gibi bir problem olursa çözülebilir. Bundan umutluyum.

Önerebileceğiniz birşey varmı?

bocek

hocam şurda birisi aynı sorunla karşılaşmış
http://www.keil.com/forum/19067/

ve IRAM1'i arttırınca düzeldi filan demiş. Sen de bi denesen?
1 ya da 0. işte 'bit'ün mesele..

Mucit23

Hocam bu değeri nereden değiştireceğim.

bocek

keil->poject->options for target ...
açılan pencerede sağ altta görürsün zaten..
1 ya da 0. işte 'bit'ün mesele..