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

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

muhittin_kaplan

Font Dosyasında Değişiklik Yapmıyormusun ?

Mucit23

Yok hocam Font dosyası aynı. Nasıl yapıyorsa eğer GLCD kütüphanesi aynı font dosyasındaki dataları çarpıp toplayıp çıkararak büyütüyor.

muhittin_kaplan

benim kullandığım kütüphanede
void GLCD_WriteChar(char charToWrite)
{
char i;
charToWrite -= 32; 
for(i = 0; i < 5; i++) 
  GLCD_WriteData(GLCD_ReadByteFromROMMemory((char *)(font5x8 + (5 * charToWrite) + i))); 
GLCD_WriteData(0x00);
}

gibi bir fonksiyon var. Buraya bilgiyi

0x00, 0x00, 0x00, 0x00, 0x00, // (spacja)
0x00, 0x00, 0x5F, 0x00, 0x00, // !
0x00, 0x07, 0x00, 0x07, 0x00, // "
0x14, 0x7F, 0x14, 0x7F, 0x14, // #
0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
0x23, 0x13, 0x08, 0x64, 0x62, // %
0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x05, 0x03, 0x00, 0x00, // '
0x00, 0x1C, 0x22, 0x41, 0x00, // (
0x00, 0x41, 0x22, 0x1C, 0x00, // )
0x08, 0x2A, 0x1C, 0x2A, 0x08, // *
0x08, 0x08, 0x3E, 0x08, 0x08, // +
0x00, 0x50, 0x30, 0x00, 0x00, // ,
0x08, 0x08, 0x08, 0x08, 0x08, // -
0x00, 0x30, 0x30, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, // /
0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
0x00, 0x42, 0x7F, 0x40, 0x00, // 1

diye devam eden bir font dosyasından alıyor. tüm fontu büyütebilirim. ama nasıl olacak ?


muhittin_kaplan

Ne Yaptıysam Senin Kütüphaneyi Kullanamadım.

mesaj birleştirme:: 19 Aralık 2012, 20:26:53

Kütüphanede Reset Tanımlı Benim Boardda Tanımlı değil. Doğrudan +5v bağlı

Mucit23

Hocam Reset pekde önemli değil.

Benim verdiğim kütüphanede reset pinide tanımlanmış ama kullanılmıyor. Boş yere pin alıyor. Zaten ks0108_init içerisine bakarsanız ilk yapılan işlemlerden biride reset bacağını 1 yapmak.

Siz bu tanımlamayı kullanmayacaksanız bununla ilgili herşeyi silin.

Bende şimdi cocox ve stm32f100rb ile glcd kullanmaya çalışıyorum. Kütüphaneyi bi oturtsam sizinle paylaşacam ama bi araba dolusu hata veriyor. O hatalarla boğuşuyorum şimdi..

muhittin_kaplan

Mucit ben hatalardan kurtuldum ama yinedebir şey bastıramadım. ya resim olarak bastıracağım yada bu kütüphaneyi kullanacağım başka seçenek kalmadı bana. keza büyük font kullanmalıyım.

Mucit23

Hocam Adım adım gidelim. Bence ilk Başta GLCD ile ilgiili Tüm fonksiyonları kaldırıp sadece glcd init fonksiyonunu ve bu fonksiyonla birlikte çalışan alt fonksiyonları bırakalım. Burayı düzgün çalıştırırsak diğer kısımları çalıştırmak kolay olur.

Ben şunu sorayım coocox kütüphanesi ile keil kütüphanesi arasında fark varmı. Ben bazı gpio fonksiyonlarına baktım aynı görünüyor. Kullanımıda aynı.

Ben ks0108.h dosyasını direk main.c ye ekledim
ks0108.h dosyası
#include "stm32f10x.h"

#define GLCD_DATA_PORT	GPIOD
#define GLCD_CMD_PORT	GPIOE
#define CS1_PIN		13 // ok	
#define CS2_PIN		14 // ok					    
#define DI_PIN		10 // ok
#define RW_PIN		11 // ok
#define EN_PIN		12 // ok
#define RST_PIN		15 // ok

#define CS1(x)      ((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<CS1_PIN)))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<CS1_PIN))) );
#define CS2(x)		((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<CS2_PIN)))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<CS2_PIN))) );
#define DI(x)		((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<DI_PIN )))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<DI_PIN ))) );
#define RW(x)		((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<RW_PIN )))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<RW_PIN ))) );
#define EN(x)		((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<EN_PIN )))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<EN_PIN ))) );
#define RST(x)		((x) ? (GPIO_SetBits(GLCD_CMD_PORT,(1<<RST_PIN)))  : (GPIO_ResetBits(GLCD_CMD_PORT,(1<<RST_PIN))) );
#define GLCD_WIDTH	128	// GLCD uzunlugu

extern void ks0108_init(void);
extern void ks0108_write(unsigned char chip, unsigned char veri);
//extern unsigned char ks0108_read(unsigned char chip);
//extern void ks0108_write_byte(unsigned char x, unsigned char y, unsigned char veri);
//extern void ks0108_pixel(unsigned char x, unsigned char y, unsigned char renk);
//extern void ks0108_fill(unsigned char renk);
//extern void ks0108_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2, unsigned char renk);
//extern void ks0108_bar(unsigned char amp, unsigned char n,unsigned char ustsinir,unsigned char altsinir);
//extern void ks0108_rect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char dolu, unsigned char renk);
//extern void ks0108_circle(unsigned char x,unsigned char y, unsigned char r, unsigned char dolu, unsigned char renk);
//extern void ks0108_text(unsigned char x, unsigned char y, const char *textptr, unsigned char size,unsigned char color);


Burada define tanımlamalarına hiç karışmadım acaba onlaramı hata veriyor. Bunlar cocox dada çalışırmı?

Aslında benim derleniyor ama bir sürü uyarı veriyor. Onları yok etmeye çalışıyorum. Eğer sizde aşağıdaki gibi uyarılar alıyorsanız program çalışmayabilir.
GCC HOME: C:\Program Files (x86)\GNU Tools ARM Embedded\4.6 2012q2\bin
compile:
    [mkdir] Skipping C:\Users\Ferhat YOL\Desktop\cocox\Coco_Flash\Debug\bin because it already exists.
    [mkdir] Skipping C:\Users\Ferhat YOL\Desktop\cocox\Coco_Flash\Debug\obj because it already exists.
       [cc] Starting dependency analysis for 8 files.
       [cc] Parsing ..\..\..\cmsis\core_cm3.c
       [cc] Parsing ..\..\..\cmsis_boot\stm32f10x.h
       [cc] Parsing ..\..\..\cmsis\core_cm3.h
       [cc] Parsing ..\..\..\stm_lib\src\ks0108.c
       [cc] Parsing ..\..\..\stm_lib\inc\ks0108.h
       [cc] 7 files are up to date.
       [cc] 1 files to be recompiled from dependency analysis.
       [cc] 2 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -g -O0 -c -DSTM32F100RB -DSTM32F10X_MD_VL -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ "-IC:\Users\Ferhat YOL\Desktop" "-IC:\Users\Ferhat YOL\Desktop\cocox\stm_lib" "-IC:\Users\Ferhat YOL\Desktop\cocox\cmsis" "-IC:\Users\Ferhat YOL\Desktop\cocox\cmsis_boot" "-IC:\Users\Ferhat YOL\Desktop\cocox\stm_lib\inc" "-IC:\Users\Ferhat YOL\Desktop\cocox" '"C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c"' '"C:\Users\Ferhat YOL\Desktop\cocox\main.c"'
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:13:11: warning: missing braces around initializer [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:13:11: warning: (near initialization for 'TEXT[0]') [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:66:10: warning: missing braces around initializer [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c: In function 'DATA_OUT':
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:66:10: warning: (near initialization for 'TEXT2[0]') [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:121:2: warning: implicit declaration of function 'GPIO_Write' [-Wimplicit-function-declaration]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c: In function 'DATA_READ':
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:128:2: warning: implicit declaration of function 'GPIO_ReadInputData' [-Wimplicit-function-declaration]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c: In function 'ks0108_init':
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:137:2: warning: implicit declaration of function 'GPIO_SetBits' [-Wimplicit-function-declaration]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:137:2: warning: implicit declaration of function 'GPIO_ResetBits' [-Wimplicit-function-declaration]
       [cc] Starting link
       [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wl -nostartfiles -g -Wl,-Map=Coco_Flash.map -O0 -Wl,--gc-sections -LC:\CooCox\CoIDE\workspace\Coco_Flash -Wl,-TC:\CooCox\CoIDE\workspace\Coco_Flash/arm-gcc-link.ld -g -o Coco_Flash.elf ..\obj\startup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\ks0108.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o ..\obj\GPIO_Blink.o ..\obj\stm32f10x_flash.o
Program Size:
      text	   data	    bss	    dec	    hex	filename
      1816	      0	   1032	   2848	    b20	Coco_Flash.elf

BUILD SUCCESSFUL
Total time: 4 seconds


Benim aldığım uyarılar bunlar..

muhittin_kaplan

sendeki pin tanımlamaları gpioe ve d bendeki gpioA olmak zorunda :) . Oraları değiştirdim. Debug Yaptığımda init vs leri işlettiğini görüyorum ama herhangi birşey yazmıyor.
hatalar için ks0108.h dosyasına #include stm32f10x.gpio.h ı ekle

mesaj birleştirme:: 20 Aralık 2012, 11:23:55

ama ks0108.c dosyasının içerisinde olan Font arraylarda Braket eksik diyor neyse artık.

Mucit23

evet dediğiniz gibi yaptım uyarıların çoğu kalktı. Fakat font dosyasında uyarı vermeye başladı

       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:13:11: warning: missing braces around initializer [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:13:11: warning: (near initialization for 'TEXT[0]') [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:66:10: warning: missing braces around initializer [-Wmissing-braces]
       [cc] C:\Users\Ferhat YOL\Desktop\cocox\stm_lib\src\ks0108.c:66:10: warning: (near initialization for 'TEXT2[0]') [-Wmissing-braces]

Aynı uyarılarımı alıyoruz hocam

muhittin_kaplan


muhittin_kaplan

öğrenmiş olduk
uyarının  sebebi çift derinlikli değişken tanmlanmasındaymış

Alıntı Yap-Wmissing-braces
Warn if an aggregate or union initializer is not fully bracketed. In the following example, the initializer for `a' is not fully bracketed, but that for `b' is fully bracketed. This warning is enabled by -Wall in C.
          int a[2][2] = { 0, 1, 2, 3 };
          int b[2][2] = { { 0, 1 }, { 2, 3 } };

mesaj birleştirme:: 20 Aralık 2012, 13:46:03

http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

Mucit23

Hocam ben durumu anlamadım. Tırnak içerisine alırken çift tırnakmı koymak gerekiyor. Zira öyle yaptığımda aldığım uyarıların sayısını arttırmış oluyorum.

Şuan durum nedir? Benim elimde deneyebileceğim donanım var fakat programlayıcım yok. Ulink olmuyor  :(

muhittin_kaplan

font array ı çift parentez yapacaksın.

text[51][10]={{0x00,0x00,0x0},{0x01,0x02,0x03}}
şeklinde olacak.

Mucit23

Çaktım Meseleyi..

Orada iki boyutlu dizi tanımlanmış ama yazarken tek boyutludizi tanımlanır gibi tanımala yapılmış. Keil buna izin veriyor ama sanırım cocox buna müsade etmiyor. İlla iki boyutlu tanımlamak gerekiyor.

const unsigned char TEXT[51][5] ={{0x00, 0x00, 0x00, 0x00, 0x00}, // SPACE
		                          {0x00, 0x00, 0x5F, 0x00, 0x00}, // !
		                          {0x00, 0x03, 0x00, 0x03, 0x00}, // "
		                          {0x14, 0x3E, 0x14, 0x3E, 0x14}, // #
		                          {0x24, 0x2A, 0x7F, 0x2A, 0x12}, // $
		                          {0x43, 0x33, 0x08, 0x66, 0x61}, // %
		                          {0x36, 0x49, 0x55, 0x22, 0x50}, // &
		                          {0x00, 0x05, 0x03, 0x00, 0x00}, // '
		                          {0x00, 0x1C, 0x22, 0x41, 0x00}, // (
		                          {0x00, 0x41, 0x22, 0x1C, 0x00}, // )
		                          {0x14, 0x08, 0x3E, 0x08, 0x14}, // *
		                          {0x08, 0x08, 0x3E, 0x08, 0x08}, // +
		                          {0x00, 0x50, 0x30, 0x00, 0x00}, // ,
		                          {0x08, 0x08, 0x08, 0x08, 0x08}, // -
		                          {0x00, 0x60, 0x60, 0x00, 0x00}, // .
		                          {0x20, 0x10, 0x08, 0x04, 0x02}, // /
		                          {0x3E, 0x51, 0x49, 0x45, 0x3E}, // 0
		                          {0x04, 0x02, 0x7F, 0x00, 0x00}, // 1
		                          {0x42, 0x61, 0x51, 0x49, 0x46}, // 2
		                          {0x22, 0x41, 0x49, 0x49, 0x36}, // 3
		                          {0x18, 0x14, 0x12, 0x7F, 0x10}, // 4
		                          {0x27, 0x45, 0x45, 0x45, 0x39}, // 5
		                          {0x3E, 0x49, 0x49, 0x49, 0x32}, // 6
		                          {0x01, 0x01, 0x71, 0x09, 0x07}, // 7
		                          {0x36, 0x49, 0x49, 0x49, 0x36}, // 8
		                          {0x26, 0x49, 0x49, 0x49, 0x3E}, // 9
		                          {0x00, 0x36, 0x36, 0x00, 0x00}, // :
		                          {0x00, 0x56, 0x36, 0x00, 0x00}, // ;
		                          {0x08, 0x14, 0x22, 0x41, 0x00}, // <
		                          {0x14, 0x14, 0x14, 0x14, 0x14}, // =
		                          {0x00, 0x41, 0x22, 0x14, 0x08}, // >
		                          {0x02, 0x01, 0x51, 0x09, 0x06}, // ?
		                          {0x3E, 0x41, 0x59, 0x55, 0x5E}, // @
		                          {0x7E, 0x09, 0x09, 0x09, 0x7E}, // A
		                          {0x7F, 0x49, 0x49, 0x49, 0x36}, // B
		                          {0x3E, 0x41, 0x41, 0x41, 0x22}, // C
		                          {0x7F, 0x41, 0x41, 0x41, 0x3E}, // D
		                          {0x7F, 0x49, 0x49, 0x49, 0x41}, // E
		                          {0x7F, 0x09, 0x09, 0x09, 0x01}, // F
		                          {0x3E, 0x41, 0x41, 0x49, 0x3A}, // G
		                          {0x7F, 0x08, 0x08, 0x08, 0x7F}, // H
		                          {0x00, 0x41, 0x7F, 0x41, 0x00}, // I
		                          {0x30, 0x40, 0x40, 0x40, 0x3F}, // J
		                          {0x7F, 0x08, 0x14, 0x22, 0x41}, // K
		                          {0x7F, 0x40, 0x40, 0x40, 0x40}, // L
		                          {0x7F, 0x02, 0x0C, 0x02, 0x7F}, // M
		                          {0x7F, 0x02, 0x04, 0x08, 0x7F}, // N
		                          {0x3E, 0x41, 0x41, 0x41, 0x3E}, // O
		                          {0x7F, 0x09, 0x09, 0x09, 0x06}, // P
		                          {0x1E, 0x21, 0x21, 0x21, 0x5E}, // Q
		                          {0x7F, 0x09, 0x09, 0x09, 0x76}}; // R


Bu şekilde olacak.

Şimdi son durum nedir hocam çalışmadımı? Bağlantılarda problem olmasın.

muhittin_kaplan

artık ona buluyorum problemi, benim zorunluluğum dpioa da olması tüm ağlantılarım. kütüphaneden gerekli değişikliği yaptım ama hala beceremedim.