lpc1768 ve glcd ?

Başlatan satilla, 30 Temmuz 2011, 15:17:17

satilla

2 gündür ugraşıyorum basit giriş çıkış tamınlamalarıyla sürülebilen glcd'yi istedigim gibi çalıştıramadım

şu anki en büyük sorunum

çizmeye en üst satırdan başlamıyor ortaadn yada farklı yerden başlıyor
bazen glcdyi saga sola oynatmazsam çalışmıyor

aralara bol bol delay koydum mcu hızlı sorun cıkmasın diye
fikri olan varsa cvp bekliyorum zira artık ugrasacak bi kafa kalmadı bende

bu main kodum

#include "1769_glcd.h"
#include "delay.h"

uint8_t veri;

int main()
{
LPC_GPIO0->FIODIR |= 0xFFFFFFFF;
LPC_GPIO1->FIODIR |= 0xFFFFFFFF;

delay(3000);

glcd_init();
      
while(1)
{
ks0108_write(1,0x00);
  ks0108_write(0,0xaa);
}
}


buda glcd.c
#include <LPC17xx.h>
#include "1769_glcd.h"
#include "delay.h"

#define EKRANAC 0x3F
#define EKRANKAPA 0x3E
#define sag 1
#define sol 0

void glcd_init(void)
{
LPC_GPIO1->FIOPIN &= ~EN;
delay(1);
LPC_GPIO1->FIOPIN &= ~CS1;
delay(1);
LPC_GPIO1->FIOPIN &= ~CS2;
delay(1);
LPC_GPIO1->FIOPIN &= ~DI; //Komut verilecek
delay(1);
ks0108_write(sag, 0xC0); //En üst RAM'in ilk RAM oldugu belirleniyor
delay(1);
ks0108_write(sol, 0xC0);
delay(1);
ks0108_write(sag, 0x40); //Sütunun en basına gidiliyor, Y=0
delay(1);
ks0108_write(sol, 0x40);
delay(1);
ks0108_write(sag, 0xB8); //Satirin en basina gidiliyor, X=0
delay(1);
ks0108_write(sol, 0xB8);
delay(1);
ks0108_write(sag, EKRANAC); //Ekrani aç
delay(1);
ks0108_write(sol, EKRANAC);
delay(1);
}
void ks0108_write(unsigned char chip, unsigned char veri)
{
if(chip)
{
LPC_GPIO1->FIOPIN &= ~CS1;
delay(1);
LPC_GPIO1->FIOPIN |= CS2;
delay(1);
}
else
{
LPC_GPIO1->FIOPIN |= CS1;
delay(1);
LPC_GPIO1->FIOPIN &= ~CS2;
delay(1);
}

LPC_GPIO1->FIOPIN |= DI;
delay(1);
LPC_GPIO0->FIOPIN2 = veri; //Veri PORTU

delay(1);
LPC_GPIO1->FIOPIN |= EN; // Düsen kenar tetiklemeli
delay(1);
LPC_GPIO1->FIOPIN &= ~EN;
delay(1);
LPC_GPIO1->FIOPIN &= ~CS1; // Chip seçim alanlari temizleniyor
delay(1);
LPC_GPIO1->FIOPIN &= ~CS2;
delay(1);
}

EMG81

#1
Bende bu konuyu takip edeyim.. ::)

yamak

gördüğüm kadarıyla pll ayarları yapılmamış yoksa  eksik mi koydunuz buraya ya da delay.c nin içinde mi?

satilla

Alıntı yapılan: yamak - 30 Temmuz 2011, 19:09:26
gördüğüm kadarıyla pll ayarları yapılmamış yoksa  eksik mi koydunuz buraya ya da delay.c nin içinde mi?

pll kullanmıyorum ayrıca delay fonsiyonuda basit bir for döngüsü

yamak

#4
pll kullanmanızı tavsiye ederim zaten SystemInit(); fonksiyonunu çağırırsanız lpc1768 de pll i 100 mhz e kitliyo.Bir de delay kütüphanesini normal timer kullanarak oluşturun bence.

satilla

Alıntı yapılan: yamak - 30 Temmuz 2011, 19:54:10
pll kullanmanızı tavsiye ederim zaten SystemInit(); fonksiyonunu çağırırsanız lpc1768 de pll i 100 mhz e kitliyo.

hocam pll kullanmıyorum çünkü cevresel donanımların response time süresi nedir bilmiyorum
bu yüzden zatn yavaş çalıştırıyorumbaska kütüphaleri lpc'ye uarladım yine olmuyor
bunun için sizin elinzde hazır kütüphane varmı

yamak

default olarak pclk nın 4 biri olarak çalışıyo. ama bunu 1/8 1/2 ya da direkt pclk eşit şekilde ayarlayabiliyosunuz.Elimde şu an glcd kütüphanesi yok ama yakın bi süre içinde yapmayı dğşğnğyorum eğer o zamana kadar yapmazsanız paylaşırım sizinle.

satilla

hocam pazartesiye kadar halletmem lazım
muhtemelen ben daha önce bitiririm ama o glcd'yi her gördügümde vazgeciorm su an sinirmi bozuyor  :-X