Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

sayici

Başlatan selvi, 12 Mart 2009, 17:49:45

selvi

asagidaki programda yaklasik 15 dakikalik bir sayici var .devrenin beslemesini  acip kapatan bir anahtar var.devreye besleme verince  15dk sonra led yaniyor.anahtari kapatip tekrar acinca bazen led yaklasik 6dk sonra yaniyor.tekrar anahtari acip kapattigimda 15dk sonra led yaniyor.bu istikrasizligin sebebi ne olabilir?  
@   device  pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off,bod_off

DEFINE OSC 4       'DEFINE OSCCAL_1K 1

TRISIO = 0
IOC=0

'-------------------------------------------------------------------------------
' DEGISKENLER TANIMLANIYOR.
SAYI   VAR   WORD  
I         VAR   WORD
SAYI1  VAR   WORD
SAYI2  VAR   WORD

'-------------------------------------------------------------------------------
BASLA:
GPIO.2=0 'ILK GECIKME
for SAYI1=0 TO 3315
PAUSE  105
NEXT SAYI1

GPIO.2=0 '  PROGRAM SAYMAYA BURADAN  BASLIYOR. BURADA 10 DAKIKA SAYMASI ISTENMISTIR.

FOR sayi2=0 to 1  
for SAYI=0 TO 3315  ' B BOLMDE 10 DK
PAUSE 105          
NEXT SAYI          
next SAYI2

GPIO.2=1 ' ROLE CEKTIKTEN SONRA 10 SANIYE CEKILI KALIR VE TEKRAR BIRAKTIRILIR.

FOR I=0 TO 100
PAUSE 100
NEXT I

GPIO.2=0
GOTO BASLA
                                                                       
END
Yaşam anlamlandırıldıkça kutsaldır....

Maxim

en başta değişkenleri sıfırlayın bence ,

'-------------------------------------------------------------------------------
' DEGISKENLER TANIMLANIYOR.
SAYI VAR WORD
I VAR WORD
SAYI1 VAR WORD
SAYI2 VAR WORD

SAYI=0
SAYI1=0
SAYI2=0
I = 0

'------------------------------------------------------------------

selvi

belirtilen degisikleri yaptim.bu arada  devreyi denedim.bazen besleme verdigimde 3 dk sonra cikis veriyor(GPIO.2=1) .asagidaki program yarim saat olarak duzenlendim.ortalama 32.5dk sonra cikis veriyor(bu  simdilik   sorun yaratmiyor).boyle bir sonucun aciga cikmasinin nedeni ne olabilir?program cok basit oarak duzenlendi.program tek islem yapiyor.
   devreye 3v veriyorum(12f675 datasheet besleme voltaji     2-5.5v yaziyor.dahili kristal kullandim.pic in
besleme uclarina 100nf kondansator bagladim.role olarak picin cikisina fotomos role bagladim.
   

@   device  pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off,bod_off

DEFINE OSC 4       'DEFINE OSCCAL_1K 1

TRISIO = 0
IOC=0

' DEGISKENLER TANIMLANIYOR.
SAYI   VAR   WORD  
I      VAR   WORD
SAYI1  VAR   WORD
SAYI2  VAR   WORD
I=0
SAYI=0
SAYI1=0
SAYI2=0
'-------------------------------------------------------------------------------
BASLA:
I=0
SAYI=0
SAYI1=0
SAYI2=0
GPIO.2=0 'ILK GECIKME  20 DK

for SAYI1=0 TO 3315
PAUSE 420
NEXT SAYI1

GPIO.2=0 '  PROGRAM SAYMAYA BURADAN  BASLIYOR. BURADA 10 DAKIKA SAYMASI ISTENMISTIR.

FOR sayi2=0 to 1
for SAYI=0 TO 3315  ' B BOLMDE 5 DK
PAUSE 105           ' GECIKME
NEXT SAYI           ' OLSR.
next SAYI2

GPIO.2=1 ' ROLE CEKTIKTEN SONRA 10 SANIYE CEKILI KALIR VE TEKRAR BIRAKTIRILIR.

FOR I=0 TO 100
PAUSE 100
NEXT I

GPIO.2=0
GOTO BASLA
                                                                       
END
Yaşam anlamlandırıldıkça kutsaldır....

selvi

12F675 entegresine 3v beslemeyle devre saglikli calisir mi?datasheetinde 2-5.5v yaziyor.2 tane 12f675 entegresine 30dk lik sayici programi yukledim.bir tanesi yaklasik 30dk sonra GPIO.2=1 oluyor.digeri 32.5dk sonra GPIO.2=1 oluyor.boyle bir sonucu nasil yorumlamak gerekiyor
 birde bir onceki mesajda sordugum soruya iliskin;30dk saydiktan sonra
GPIO.2=1 olmasi gerekirken bazen besleme verdikten birkac dakika sonra
GPIO.2=1 oluyor.
 boyle bir sonuc pic entegrelerinden kaynakli oluyorsa pic lere ne kadar guvenebiliriz.yazdigim programdan kaynakli bir  sorun olup olmadigi konusunda farkli bir  gorus gelmedi.programi defalarca inceledim.bir sorunun oldugunu kendim tespit edemedim.programi cok basit bir sekilde duzenledim.farkina varmadigim yanlis durumlar olabilir.bu yonlu gorus bekliyorum.
Yaşam anlamlandırıldıkça kutsaldır....

ahmet2004

Reset entegresi kullanın o zaman?

Maxim

Alıntı yapılan: "selvi"12F675 entegresine 3v beslemeyle devre saglikli calisir mi?datasheetinde 2-5.5v yaziyor.2 tane 12f675 entegresine 30dk lik sayici programi yukledim.bir tanesi yaklasik 30dk sonra GPIO.2=1 oluyor.digeri 32.5dk sonra GPIO.2=1 oluyor.boyle bir sonucu nasil yorumlamak gerekiyor
 birde bir onceki mesajda sordugum soruya iliskin;30dk saydiktan sonra
GPIO.2=1 olmasi gerekirken bazen besleme verdikten birkac dakika sonra
GPIO.2=1 oluyor.
 boyle bir sonuc pic entegrelerinden kaynakli oluyorsa pic lere ne kadar guvenebiliriz.yazdigim programdan kaynakli bir  sorun olup olmadigi konusunda farkli bir  gorus gelmedi.programi defalarca inceledim.bir sorunun oldugunu kendim tespit edemedim.programi cok basit bir sekilde duzenledim.farkina varmadigim yanlis durumlar olabilir.bu yonlu gorus bekliyorum.

selvi ,bence yanılıyorsun ,hatta kesinlikle yanılıyorsun ,
bir problem varsa %99.999999 mutlaka başka bir sorun vardır ,
pic işlemcileri suçlamak şu aşamada çok komik kaçıyor inan .

2 işlemciden biri 30 dakika diğerinin 32.5 dakika sonra zaman farkını ,
pekala internal osilatörün %1 lik hata payına bağlayamazmıyız sence ?
hatta hatta, pause komutunun o kadar hassas çalışmadığınıda herkes bilir , eğer ciddi hassasiyet gerekiyorsa önce external xtal osc kullanmalı ve zaman kodumuzu timer kullanarak yapmalıyız ,belkide asm kodu kullanmalıyız ,işte o zaman feci hassas olur inan .

gelelim 3 volt olayına ,datasheette çalıştığı yazıyor, bence çalışır .


şu kodu aynen yazıp denermisin ?
donanımda bir değişiklik yapma, bakalım ne olacak ?
http://rapidshare.com/files/216255012/SELVI.HEX.html

pic programlayıcı ne ?
config ayarları çok önemli ,
BODEN_OFF
MCLRE_OFF
PWRTE_ON
WDT_OFF
INTRC_OSC_NOCLKOUT

selvi

ayni programi 2 picin farkli zamanda cikis vermesi dahili osilatore direk baglamak dogru olmayabilir.dahili osilator kullanildiginda hata payi %1 denilmis.2.5dk uzun bir sure.
 en temel sorun yarim saatlik programin 3dk sonra cikis vermesi.bunun nedeni pause komutlarinda olabilir mi?
 dahili osilator 4mhz de dusuk voltaj(3v gibi) kullanilabilir mi?normal picler 16f628 v.b dusuk voltaj 16LF628 tipi entegrelerde kullaniliyor.12f675 datasheetini kismi inceledim.ingilizce oldugu icin tam ayirt edemedim.
Yaşam anlamlandırıldıkça kutsaldır....

Maxim

3 dakika sonra çıkış vermesinin pause komutu ile ilgisi yok ,başka bir sorun var,
o verdiğim hex i denermisin ?


16F675
analog modulu kapalıyken ,
-40 - +125 derece sıcaklık arası, frekansa göre çalışma voltajı grafiği .
yani evet 3 volt ile çalışır 4 mhz de


selvi

programlayici : mikroelektronika   EasyPIC3
TMR0 kesmesini kullanarak 30dk sayici programi denecegim.
Yaşam anlamlandırıldıkça kutsaldır....

muhittin_kaplan

benim gördüğüm Proton yada PBP de dongüsel gecikme yapıldığında her defasında farklı zamanlamar oluştuğudur. eğer çok keskin bir zamanlama gerekiyorsa Zamanlama kesmesi kullanılması (TMR)
yani 35 dk lık bir zamanlama geekecekse 1ms den hesapla saydırıp 35000 de çıkış verdiririm.

selvi

asagida 30dk lik sayici programini pbp ile yazdim.tmr0 kesmesi kullandim.fakat program calismadi.tanimlamalarda sorun olabilir mi?
@   device  pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off,bod_off

DEFINE OSC 4       'DEFINE OSCCAL_1K
TRISIO = 0
GPIO.2=0
IOC=0
ON INTERRUPT GoTo KESME   'kesme olu?ursa KESME adl? etikete git.
OPTION_REG=%10000101       'Pull up dirençleri ?PTAL- Bölme oran? 1/64.
INTCON=%10100000         'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7             '16F628 de komparatör pinleri iptal hepsi giri? ç?k??
ANSEL=0
'----------------------------------------------------------------------------
SAYAC   VAR   BYTE
SN      VAR   BYTE
DAK     VAR   BYTE
SAYAC=0
SN=0
DAK=0
'-----------------------------------------------------------------------------
CLEAR  'tüm de?i?kenler s?f?rland?

BASLA:
PAUSEUS 1
GOTO BASLA

DISABLE
KESME:
     SAYAC=SAYAC+1         'kesme sayac?  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
     IF SAYAC=61 then         '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
        SAYAC=0              'sayaç s?f?rlan?yor
        SN=SN+1              'saniye de?eri bir art?r?l?yor
           IF SN=60 THEN        'saniye 60 olmu? ise 1 dakika süre geçti o halde
              SN=0              ' saniye s?f?rlan?yor
              DAK=DAK+1         ' dakika de?eri bir art?r?l?yor
                 IF DAK=30 THEN   'dakika 30 olmu?  
                   GPIO.2=1
                   PAUSE 10
                   GPIO.2=0
                    DAK=0               ' dakika s?f?rlan?yor
               ENDIF    
           ENDIF
        ENDIF
        INTCON.2=0        'TMR0 Kesme bayra?? s?f?rlan?yor
        RESUME
        ENABLE
       
END
Yaşam anlamlandırıldıkça kutsaldır....

selvi

2 tane 12f675 entegresine asagidaki programi ekledim.1 tanesinde tam 29dk 57sn sonra led yandi(gpio.2=1 oldu).   digerinde 27dk 35sn sonra led yandi.2 pic entegresi ayni firmanin urunleri.
   IF SAYAC=61 then 1dk kabul et seklinde programi yazdim.28dk 12sn sonra led yandi.sonra  IF SAYAC=65 then yaptigimda ust paragrafda belirttigim sonuclar cikti.
  bu sonuclar normal mi?
 @   device  pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off,bod_off

DEFINE OSC 4       'DEFINE OSCCAL_1K
TRISIO = 0
GPIO.2=0
IOC=0
ON INTERRUPT GoTo KESME   'kesme olu?ursa KESME adl? etikete git.
OPTION_REG=%10000101       'Pull up dirençleri ?PTAL- Bölme oran? 1/64.
INTCON=%10100000         'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7             '16F628 de komparatör pinleri iptal hepsi giri? ç?k??
ANSEL=0

'----------------------------------------------------------------------------
SAYAC   VAR   BYTE
SN      VAR   BYTE
DAK     VAR   BYTE
SAYAC=0
SN=0
DAK=0
'-----------------------------------------------------------------------------
CLEAR  'tüm de?i?kenler s?f?rland?

BASLA:
PAUSEUS 1
GOTO BASLA

DISABLE
KESME:
     SAYAC=SAYAC+1         'kesme sayac?  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
     IF SAYAC=65 then         '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
        SAYAC=0              'sayaç s?f?rlan?yor
        SN=SN+1              'saniye de?eri bir art?r?l?yor
           IF SN=60 THEN        'saniye 60 olmu? ise 1 dakika süre geçti o halde
              SN=0              ' saniye s?f?rlan?yor
              DAK=DAK+1         ' dakika de?eri bir art?r?l?yor
                 IF DAK=30  THEN   'dakika 30 olmu?  
                   GPIO.2=1
                   
                    DAK=0               ' dakika s?f?rlan?yor
               ENDIF    
           ENDIF
        ENDIF
        INTCON.2=0        'TMR0 Kesme bayra?? s?f?rlan?yor
        RESUME
        ENABLE
       
END
Yaşam anlamlandırıldıkça kutsaldır....