f877 için bilmediğm bir konfig komutumu var

Başlatan f1varol, 02 Ağustos 2007, 09:32:38

f1varol

f877 için program da eklemeyi unuttuğum, bilmediğm bir komutmu var. Çünkü iside çalışıyor ama pice yüklüyorum kodları deneme kartım üzerinde programı koşturamıyorum. Sorun deneme kartında değil, onu biliyorum. unuttuğum bir konfig komutu felan mı var.
program da basit zaten , giriş pinin de 1 sinyali görürse sırayla çıkışları hıgh yapmak. O kadar.
isis de tüm çıkışlar sinyal gelince sırayla aktif oluyor, yalnız porta.4 pini olmuyordu. Biraz araştırdım,bu portu sayısal giriş çıkış olarak kullanmak için  adcon1=7 komutunu kullandım. Fayda etmedi.
Saygılar

____________________________________________________________________________
@ DEVICE pic16F877 
@ DEVICE pic16F877, WDT_on 
@ DEVICE pic16F877, PWRT_ON 
@ DEVICE pic16F877, PROTECT_OFF 
@ DEVICE pic16F877, XT_OSC 

TrisA=%000000 'A portu çıkış olarak ayarlandı 
TrisB=%00000000 'B portu çıkış olarak ayarlandı 
TrisC=%00000001 'PORTC.0 giriş olarak ayarlandı 
TrisD=%00000000 'D portu çıkış olarak ayarlandı 
PORTA=0 'A portu tüm çıkışlar low 
PORTB=0 'B portu tüm çıkışlar low 
PORTC=0 'C portu tüm girişler low 
PORTD=0 'D portu tüm çıkışlar low 
SYMBOL OGREN1=PORTA.0 
SYMBOL OGREN2=PORTA.1 
Symbol OGREN3=PORTA.2 
SYMBOL OGREN4=PORTA.3 
SYMBOL OGREN5=PORTA.4 
SYMBOL OGREN6=PORTA.5 
SYMBOL OGREN7=PORTB.0 
SYMBOL OGREN8=PORTB.1 
SYMBOL OGREN9=PORTB.2 
SYMBOL OGREN10=PORTB.3 
SYMBOL OGREN11=PORTB.4 
SYMBOL OGREN12=PORTB.5 
SYMBOL OGREN13=PORTB.6 
SYMBOL OGREN14=PORTB.7 
SYMBOL OGREN15=PORTD.0 
SYMBOL OGREN16=PORTD.1 
SYMBOL OGREN17=PORTD.2 
SYMBOL OGREN18=PORTD.3 
SYMBOL OGREN19=PORTD.4 
SYMBOL OGREN20=PORTD.5 
SYMBOL PC=PORTC.0 
BASLA: 
IF PORTC.0=1 THEN 
HIGH OGREN1 
PAUSE 1000 
low OGREN1 
HIGH OGREN2 
PAUSE 1000 
LOW OGREN2 
HIGH OGREN3 
PAUSE 1000 
LOW OGREN3 
HIGH OGREN4 
PAUSE 1000 
LOW OGREN4 
HIGH OGREN5 
PAUSE 1000 
LOW OGREN5 
HIGH OGREN6 
PAUSE 1000 
LOW OGREN6 
HIGH OGREN7 
PAUSE 1000 
LOW OGREN7 
HIGH OGREN8 
PAUSE 1000 
LOW OGREN8 
HIGH OGREN9 
PAUSE 1000 
LOW OGREN9 
HIGH OGREN10 
PAUSE 1000 
LOW OGREN10 
HIGH OGREN11 
PAUSE 1000 
LOW OGREN11 
HIGH OGREN12 
PAUSE 1000 
LOW OGREN12 
HIGH OGREN13 
PAUSE 1000 
LOW OGREN13 
HIGH OGREN14 
PAUSE 1000 
LOW OGREN14 
HIGH OGREN15 
PAUSE 1000 
LOW OGREN15 
HIGH OGREN16 
PAUSE 1000 
LOW OGREN16 
HIGH OGREN17 
PAUSE 1000 
LOW OGREN17 
HIGH OGREN18 
PAUSE 1000 
LOW OGREN18 
HIGH OGREN19 
PAUSE 1000 
LOW OGREN19 
HIGH OGREN20 
PAUSE 1000 
LOW OGREN20 
ENDIF 
GOTO BASLA

tyildizak

RA.4 pini çıkışı open drain olduğu için harici bir pull-up direnci (4k7 veya 10k) kullanmadan çıkış alamazsınız.

f1varol

yıldızak sağol, pull-up direnciyle hallettim. Ama asıl sorun yanıtsız duruyor. Yukarıdaki programın devre/deneme kartı üzerinde çalışmaması için bir neden varmı?  Hatalı bir yeri varmı? Öle ahım şahım bişeyde değilki kardeşim çalışmasın, altı üstü led yak söndür.   8O Arkadaşlar programa bakarmısınız hata varmı. Devresi şu.

http://hemenpaylas.gen.tr/show.php/25065_sill.JPG.html

tyildizak

@ DEVICE pic16F877, WDT_off olarak konfigüre etmen gerekir diye düşünüyorum, çünki programda watchdog'u sıfırlamıyorsun.
Devrede portc.0'ı   4k7 ile ground' a pulldown şeklinde bağlamalısın, yoksa program butonu test ederken butona basılmadığı halde basılmış gibi algılayacaktır.
Belki çok önemli değil ama mclr direnci değeri de 4k7 hatta 10 k olsa daha doğru olur.

ete

İsis te çalışan bir devrenin gerçekte de çalışması gerekir. Çalışmayan devreler için isis in varsayımlarını gözden geçirmek gerekir.
Bu varsayımlara geçmeden programdaki eksikliği belirtmekte fayda görüyorum. Her ne kadar denedim desende ADCON1=7 komutu olmadan bu programın isis de bile çalışması mümkün değil. Bu komut PortA da bulunan Analog girişleri digital giriş çıkış olarak ayarlar. 877 de ilk açılışta aksine komut (ADCON1=7) olmadığı sürece bu pinler analog giriş olarak açılırlar. Analog açılmış bir pinin digital çalışması ise imkansızdır.
Bu nedenle bir defa ADCON1=7 komutunun programın başına ilave edilmesi gerekir.

Gelelim varsayımlara;
- isis işlemciye kristal bağlı kabul eder. Siz bağlamasanız bile isis kristal bağlı imiş gibi programı çalıştırır. Bu nedenle kartınızdaki kristal ve kondansatör bağlantılarına dikkat ediniz. Kartın başka programlarla çalışıp çalışmadığını kontrol ediniz.

- İsis , işlemciye yüklenecek programı bir defa program adresi verildimi yüklenmiş sayar. Gerçekte programınızın 877 ye yüklenip yüklenmediğini yada en azından doğru yüklenip yüklenmediğini kontrol etmeniz gerekir.
En iyisi verify komutunu açıp programın doğru yüklenip yüklenmediğini kontrol etmek. Yada kısaca pic içindeki programla hex dosyasını karşılaştırmak en uygunu olacaktır.

- Isis işlemciye bağlı voltaj besleme bacaklarında gerekli voltajın olduğunu var sayar. Siz kendi devrenizde pic besleme voltajının bulunup bulunmadığını kontrol etmeniz gerekir.

- Gerçek devrede pic besleme bacaklarına en yakın yere kesinlikle 100nf kondansatör atılmalıdır. Bu kondansatörün olmadığı bir çok devrenin çalışmadığına bizzat şahit oldum. Yada abuk subuk çalışan bir çok devrede bu 100nf bağlanınca herşeyin normala döndüğüne bir çok kereler şahit oldum.

ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

f1varol

teşk. ederim. Söylediklerinizi tek tek kontrol edeceğim.
ETE hocam ADCON1=7 komutunu eklemeden de isisde a portunu dijital giriş çıkış olarak kullanabiliyorsun. Tecrübeyle sabittir. Tabiki komutu ekledim, o ayrı. Saygılar

stlg

Sevgili kardesim

Ben picbasic bilmiyorum ama temel aynı yukardda bahsedildigi gibi wdt yi on yaparsan picin surekli olarak reset yapar ya wdt yi kapat yada wdt nin pici resetleme zamanından once wdt yi sıfırla kolay gelsin
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

ahmet2004

Genelde bu HATA yapılıyor.

Kristal in frekansı girilmiyor.Bu da frekans yokmuş gibi algılanıyor.

@Device tanımlamalarından sonra mümkünse bu tanımlamayı ihmal etmeyin.

Senin hatan da bu tanımlamayı yapmadığın için çalışmıyor.

DEFINE OSC 4

mustafa_cmbz

Alıntı yapılan: "ahmet2004"Genelde bu HATA yapılıyor.

Kristal in frekansı girilmiyor.Bu da frekans yokmuş gibi algılanıyor.

@Device tanımlamalarından sonra mümkünse bu tanımlamayı ihmal etmeyin.

Senin hatan da bu tanımlamayı yapmadığın için çalışmıyor.

DEFINE OSC 4


bunu zamanlayıcı yaparken mı yazcaz ben normal bir devre yapmıştım zamanlayıcı felan değil o komutu yazmadım ama çalıştı biraz acarmısnız..

alayli

Alıntı yapılan: "ahmet2004"Genelde bu HATA yapılıyor.

Kristal in frekansı girilmiyor.Bu da frekans yokmuş gibi algılanıyor.

@Device tanımlamalarından sonra mümkünse bu tanımlamayı ihmal etmeyin.

Senin hatan da bu tanımlamayı yapmadığın için çalışmıyor.

DEFINE OSC 4

Ben @ahmet2004 ile aynı fikirde değilim. Gerek PBP ve gerekse PROTON+ kristal tanımlaması yapılmadığıda OSC frekansını varsayılan olarak 4 MHz kabul eder. Bakınız help dosyaları...

Ayrıca konuyla ilgili kimse bahsetmemiş ama ETE hocamın söylediklerine ek olarak;

-İsis MCLR ucunun boşta yada +5 voltta olup olmadığı ile ilgilenmez. Ama gerçek hayatta bu pin pull-up yapılmalı veya direkt +5V'a bağlanmalıdır...

Saygılar...
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)

Ziya

Alıntı yapılan: "alayli"-İsis MCLR ucunun boşta yada +5 voltta olup olmadığı ile ilgilenmez. Ama gerçek hayatta bu pin pull-up yapılmalı veya direkt +5V'a bağlanmalıdır...
16F serisi için dediğiniz doğru. NOMCLR sigortasını etkinleştirmemiş iseniz 18F4620 için ISIS'te mclr'yi Vcc ye bağlamazsanız çalışmıyor.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey