Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

16F628 OSC-MCLR...3?

Başlatan crazyahmet, 29 Kasım 2006, 00:19:48

crazyahmet

pic 16F628 kullanıyorum fakat anlamadığım bazı şeyler var:

1.sorum:dahili osc kullanırken
.---
.---
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
yazıyorum,fakat harici osc kullanmak istediğimde ne yazmam gerekir ve örnegın  OSC 4 gıbı belırtmem gerekır mı?

2.sorum:dahili osc kullanırken ve harıcı osc kullanırken proteus ta programı pıc e atarken hangı osılator seceneklerını sececegım?

3.sorum:4. pın yanı Mclr komutunu
@ DEVICE pic16F628, MCLR_ON    kullandıgım zaman neyi etkiliyor?bu komutu hıc kullanmasamda sureklı +5 e dırencle gondermelımıyım..
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...

mhk

1 -  OSC 4 veya hangi hızı kullanıyorsan onu yazmalısın
2-   Hangi osc ile işlem yaptıysan onu seçmelisin
3-   DEVICE pic16F628, MCLR_ON kullandıgın zaman 16F628 MCLR ucu (reset ucu ) aktif hale gelir ve harici olarak bir direnç ile +VDD'ye bağlanmalıdır. Doğru olan MCLR ucu ile GND arasına buton bağlamak ve Pic'in resetlenmesi gerektiğinde butona basılmalıdır. Butona basıldığında normal durumu (Direnç +VDD'ye bağlı olduğu için ) 1 olan MCLR, butona basıldığında 0 olur ve pic resetlenir.
@ DEVICE pic16F628, MCLR_ON       komutu kullanılmayacaksa yada MCLR ucu reset içinn değilde giriş ucu olarak kullanılacaksa.
@ DEVICE pic16F628, MCLR_OFF    seçilmelidir.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

crazyahmet

tamam bır kısmını anladım..peki ınternal osc kullanmadıgım zaman
osc 4 gıbı bır koddan harıc bır sey yazacakmıyım?ve benım asıl merak ettıgım su harıcı osc kullanırken ıc prog da osc seceneklerınden XT yı secıyorum pekı dahılı osc kullanırken hangısını secerım?
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...

Lütfi AYYILDIZ

OSC 4 yazman yeterli, hatta hiçbir şey yazmasanda olur. Default ayarları 4mhz'e ayarlı zaten.LCD standart bağlantılarını yaptığın zamanda lcd pinlerini tanıtman gerekmiyor. Dahili osilatör kullanırken intrc ı/o diye bir seçenek vardı diye hatırlıyorum. Uzun zamandır ic prog u kullanmıyorum. Programında osc yi tanımladığın zaman ic prog osilatörü kendi belirliyor zaten.

crazyahmet

benım bır program var su lınkte
https://www.picproje.org/main/modules.php?name=Forums&file=viewtopic&p=85960#85960

burdakı sorunu bır turlu bulamadım programda sorun var mı...ben bunda dahılı harıcı OSC hepsını denedım alıcı tarafımdakı 4 tane cıkıs portumun hıc bırınde bır sey alamadım..deneyımı olan arkadaslar yardım edin lutfen..
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...

Lütfi AYYILDIZ

Modülü uyardıktan sonra hemen ardından verini göndermelisin.Ayrıca seri iletişimde çok farklı komutlar kullanmışsın. Serin2 ve serout2 bu iş için ideal komutlar. 2400 baud bu modüller için üst limit pek tavsiye edilmez.600 baud da senin uygulaman için baya hızlı.Aşağıda örnek satırlar var buradaki gelen verileri karşılaştırarak amacına ulaşabilirsin.
Ben dahili osilatörle seri iletişimi yapamadım, belki rc osilatörün kararsızlığından kaynaklanıyodur.
....
@ DEVICE pic16F628, MCLR_ON 'MCLR pini kullanılıyor. 
DEFINE OSC 4
....
verici:
Serout2 CIKIS,1646,[REP$AA\5,REP$00\5,REP$FF\5]
SerOut2 CIKIS,1646,[("E"),("R"),veri] 
SerOut2 CIKIS,1646,[("E"),("R"),veri] 
SerOut2 CIKIS,1646,[("E"),("R"),veri]
SerOut2 CIKIS,1646,[("E"),("R"),veri]
SerOut2 CIKIS,1646,[("E"),("R"),veri]
alıcı:

SerIn2 GIRIS,1646,[WAIT("ER"),veri]

crazyahmet

programı yazdım dahili OSC ile RF modülleride  uyguladım 2 motorumu da ileri geri olmak üzere ayrı ayrı hareket sağlayabiliyorum ama bazen garip davranıyor:

-bir butona kısa sürede basılı tutsam bazen butonu bıraktıktan sonra devam ediyor
-bir butona uzun süre basılı tuttuğum zaman ,ara ara duraklayıp devam ediyor..bunların sebebi ne olabilir arkadaşlar ?

programlarımı da göndereyim:

VERİCİ TARAFI:

@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_on 'Watch Dog timer kapalı
@ DEVICE pic16F628, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_off 'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
'------------------------------------------------------------------------------
CMCON=7           '16F628 de komparatör pinleri iptal hepsi giriş çıkış
OPTION_REG.7=0    'Dahili pull-up lar AKTİF yapıldı
PORTA=0
TRISA=%00000000
PORTB=0
TRISB=%00001111
'------------------------------------------------------------------------------
SYMBOL CIKIS=PORTA.0
SYMBOL sagileri=PORTB.0
SYMBOL solileri=PORTB.1
SYMBOL saggeri=PORTB.2
SYMBOL solgeri=PORTB.3

VER    VAR  BYTE
'------------------------------------------------------------------------------
Pause 200
VER=0
'------------------------------------------------------------------------------
BASLA: VER=0
     
      IF sagileri=0 AND solileri=0 Then
          VER=11                     
          GoTo gonder
      EndIF
     
      IF saggeri=0 AND solgeri=0 Then
          VER=33
          GoTo gonder
      EndIF
       
      IF sagileri=0 Then
         VER=88
         GoTo gonder
      EndIF
         
      IF solileri=0 Then
          VER=66
          GoTo gonder
       EndIF
       
      IF saggeri=0 Then
         VER=44
         GoTo gonder
       EndIF
       
      IF solgeri=0 Then
         VER=22
         GoTo gonder
       EndIF
     
           
'-------------------------ALT PROGRAMLAR---------------------------------------
GONDER:
       SerOut2 CIKIS,396,["E","T","E",ver]
       SerOut2 CIKIS,396,["E","T","E",ver]
       SerOut2 CIKIS,396,["E","T","E",ver]
       SerOut2 CIKIS,396,["E","T","E",ver]
       SerOut2 CIKIS,396,["E","T","E",ver]
       SerOut2 CIKIS,396,["E","T","E",ver]  
        Pause 100
        GoTo BASLA
     End

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
ALICI TARAFI:

PORTA=0
PORTB=0
TRISA=%00000001   'A portu A.0 giriş diğerleri çıkış yapıldı.
TRISB=%00000000   'B portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_on              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'---------------------------değişkenler------------------------------
AL     VAR  BYTE
GIRIS  VAR  PORTA.0
sagileri  VAR  PORTB.0
solileri  VAR  PORTB.1
saggeri   VAR  PORTB.2
solgeri   VAR  PORTB.3



'-----------------------------B A Ş L A N G I Ç ---------------------------    
CMCON=7
Clear                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
Pause 500
PORTB=0  'tüm çıkışlar low seviyesinde
'-------------------------------------------------------------------------------    
BASLA: Pause 100                
      SerIn2 GIRIS,396,[WAIT ("ETE"),AL]
     
       
      IF AL=11 Then
        High sagileri  
        High solileri
        GoTo basla
      EndIF
     
      IF AL=33 Then
        High solgeri
        High saggeri
        GoTo basla
      EndIF  
     
      IF AL=88 Then
         High sagileri
         GoTo basla
      EndIF  
       
      IF AL=66 Then
         High solileri
         GoTo basla
      EndIF
     
      IF AL=44 Then
         High saggeri
         GoTo basla
      EndIF
     
      IF AL=22 Then
         High solgeri
         GoTo basla
      EndIF    
             
     
      PORTB=0
      GoTo BASLA
 End
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...

Lütfi AYYILDIZ

Öncelikle programındaki bütün pause komutlarını çıkarmalısın.Motorun ara ara çalışması pause komutlarından kaynaklanıyor. Ayrıca her başla komutuna döndüğün zaman portları sıfırlarsan sorunun çözülür.
BASLA:
porta=0:portb=0
SerIn2 GIRIS,396,[WAIT ("ETE"),AL]

Forumun her tarafına aynı mesajı yazmanın bi anlamı yok biraz sabırlı olmalısın.

crazyahmet

bu soyledıklerını deneyecegım,haklısın pause lar kalkınca sorun kalkar heralde..su andaki asıl sorun:ileri yapabildim fakat geri yapadım..yukardaki sekılde yazdıgımda ileri yanı sol ileri ve sağ ileri aynı anda çalısıyor ama geride yani sol geri sag geride bir taraf olmuyor,programda bir hata mı yapıyorum gözumden kacan bır sey var heralde..dıkkatımden kacan bır sey var mutlaka bir de siz göz atın arkadaslar..
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...

sitenindelisi

2 farklı motor var ve biri ön tekerleklere diğeri ise arka tekerleklere hükmediyor.Eğer böyle ise
11 ve 33 bilgileri gönderildiğinde yerinde çakılıp kalması lazım. İleri bilgiis geçerli ise ve devamında geri bilgisi gönderiliyorsa, bence komut yürütülmeden önce ileri komutu sıfırlanmalı ve sonra geri komutu işleme konulmalı.Aynı anda hem geri hem ileri gidemeyeceğine göre.

crazyahmet

tekerlek olarak degılde tank gıbi dusunmek daha dogru,motorun bırı sağ paleti diğeri sol paleti çevirecek..aynı bu prorgramı yazdım ileride sorun yok geri yaptığım zaman tek taraf çalısıyor,komutlar aynı sonucta ikisi içinde,cözemedım hala..
Cömertlik ve yardım etmede  akarsu gibi ol, Şefkat ve merhamette güneş gibi ol, Başkalarının kusurunu örtmede gece gibi ol, Hiddet ve asabiyette ölü gibi ol, Tevazu ve alçak gönüllülükte toprak gibi ol, Hoşgörülülükte  deniz gibi ol...