pic basic i bırakmanın vakti sanırım...

Başlatan DataDiver, 30 Temmuz 2008, 01:56:43

DataDiver

porta.bit3=ham_saat.2
porta.bit2=ham_saat.1


16f88 in porta sına bağlı bir ds1307 ve 74164 entegreleri var ve bunlar 4 pin işgal etmekte mclr iptal ettim kalan 4 pinin de 2 si çıkış ikişi giriş durumunda ds1307 ve 74164 un kontrolleri gayet düzgün ama yukardaki kodların bulunduğu kısım da şöyle yapyıor basic ilk önce porta.3 e değişkendeki değeri veriyor önreğin 1 ise 1 sonra porta.2 yede değişkenin değerini yazarken diğer pini sıfırlıyor.aralarına bizzat pause koyarak denedimki ciddi ciddi normalde pinlerin ikisininde high olması gerekirken ilk önce yazılanı high yapıyor sonra diğerini yaprken öncekini low a çekiyor. neden ? :S

derleyici  PICBASIC PRO 2.46

edit: konuyu azıcık yanlış yerde açmışım :| sonradan fark ettim. PICBasicPro başlığı altına taşınması rica olunur...

ete

16F88 de A portu hem comparator hemde analog giriş olarak çalışır.
Dolayısıyla bu pinleri digital kullanabilmek için;
CMCON =7
ANSEL=0 'tüm pinler digital

şeklinde iki komut kullanılması gerekir. Muhtemelen birinden birini eksik kullanmışsınızdır. Yada ADC iptali için geleneksel ADCON1=7 komutunu kullanmışda olabilirsiniz ama bu picde bu komut istediğiniz amaca uygun çalışmaz.

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

KAZIMUGUR

Demekki ,öğrenilmesi gerekenlerin arasına kullanılan pic in datasheet lerini de katmamız gerek.

DataDiver

[code]INCLUDE "modedefs.bas"
DEFINE OSC 8
DEFINE SHIFT_PAUSEUS 100

@ DEVICE pic16F88
@ DEVICE pic16F88, WDT_OFF
@ DEVICE pic16F88, PWRT_ON
@ DEVICE pic16F88, PROTECT_OFF
@ DEVICE pic16F88, MCLR_OFF
@ DEVICE pic16F88, INTRC_OSC_NOCLKOUT

OSCTUNE=0
OSCCON =%01111101
CMCON=7
ANSEL=0

TRISA=%00110000
TRISB=0
PORTA=0
PORTB=0

SYMBOL SCL=PORTA.7
SYMBOL SDA=PORTA.6

ham_saat var byte
ham_dakika var byte
ham_saniye var byte
dakika var byte
S_Clk var PORTA.0
S_Data var PORTA.1

keşke onları unutmuş olsaydım .. :(
edit: 16f88 in datasheetini falan kullanıyorum tabikide daha önce analog modulunu falan kullandığım şeyler yaptımda böyle bişi ilk kez geldi  başıma oturdum c de yazmaya çalışıyorum şimdik.. allahtan henüz program bitmemişti tamamen, bide en son böle bişi olsaydı kötü olurdu :D

KAZIMUGUR


ete

Bu durumda emin olmak için ben olsam ;
porta.bit3=ham_saat.2
porta.bit2=ham_saat.1

eşitliklerinde ham_saat.2 ve ham_saat.1 bitlerini otomatik vermek yerine kendim değer verir ve sonuca bakardım. Ham_saat değişkeni sizin kontrolünüz dışında farklı bir değer alıyor olabilir.  Yani;
porta.bit3=1
porta.bit2=1 (yada 0)

şeklinde bir değer verip sonuca bakmanı öneririm.
Şayet yine aynı olay meydana geliyor ise o zaman haklı olabilirsin.  Ama şimdiye kadar hiç rastlamadığım bir hata yinede ihtimal veremiyorum.

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

DataDiver

ete hocam ilginize teşekürler.



proje en son resimdeki gibi küçük bir kırpma yaptım devreden , içime pek sinmedi ama işte sorunu aşamadım :( projenin detayını söyliyeyim binary tabanlı kol saati :)  normal de 4 led daha vardı (12 lik formatta saati gösterecek olan) fakat onları işte bu problem yüzünden kırptım malesef sadece dakika ve saniye için ledler  kaldı.. onuda şöyle yaptım buton A yıl / ay ,buton B gün / saat ,buton C ise dakika / saniye şeklinde olucak sdece yıl / ayı 2 sn diğerlerini 6 sn göstericek normalde saat sönük kalıcak :) inş. koluma takacak hale getiririm..

bu arada şunu tam olarak bitirdiğimde tekrar o eski çözemedğim hale getirip deniycem gene aynı şey olursa ekran videosu çeker gösteririm valla :D

saygılarımla..