12F675 ISIS ÇALIŞTIRMA

Başlatan escapeto, 19 Ocak 2017, 21:08:36

escapeto

Merhaba..

Pic conusunda yeniyim. Bu sitedeki 12f675 ile ilgili yazıların hepsini okudum ve şöyle bir kod çıktı ortaya. Ama ısıs te bir turlu çalıştıramadım, sebebi nedir acaba?
Yapmak istediğim, bir devrede iki adet buton var. Mp3 decoder devresi. Devrede ileri ve geri butonları ayrıca repat butonu var. Şarkı çalarken repeat tuşuna basıp bırakınca aynı şarkı tekrarlıyor. İleri diyerek diğer şarkıya geçince tekrar repeat tuşuna basmak gerekiyor. Bunu önlemek için, devreye enerji verildiğinde 3 sn sonra otomatik olarak repeat tuşuna basmak ve şarkı değiştirmek için ileri tuşuna bastığımda 3 sn sonra yine repeat tuşuna basıp bırakmak. Bu kodu yazmaya calıştım, fakat ısıte kurduğumd evre çalışmıyor sanırım kod hatalı. Ya da micro core studio ile ısıs arasında bır ayar mı yapmak gerek. Baska yerden indirdiğim hazır ısı ve cod olan dosyaları çalıştırıyor.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18.01.2017                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

'@ DEVICE pic12F675 'işlemci 12F675
'@ DEVICE pic12F675, WDT_ON   'Watch Dog timer açık
'@ DEVICE pic12F675, PWRT_ON  'ower on timer açık
'@ DEVICE pic12F675, PROTECT_OFF  'Kod Koruma kapalı
'@ DEVICE pic12F675, MCLR_off            'MCLR pini kullanılMIYOR.
'@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'______________________
'@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
'@ Device PIC12F675,WDT_OFF,PWRT_ON,PROTECT_OFF, CPD_OFF,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUT

DEFINE OSC 4
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
DEFINE ADC_BITS 10    ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1    ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 20 ' ADC sampling time (uSec)


ANSEL = 0                       
TRISIO=%000001            
CMCON=7                       

SYMBOL TUS= gpio.0    
SYMBOL LED= gpio.1     

BASLA:
PAUSE 3000
LED = 1
IF TUS=1 THEN
PAUSE 3000               
LED = 1
PAUSE 500

ENDIF






Ete hocanın sigortalar ile ilgili yazısını okudum. Sigorta diye bir şey varmış o ";' ü koyunca düzeldi.

Bu devrede led yerine buton baglamam gerek. Pic çıkışını butona  , groundları da birleştirince yukarıdaki istediğim buton basma olayi gerçekleşir mı?

Bu arada yukarıdaki kod yazıda çalışmasını istediğim şekilde değil, onu düzelttim, çalışmada problem kalmadı. Yanlızca buton bağlantısını nasıl yapmalıyım ?

ipek

mp3 player butonları bir tarafları Ground'a bağlı ise işlemciden Low çıkarırsan olur,eğer Low çıkaramazsan bir NPN transistör ile open Collector bağlayabilirsin.

fakat Playerin üzerindeki butonlar genellikle R2 dirençler ile bir analog porta bağlı oluyorlar,burada sıkıntı çıkar,ikinci olasılıkta buton'ların Matrix çalışıyor olması, bu durumda her buton'a bir akım sınırlama direnci bağlı bir optokuplör ile bağlayabilirsin..

Maxim

başka bir seçenekte cd4066 kullanarak buton uçlarına paralel 2 hat çekebilirsin diye düşünüyorum.
yani 1 cd4066 ile 4 buton kontrol edilebilir (buton uçları ortak+ veya gnd de değilse işe yarayabilir)

escapeto




Devrenin buton dizilimi aynen resimdeki sol taraftaki gibi. Dirençler ile butonun gnd ye bağlanması ile sağlanıyor. Led çıkışını surekli hight yapıp butona bastığımda low olacak şekilde yaptım. Devredeki direncin buton tarafını yani + voltaj gelen tarafı pic in çıkışına bağladım. Butona bastığımda low oluyor ve repeat tuşu çalışmış oluyor. Ama pic çıkışındaki sürekli olan 5v ile direnç çıkışındaki 3v birleştiği zaman da ileri tuşu sapıtıyor. Basınca işlem görmüyor. Aynı işlemi ileri butonu için de yaptım ama olmadı. butona bastığımda ilk ileri çıkışı 0 yarım saniye sonra 1 , daha sonra repeat çıkışı 0 bir saniye sonra 1 olsun diye yazdım ama picten tuşlara gelen 5v sanırım devreyi yada tuşları kullanılmaz hale getiriyor.

BC548 ile de denedim ama malesef beceremedim. Başka bir bağlantı şekli önerebilecek olan var mı acaba?

ipek

bipolar transistör yerine Mosfet 2N7000 ,7002 gibi kullanın gate direnci 10Ω maximum 47Ω olsun

escapeto

Problem çözülmüştür yardım için teşekkür ederim.
Gece problem ile yatınca sabah aydinlandım. :)
Pic çıkışını bc548 ile repeat yapacak şekilde ayarlamistim. Ama ileri butonuna hep pic e tanımladığımız butonu kullanmaya çalışmıştım. Sonra pic e bir çıkış daha verip ileri butonunu oradan tetiklemek geldi aklıma.
Sonuç problemsiz bir şekilde çalıştı. Pic giriş butonuna basınca ilk ileri çıkışı 1-0 , üç saniye sonra repeat çıkışı 1-0 oldu bitti.

Teşekkürler...