12F675 hakkında!

Başlatan emrah, 16 Ocak 2012, 14:11:20

ByTEK

#15
Merhaba emrahGS,

Kullandığın arayüze göre brenner usb programlayıcı kullanıyorsun..bende brenner kullanıyorum..verdiğin hex dosyasını pice yükledim devreyi kurdum ve sorunsuz çalıştı.. hiç bir şekilde sıkıntı çıkarmadı.. ledler flash yapıyor.

harici olarak sigorta ayarları vs bir ayarda yapmadım..direkt attım denedim çalışıyor.. bu arada 12F675 kullanırsan 4 adet çıkışın olur 1 adet analog girişin olur..


video çektim buradan indirebilirsin..

https://rapidshare.com/files/4134496253/17012012005.mp4

muhittin_kaplan

adı geçen işlemciyi yüklemek için brennerden hangi işlemci türünü seçtiniz ?

ByTEK

#17


versiyon olarak bunu kullanıyorum : http://www.sprut.de/electronic/soft/usburn/usburn111a5.zip


Bu arada 12F675'i tanımlarken 2 adet yeşil bir barın dolması ve sonra kaybolması normal birşey.. diğerlerinde öyle yapmıyor..

emrah

arkadaslar yardımlarınız için çok teşekkür ederim. sonunda çalıstı. board üzerinde 167877 ile baska bir devre kuruluydu enerjı verdıgımde oda çalısyordu fakat bu pic calısmadı bir türlü. şimdi bagımsız nir devre kurdum denedim çalıstı. anlam veremedigim bi olay oldu neyse.

emrah

hocam şimdi yapmak istedigim programı yükledim fakat bir anormal durumla yeniden karşıkarşıyayım.

anolog girişten 10Klık pottan deger veriyorum fakat ledlere sanki pwm uyguluyomuşum gibi yanıyorlar ve düşük gerilim vermeye basladıgımda bütün ledler cok kısık yanmaya baslıyor. dirençler 330R 5 voltta.

videoda daha net anlaşılıyor.

http://www.dosyaupload.net/9517012012042.rar


hex kodu ;

http://www.dosyaupload.net/46adc12f675.rar



kullandıgım kod ise ;

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

DEFINE OSCCAL_1K 1  
DEFINE OSC 4

DEFINE ADC_BITS 10    
DEFINE ADC_SAMPLEUS 3 
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00001001
WPU=0 


DEGER VAR WORD

PAUSE 200  '
GPIO=0

BASLA: 

ADCIN 0,DEGER

IF DEGER>100 THEN 
GPIO.1=1
ELSE
GPIO.1=0
ENDIF

IF DEGER>300 THEN 
GPIO.2=1
ELSE
GPIO.2=0
ENDIF

IF DEGER>500 THEN 
GPIO.4=1
ELSE
GPIO.4=0
ENDIF

IF DEGER>800 THEN 
GPIO.5=1
ELSE
GPIO.5=0
ENDIF

GOTO  BASLA
END

ByTEK

#20
şu iki satırı ele alalım.. Anladığım kadarıyla deger 100 den büyük 300 den küçük durumunda gpıo.1 high olacak diğer durumda low olacak.. o zaman sadece 100 den büyük demek yerine (Deger>100) & (Deger<300) derseniz ve diğer şartlarada aynı şekilde uyarlarsanız sanırım düzelecektir.. Çünkü örneğin Değer 400 olduğunda hem 100 den büyük hemde 300den büyük olacak ve gpıo.1 ile gpıo2 high olacak.. yanlışım varsa düzeltin..

Son olarak adc bilgisini sürekli ard arda okumaktan ziyade belli aralıklarda oku.. örneğin ben ldr ile ortam ışığını alıp 3 kademeli bir gece lambası yapmıştım..5 sn aralıklarla adc okuyup şundan büyük şundan küçüktür gibi karşılaştırma yapıp gerekli grupları yakmıştım.. daha stabil olmuştu..

Kolay gelsin..

IF DEGER>100 THEN 
GPIO.1=1
ELSE
GPIO.1=0
ENDIF

IF DEGER>300 THEN 
GPIO.2=1
ELSE
GPIO.2=0
ENDIF

emrah

hocam amacım zaten sizn yanlış anladıgınız gibi.  deger buyudukçe  sırayla çıkışlar aktıf olacak. 200 ms kadar beklemeyle gelen deger filtrelemiş oldum ve örnegn 100 degerne geldgnde sabt kalmıyor 99- 98 101 gibi deger hızlıca degiştigi için o sorun cıktı pause ile düzeldi. fakat belli bir degerin altında. programa gore örnek verirsem deger değişkeni  100 un altında oldugunda ledlerin hepsi kısık yanık kalıyor. bu neden olabilir ki?  anaolg girişi tam sıfıra çektigim zaman ledlerdeki kısık yanma sönuyor.

ByTEK

PAUSE 200   komutunu BASLA labelinden sonra yazmanızda fayda var hatta onu PAUSE 500 yapın.. olmadı bende kurup deneme yaparım..

karbal656

Merhab kodlarında adc ayarları kısmı hatalı aşağıdaki gibi olması lazım
DEFINE	ADC_BITS	 10                    'A/D  çevirim sonucu kaç bit olacak
DEFINE	ADC_CLOC   3                   'Clock  kaynağı (3=rc)
DEFINE	ADC_SAMPLEUS  100 

burasını bir düzelt dene istersen

emrah

hocam bahsettiğim pauseyi döngü içine koydum zaten . başlangıctaki pause ayrı. 500ms ile iyi sonuç aldım şuan istediğim gibi çalışıyor. kısık yanma olayıda kalktı pici degiştirnce. adc ayarlarınıda

DEFINE   ADC_BITS    10                    'A/D  çevirim sonucu kaç bit olacak
DEFINE   ADC_CLOC   3                   'Clock  kaynağı (3=rc)
DEFINE   ADC_SAMPLEUS  100 

şekilde yaptım şuan istedigim sonucu aldım. aynı programı 16f877a ile de denedim ekranda analog degerleri görüyorum. şuan iki devrede kurulu iken tek noktadan iki piceda aynı yerden analog degeri veriyorum  ornegin ekranda 100 degerini görüyosam  12f ile yaptıgım devrede ilk çıkışı alıyorum. fakat 16f877 nin analog girişini çıkarttıgım zaman  12f in  deger adlı degişkenınn sayısı cok artıyor heralde ve 3 led yanmaya baslıyor. pulldown direci ekledim analog pine 4k7 ile normale döndü.

yardımlarınız ve emeklerininz için teşekkür ederim