İlk Uygulamamı Gerçekleyemedim.(Config sorunuymuş)

Başlatan NaMcHo, 14 Aralık 2010, 11:04:06

NaMcHo

Merhabalar,
Bir ADC okuyan devre yaptım 16f877 ile board üzerinde şuan kurulu,
-LCD RB7,6,5,4 pinlerine bağlı ve RB5 den 5V okuyorum RB4,6,7 bacaklarından ise 2.186V
-LCD nin ilk satırında 16 tane dikdörtgen olusuyor devreyi calıstırdıgımda(Normalde devre çalıştığında bir uyarı yazısı yazması gerekiyor sonrada ADC okuma işlemine başlaması lazım.)(yani pic ile ilgili bir sıkıntı var sanırım.)
-11 nolu bacak Vdd(+5V) ve toprakla arasına 100nF lık kondansatör bağladım.
-12 nolu bacak ise Vss
-MCRL'ye 470ohm luk direnc ve 5V verdim.
-Kristalim ise 4Mhz fakat 2.2nF(multimetre yanlış ölçmüş benim sanırım veya ben yanlış ölçmüşüm:) 22pF mış kondansatörlerim) lık 2 kondansatör bağlı kristale
-Vdd(877nin) akımım 780uA ve LCD nin Vdd sinin akımı ise 1.1mA

Sorun ne olabilir?

Devre şemasını da ekleyebilirim eğer gerekliyse(Proteus).
İyi günler.

alayli

Alıntı yapılan: NaMcHo - 14 Aralık 2010, 11:04:06
Merhabalar,
Bir ADC okuyan devre yaptım 16f877 ile board üzerinde şuan kurulu,
-LCD RB7,6,5,4 pinlerine bağlı ve RB5 den 5V okuyorum RB4,6,7 bacaklarından ise 2.186V
-LCD nin ilk satırında 16 tane dikdörtgen olusuyor devreyi calıstırdıgımda(Normalde devre çalıştığında bir uyarı yazısı yazması gerekiyor sonrada ADC okuma işlemine başlaması lazım.)(yani pic ile ilgili bir sıkıntı var sanırım.)
-11 nolu bacak Vdd(+5V) ve toprakla arasına 100nF lık kondansatör bağladım.
-12 nolu bacak ise Vss
-MCRL'ye 470ohm luk direnc ve 5V verdim.
-Kristalim ise 4Mhz fakat 2.2nF lık 2 kondansatör bağlı kristale

Sorun ne olabilir?

Devre şemasını da ekleyebilirim eğer gerekliyse(Proteus).
İyi günler.

-RB4,6,7 bacaklarını çıkış olarak ayarladığından emin ol... (trisb komutu ile)
-LCD initialize olamamış veya pic çalışmıyor demektir...
-Sadece 11 ve 12 nolu pinlere değil, onlarla beraber 31 ve 32. pinlere de besleme vermelisin...
-2.2nF kondansatör kristal için çok yüksek değer... Muhtemelen temel sorunun bu. Büyük ihtimalle pic hiç çalışşamıyor. 2.2nF'leri 22pF ile değiştirmeyi dene...

Devre şeması ve kodu da eklersen  daha fazla yardım alman olası...
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

mcn

yapılmış uygulamalarıda incelemeni tavsiye ederim,kendi uygulamanla,özellikle de kodlarınla karşılaştırıp nerede hata yaptığını çok daha rahat bulabilirsin.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

electronblue

Yazdığınız koddan eminseniz ve elinizde 22pF yoksa kristali kondansatörsüz bağlayıp deneyin.

NaMcHo

#4
[IMG=http://img703.imageshack.us/img703/1937/grnt0603.th.jpg][/IMG]
Kod:
#include <htc.h>
#include "LCD216_benim.h"
#include "delay.h"
unsigned int adc,x;
float voltaj;

void main(void)
{
	TRISA=0x01;
	TRISB=0;	PORTB=0;
	TRISC=0;	PORTC=0;

	CHS0=0;	CHS1=0;	CHS2=0;  //RA0 dan ADC i�lemi gerceklescek.
	PCFG0=0;	PCFG1=1;	PCFG2=1;	PCFG3=1;	//RA0 Analog di�erleri dijital.
	ADCS0=1;	ADCS1=1;	//RC osilat�r secildi ADC icin.

	ADFM=1;                 //Sa�a dayal� olarak yaz�lcak yani 10bitlik.
	ADON=1;
	
	lcd_hazirla();
	lcd_yaz("Voltaj Ust SINIR");
	imlec(2,1);
	lcd_yaz("30V'dur!");
	for(x=0;x<10;x++)
	DelayMs(100);
	lcd_temizle();
	for(;;)
	{
		ADGO=1;
		while(ADGO);								//ADC i�lemi bitene kadar bekle.
		adc=ADRESL;	adc+=(unsigned int)ADRESH*256;
		voltaj=(30.0/1023)*adc;
		x=voltaj*100;
		imlec(1,1);
		lcd_yaz("ADC:");
		lcd_karakter_yolla(adc/1000 + 48);
		lcd_karakter_yolla((adc%1000)/100 + 48);
		lcd_karakter_yolla((adc%100)/10 + 48);
		lcd_karakter_yolla(adc%10 +48);
		
		imlec(2,1);
		lcd_yaz("Voltaj:");
		lcd_karakter_yolla(x/1000 + 48);
		lcd_karakter_yolla((x%1000)/100 + 48);
		lcd_yaz(".");
		lcd_karakter_yolla((x%100)/10 + 48);
		lcd_karakter_yolla(x%10 + 48);
		lcd_yaz("V");
		DelayMs(100);
	}
}

Isis , hex : http://hotfile.com/dl/89360330/263996a/ADC_SON.rar.html

-32. pine 5V 31. pinide toprağa bağladım , 2.2nF lık kondansatörleride çıkarıp denedim sonuç değişmedi.

NaMcHo

#5
Alıntı yapılan: FxDev - 14 Aralık 2010, 12:07:02
Sigorta ayarlarını yaptın mı?
Pic'e yükleme yaparken sanırım hocam ayarlamıştı,birazdan pickit2 gelicek sanırım, birde ben denicem son olarak yine olmazsa yeni pic alıpda denicem.

NaMcHo


#include <pic1687x.h>
#include "LCD216_benim.h"
#include "delay.h"
#include <htc.h>
__CONFIG(WDTDIS & XT & UNPROTECT);
void main(void)
{
    TRISB=0;    PORTB=0;
    TRISC=0;    PORTC=0;

    lcd_hazirla();
    imlec(1,1);
    lcd_yaz("HAYT BEYA!");
    for(;;);
}

sigorta ayarlarınıda yaptım fakat hale lcd de dikdörtgenler görüyorum 1. satırda.
pickit2 de geldi takınca 877 yi tanıyor yani bu yanmadığı anlamına geliyorsa(877 nin) o zaman 15pF lık kondansatör bağlarsam eğer kristale sorun cözülücekmidir?

fyazgan

LCD KONTRAST BACAGINI KONTROL ETTIN MI?

NaMcHo

#8
Alıntı yapılan: fyazgan - 14 Aralık 2010, 14:56:27
LCD KONTRAST BACAGINI KONTROL ETTIN MI?
1k direnç bağladım. pot yerine,10k bağlamayı denedim birde 10k bağlayınca hic birsey gozukmuyor.
470ohm baglayınca biraz daha sönük oluyo 1k ya göre

Birde LCD ekranına baktığımda sıramala pin sıralaması şöyle;
Vss  Vdd  Vee RS RW E D0 D1 D2 D3 D4 D5 D6 D7 NC NC 
-Bu nc ler nedir?boşta duruyolar suan devremde

Maxim

nc
boş uç demek
çoğu lcd de oralarda aydınlatma ledinin uçları vardır
seniin lcd ekran aydınlatması yok anlaşılan

electronblue

#10
Simülasyonda çalışıyor mu bu uygulama ? Farklı dillerde yazılmış çalışan kodlar ile LCD ve PIC i  test ederseniz zaman kazanmış olursunuz.

Edit : Ayrıca LCD de arızalı olabilir. Sonradan bozduğum LCD lerin çoğu initialize işlemini yapmıyordu doğal olarak ekranda sadece kareler görünüyordu. Ayrıca lcd contrastı için pot kullanın.

NaMcHo

Alıntı yapılan: electronblue - 14 Aralık 2010, 16:30:54
Simülasyonda çalışıyor mu bu uygulama ? Farklı dillerde yazılmış çalışan kodlar ile LCD ve PIC i  test ederseniz zaman kazanmış olursunuz.

Edit : Ayrıca LCD de arızalı olabilir. Sonradan bozduğum LCD lerin çoğu initialize işlemini yapmıyordu doğal olarak ekranda sadece kareler görünüyordu. Ayrıca lcd contrastı için pot kullanın.
Evet Similasyonda çalışıyor,önerilerinizi deniyicem.

NaMcHo

Cevaplarınız için teşekkürler sorun FxDev in de belirttiği gibi sigorta ayarlarından kaynaklıymış  (pickit programmında tools--->Display Unimplemented Config bits sekmesinde as '0'value işaretliymiş yani ben sigortayı ayarlasamda algılanmıyormuş,As read or imported seçeneğini seçince sorun düzeldi.)

İyi Çalışmalar.