STM32F107 ile GLCD kullanımı Kütüphane sorunu

Başlatan Mucit23, 23 Ekim 2012, 12:04:52

muhittin_kaplan

sen Glcd kullanırken seviye dönüştürücü felan kullandın mı?

Mucit23

#31
Yok hocam. Bende Winstar WG12864A kullandım. LCD yi 5V ile besliyorum ama dataları direkmen bağlamışım yani dijital olarak 1in seviyesi 3.3V.

mesaj birleştirme:: 05 Kasım 2012, 20:11:04

Ds1302 problemi ile ilgili önerisi olan yokmu?

muhittin_kaplan


Mucit23

Yarın onu dönüştüreyim ozaman hocam. C yi geliştiriyoruz bu vesile ile... 

Şimdi düşünüyorumda Ben lcdyi 5V ile beslediğim zaman LCD den işlemci okuma yaptığında çıkan dataların seviyesi 5V olmazmı. İşlemci çalıştığına göre girişlerin 5V toleranslı olduğunu söyleyebilirmiyiz.

Muhittin Hocam çalıştırabildinizmi LCD yi?

muhittin_kaplan

birşeyler oluyor ama saçma sapan. senin kütüphaneyide denedim, olmuyor. anlamsız çizğiler okunmayan yazılar vs vs. oturup kendim mi yazsam bana yeter kadar.

Mucit23

Hocam sizin LCD ile olabilir. Daha önce sanki forumda benzer bir sorun yaşayan olmuştu.
İşlemci ile LCD arasına 74hc244 gibi bir tampon koymayı deneyin. Gerçi bu sefer okuma yapamayacaksınız ama en azından sorunun bundan kaynaklanıp kaynaklanmadığını öğrenirsiniz.

muhittin_kaplan

#36
proton da 18f4520 ile çalışıyor bu meret. odeğil elimdeki kartı yakacağım..

mesaj birleştirme:: 05 Kasım 2012, 21:53:39

Döndüm geriye.
Elimde olan ST32100VL discovery nin GPIOC (control) ve GPIOB (Data) yı tanımladım verdiğin dosyalardan. sonrasında. "lan arkadaş şu işe bir el atalım bakalım GPIOB den çıkış varmı" dedim. Bağladım Lojik i 3 ve 4 de yok.

Mucit23

stm32F107 dede portb biraz sıkıntılı sanırım. Bende aynı sorunu yaşadım.

Ds18B20 yi kullanıyordum. PortA,C,D ve E de kullanınca problem olmuyor. fakat hiçbirşey yapmadan B ye taşıdığımda çalışmıyor du. Herhalde Portbnin başka ayarları var. Zaten mecbur kalmadıkca B yi kullanmıyorum ben

muhittin_kaplan

#38
SWD pinleri olabilir diye düşünüyordum ki. Öyleymiş sanırım.

mesaj birleştirme:: 05 Kasım 2012, 22:45:56

Bir türlü bulamadım bu PB4 ve PB3 den çıkış alamadığımı ?

mesaj birleştirme:: 06 Kasım 2012, 00:02:21

STM32VL kartının bazı pinlerini Toggle bile yapamıyorum.

PA15-PA14-PA13
PB3-PB4
PC14-PC15
PD0-PD1

ben bunlara data yada control görevi verirsem muhtemeldir ki çalışmaz.
artık yarına kaldı.

muhittin_kaplan

halloldu ama senin kütüphaneyi kullanamadım. verdiğim linkteki driver ı kullanabildim.

Mucit23

#40
Hocam bende bendeki kütüphanede de problem olduğunu düşünüyorum. Özellikle text basarken sıkıntı yaşıyorum. Fakat herzaman olmuyor.

sprintf ile ekrana bir değişkeni string'e çevirip ekrana basıyorum. değişkenin değeri sürekli değişiyor. Ekrana bir yazı basılırken pixel pixel basıldığı için string'in basılacağı nokta ilk önce siliniyor, Sonra yenisi basılıyor. Çalışması bu şekilde ama bazen bu düzgün çalışmıyor. yeni karakter basılmadan önce silinecek olan karakter tam olarak silinmiyor. Dolayısıyla karakterler üst üste biniyor. Bunu bir türlü çözemedim.

Text burada ekrana basılıyor. Buranın nasıl çalıştığını anlayamıyorum bir türlü..
void ks0108_text(unsigned char x, unsigned char y, const char *textptr, unsigned char size,unsigned char color)
{
	unsigned char i, j, k, l, m;                     
	unsigned char pixelData[5];
	unsigned char test=0;							
		
	for(i=0; textptr[i] != '\0'; ++i, ++x) 			
	{

	  for(;;){
			
		  if((textptr[i]==0x0D)&(textptr[i+1]==0x0A))
		  {
			x = 0;                           			
			y += 7*size + 3;
		 	i=i+2;
				
		  }else break;
			
		}
		
		if(textptr[i] == '\0')break;
						
		if(textptr[i] < 'S') 							
			memcpy(pixelData, TEXT[textptr[i]-' '], 5);
		else if(textptr[i] <= '~') 					
			memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);
		else
			memcpy(pixelData, TEXT[0], 5);   			


		if(x+5*size >= GLCD_WIDTH)          			
		{
	
			x = 0;                           			
			y += 7*size + 3;                 		
		}
		
	  
		
		for(j=0; j<5; ++j, x+=size)         			
		{			
		
			ks0108_write_byte(x, y, 0x00);			
			for(k=0; k<7*size; ++k)          			
			{
			
				test=pixelData[j]&(0x01<<k);
				if(test) 					
				{		
					for(l=0; l<size; ++l)      		
					{                          	
						
						for(m=0; m<size; ++m)
						{
							ks0108_pixel(x+m, y+k*size+l, color); 
						}
					}
				}
			}
		}
	}
}


Çalışıyor ama bir yerde aksilik varki bu dediğim sorunu yaşıyorum. Özellikle bir değişkeni ekrana basarken problem yaşıyorum. Muhittin abi yarın birde senin programı deneyeceğim.

@X-Fi, Sen hiç böyle problemler yaşadınmı? Bu konuda bi önerin varmı? Sence neden kaynaklanabilir?

edit;-----------------------------------------------------------------------------------------------------------------------------------------------------------

Alıntı yapılan: muhittin_kaplan - 05 Kasım 2012, 22:25:43

PA15-PA14-PA13
PB3-PB4
PC14-PC15
PD0-PD1
ben bunlara data yada control görevi verirsem muhtemeldir ki çalışmaz.


Benzer problemleri yaşadım ama üzerine düşmemiştim. Siz nasıl çözdünüz.

muhittin_kaplan


X-Fi

Hiç böyle birşey hatırlamıyorum ama zamanlama hatası olabilir işlemci clock hızlarını değiştirip deneyin en basit örnek.

kod optimasyonuna takılmayın herşeyi doğru derliyor bende kütüpane entegre ederken kodlara takılırdım hep ancak hata başka yerden çıkardı define, include, time gibi.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Mucit23

şimdiye kadar hep 72mhz de çalışıyordum. Farklı frekanslarda deneyeyim. Belkide LCD o hıza yetişemiyordur.
Şöyle bir test yapmıştım.
İlk önce ekranın bir noktasına ABC yazıyorum, Sonra 1 süre bekleyip aynı noktaya DEF yazıyorum sıkıntı olmuyor. Bunu sürekli olarak 500ms aralıklarla yaptığımda yine problem olmuyor ama sürekli hızlı bir şekilde değişen değeri ekrana basarsam saçmalıyor.

stm10x serisinde portb yi çıkış olarak kullanmak için portun çıkış yapımasından başka ayarlardamı gerekiyor. PortB de donanım diğer portlara göre biraz fazla. Bundan kaynaklandığını düşünüyorum

muhittin_kaplan

#44
// Displays bitmap at (x,y) and (dx,dy) size
//-------------------------------------------------------------------------------------------------
void GLCD_Bitmap(char * bmp, unsigned char x, unsigned char y, unsigned char dx, unsigned char dy)
{
unsigned char i, j;
for(j = 0; j < dy / 8; j++)
  {
  GLCD_GoTo(x,y + j);
  for(i = 0; i < dx; i++) 
    GLCD_WriteData(GLCD_ReadByteFromROMMemory(bmp++));
  }
}


Bende bu fonksiyonu kullanark img basamadım. ne hesaplamışki acaba.

mesaj birleştirme:: 07 Kasım 2012, 00:01:11

GLCD_Bitmap(image_1,0,0,128,64);

şeklinde kullanılıyormuş. image_1 char array

mesaj birleştirme:: 07 Kasım 2012, 22:58:42

kullanamadığımız io larla alakalı

Alıntı YapUsing serial wire and releasing the unused debug pins as GPIOs
To use the serial wire DP to release some GPIOs, the user software must set
SWJ_CFG=010 just after reset. This releases PA15, PB3 and PB4 which now become
available as GPIOs.
When debugging, the host performs the following actions:
● Under system reset, all SWJ pins are assigned (JTAG-DP + SW-DP).
● Under system reset, the debugger host sends the JTAG sequence to switch from the
JTAG-DP to the SW-DP.
● Still under system reset, the debugger sets a breakpoint on vector reset.
● The system reset is released and the Core halts.
● All the debug communications from this point are done using the SW-DP. The other
JTAG pins can then be reassigned as GPIOs by the user software.
Note: For user software designs, note that:
To release the debug pins, remember that they will be first configured either in input-pull-up
(nTRST, TMS, TDI) or pull-down (TCK) or output tristate (TDO) for a certain duration after
reset until the instant when the user software releases the pins.
When debug pins (JTAG or SW or TRACE) are mapped, changing the corresponding IO pin
configuration in the IOPORT controller has no effect.