avatar_Hattuşa

16F1826 pin configrasyonu hatası

Başlatan Hattuşa, 28 Haziran 2018, 18:01:02

Hattuşa

slm ETE hocam;
16F1826 ile 7seven digit sürmek için portb yi kullanmak istedim. MCU başka bir işlem yapmayacağı için araya 595 ve türevi eklemedim. ne var ki PORTB.3 üpini sürekli high veriyor. bu pinde ADC var kapalı, PWM1 var kapalı, CPSO ve DMOUT işlemleri var ne işe yaradığını tam anlamadım ama kapattım sanıyorum. gene de bu pin sürekli HIGH veriyor. bende isisde osilaskop bağladım. ekte ki gibi bir usart sinyaline benzer bir sinyal var, kesemedim. Acaba nerde hata yapıyor olabilirim. yardımcı olabilirmisiniz?


Hattuşa

http://etepic.com/index.php?topic=3194.0 

burada da aynı sorunu F.T. usta yaşamış çözmüş mü acaba? sonuçtan bişey anlamadım

ete

#2
Data Sheet'e bakınca şunu görüyorum.
PORTB.3 pini fonksiyonları;
- Modulator output
- CCP1/P1A çıkışı
- Normal PortB.3 pin fonksiyonu.
Bu listeye bakınca biz en sondaki fonksiyonu yani normal PORTB.3 pini olarak kullanacağımız için ilk iki özelliği iptal etmek gerekir.
Modulator iptali için  MDCON=0 vermek yeterli
CCP1  iptali için öncelikle APFCON0 registerine APFCON=1 değerini verip CCP1 fonksiyonunu PORTB.3 pinine aktarmak daha sonrada  CCP1CON=0 vererek bu modülü iptal etmek gerekir diye düşünüyorum.
Bu aşamadan sonra pin normal B3 fonksiyonuna dönmesi gerekir. Dene istersen
Bu arada ANSELB=0 verilerek pinlerin digital olarak ayarlanmasıda gerekebilir.

Aşağıdaki programla deneme yaptım sorunsuz çalışıyor PORTB.3 hem low hem high oluyor programa uygun olarak.
#config
__config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
__config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF
#endconfig
DEFINE OSC 16
TRISA=%00100000
TRISB=%00000000

OSCCON      =%11111000      '16MHz internal osilatör frekansı seçildi
OSCSTAT     =%11111101      'Timer1 Osilatör kullanıma hazır,4xPLL hazır
OSCTUNE     =0              'Osilatör modülü fabrika ayarlarında çalışacak
OPTION_REG  =%00000111      'Pull-up enabled,Yükselen kenat kesmesi kapalı,Tmr0 clock kaynağı içsel Fosc/4,Prescaler(Bölücüler) açık Tmr0 için,Bölme oranı 16Mhz için 1/256
WPUA.5      =1              'MCLR için bit5 Pull-up enabled.Eğer MCLR ON yapılmışsa herzaman enabled.
WPUB        =%11100000      'PortB.7-6-5 nolu pinlerin Pull-upları aktif edildi.
 
ADCON0.0    =0              'ADC ölçümleri iptal edildi.
ANSELA      =0              'PortA nın <4:0> arası analog-dijital olabilen pinlerini dijital yaptık.Pinler Dijital I/0 oldu.
ANSELB      =0              'PortB nin <7:1> arası analog-dijital olabilen pinlerini dijital yaptık.Pinler Dijital I/0 oldu.

CCP1CON     =0             'Capture/Compare/PWM off
'CCP2CON     =0             'Capture/Compare/PWM off

CM1CON0.7   =0              'Comparatör disable-kapalı.
CM2CON0.7   =0
FVRCON      =0              'Referans sabit voltaj çıkışları (COMPARATOR,DAC ve ADC) kapalı-disable.
DACCON0.7   =0              'DAC referans voltaj çıkışı kapalı.
CPSCON0.7   =0              'Capasitive sensing modulu disable yapıldı.
MDCON.7     =0              'Modülasyon modülü iptal edildi.DSM (Dijital Sinyal Modülü) iptal. Modüleli yani karışık sinyal çıkış kapalı.
MDSRC.7     =1              'Çevresel sinyallerin sürücü çıkış pinleri iptal.Modüleli sinyal çıkışı pinleri kapalı.
CLKRCON.7   =0              'Referasn clock modülü kapalı.

PIE1        =0              'TÜM ÇEVRESEL KESMELER KAPALI.
PIE2        =0              'Tüm Çeveresel Kesmeler Kapalı.
'PIE3        =0
'PIE4        =0              'Tüm çevresel kesmeler kapalı.

PORTB=0
PORTA=0
Pause 300
basla:
portb.3=1
pause 100
portb.3=0
pause 200

goto basla


Ete

Hattuşa

@ETE hocam;
vermiş olduğunuz bilgiler için tşk ederim.söylediklerinizi denedim. protonda aynı hata devam ediyor. Bu arada F.T. usta benzer sorunu yaşamış ve ben onunla yaptığım görüşme neticesi proton kendi programından kaynaklı olduğunu söyledi.
artık önümde seçenek olarak ya aynı kılıfta başka bir işlemci yada bu programı picbasic pro da yazmam gerekecek.

Hattuşa

ETE hocam, prograamın config ayrlrını sizin veridiğiniz şekli ile yaptım düzeldi. anlyamadım fark olarak osctat registerini set ettim. bir de osc config ile düzeldi

ice_tea045

Arkadaşlar bu portb.3 pininden sürekli 3.6 volt civarı sinyal alıyorsanız tek nedeni config2 register ındaki zorunlu olarak 1 yazılması gereken 4. bitin, 0 yazıldığında ortaya çıktığını deneyerek gördüm. İsteyen bu 4. bite 1 ve 0 vererek bu durumu gözlemleyebilir. Saygılar.

ete

Config2 registerine data sheet den baktım ve 4. bit için (Reserved this location should be programmed to a "1") şeklinde bir ifade yer almış. Bu bite normal şartlarda bizim config ayarları ile (program içinden) ulaşabildiğimizi sanmıyorum.Olsa olsa hex dosyasını pic'e yazarken arayüz programında config ayarlarından bu bit şayet sıfır ise 1 yapılabilir. Bu kadar etkili olacağını pek sanmıyorum zira bu bit madem reserved o halde derleyici bazında mutlaka default olarak "1" olması gerekir. Olmuyor ise ya derleyici kusurudur yada pic programlayıcı arayüz kusurudur. Programlama ile alakası yok bu işin. ELimde bu işlemci olmadığı için deneyemiyorum. Ama olan birisi deneyebilir. Deneme şöyle olabilir. Kusursuz Çalışan program Pickit2 arayüzüne yüklenir ve konfig ayarlarından 4. bit sıfır yapılır ve program pice yazılıp duruma bakılır. Sonuçta bu bit in illaki "1" olması gerektiği yazılmış. Demekki bir anlamı var. Sıfır yapılırsa işlemci abuk subuk çalışacaktır mutlaka ama abuk subukluk PortB.3 pininden ortaya çıkıyorsa pes derim. Zira madem bu bit"1" olacak o halde sen onu sürekli 1 yap değilmi neden oynanmasına müsaade ediiyorsun?

Ete

Powered by EzPortal