16f628 i 16hmz kristal ile çalıştırmak

Başlatan hgungor, 14 Mayıs 2016, 23:00:56

hgungor

Merhaba arkadaşlar ben 16f628 entegresini 16mhz kristal ile çalıştırmak istiyorum ama birkaç deneme sonucu başarısız oldum
programda LCD var , yazdığım programın baş kısmı aynen şöyle:

TRISA=%00000010
TRISB=0
@ DEVICEpic16F628A                                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON               
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_LVP_ON
@ DEVICEpic16F628A_MCLR_ON
@ DEVICEpic16F628A_CPD_OFF             
@ DEVICEpic16F628A_XT_OSC

DEFINE LCD_DREG PORTB 'LCD  data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT 4  'LCD  data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG PORTB 'LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 3 'LCD  Enable Bacağı Hangi bite bağlı ?
define LCD RWREG PORTB  ''LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT 2  ''LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG PORTB ''LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT 1 ''LCD RS  bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS 4  ''LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 ''LCD Kaç  sıra yazabiliyor
DEFINE OSC 16
DEFINE LCD_COMMANDUS_1000
DEFINE LCD_DATAUS_225
PAUSE 500


Bu program 4mhz ile sıkıntısız çalışıyor ama 16 takınca sonuç alamıyorum, yardımcı olacaklara şimdiden teşekkür ederim

F®T

#1
DEFINE OSC 16 nerde...OSC tanımlamasını en üste yaz..

@ DEVICEpic16F628A_XT_OSC yerine    @ DEVICEpic16F628A_HS_OSC
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

hgungor

Merhaba FT dediğin değişiklikleri yaptım ama yine sonuç alamadım, programın son hali aşağıdaki gibi

ON INTERRUPT GOTO KESME
TRISA=%00000010
TRISB=0
@ DEVICEpic16F628A                                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON                
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_LVP_ON
@ DEVICEpic16F628A_MCLR_ON
@ DEVICEpic16F628A_CPD_OFF            
@ DEVICEpic16F628A_HS_OSC
DEFINE OSC 16
DEFINE LCD_DREG PORTB 'LCD  data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT 4  'LCD  data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG PORTB 'LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 3 'LCD  Enable Bacağı Hangi bite bağlı ?
define LCD RWREG PORTB  ''LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT 2  ''LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG PORTB ''LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT 1 ''LCD RS  bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS 4  ''LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 ''LCD Kaç  sıra yazabiliyor
DEFINE LCD_COMMANDUS_1000
DEFINE LCD_DATAUS_225

F®T

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

hgungor

#4
Program ultrasonic sensör ile mesafe ölçümü ama ileriki safasında ultrasonik radar olarak kullanmayı düşünüyorum,programın  tamamı bu, bu program 4mhz ile çalışıyor ama daha hassas ölçüm yapabilmek için daha yüksek frekansta bi kristal kullanmak istedim başarılı olamadım, yardımlarınızı bekliyorum
Şimdiden teşekkürler

ON INTERRUPT GOTO KESME
TRISA=%00000010
TRISB=0
@ DEVICEpic16F628A                                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON                
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_LVP_ON
@ DEVICEpic16F628A_MCLR_ON
@ DEVICEpic16F628A_CPD_OFF            
@ DEVICEpic16F628A_HS_OSC
DEFINE OSC 16
DEFINE LCD_DREG PORTB 'LCD  data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT 4  'LCD  data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG PORTB 'LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 3 'LCD  Enable Bacağı Hangi bite bağlı ?
define LCD RWREG PORTB  ''LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT 2  ''LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG PORTB ''LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT 1 ''LCD RS  bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS 4  ''LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 ''LCD Kaç  sıra yazabiliyor
DEFINE LCD_COMMANDUS_1000
DEFINE LCD_DATAUS_225

PAUSE 500
PORTB=0
OPTION_REG=%10000000
INTCON=%11000000
CMCON=7
SAYI VAR BYTE
SAYI1 VAR BYTE
SAYI2 VAR BYTE
SAYI=0
SAYI2=0

ANA:'--------------------------------------ANA PROGRAM-----------------------
RADAR:'--------------------------------------RADAR KONTROLÜ-------------------
PORTA.0=1 '---RADARIN BASLAMA PALSİ
PAUSEUS 10
PORTA.0=0 '---PALS BİTİŞİ
ECHOBASLANGIC:'---RADAR TARAMA SİNYALİ GÖNDERİYOR
IF PORTA.1=0 THEN
GOTO ECHOBASLANGIC
ENDIF
INTCON.5=1
ECHOBITIS:'---RADARIN TARAMI SİNYALİ BİTİMİ KONTROLÜ
IF PORTA.1=1 THEN
GOTO ECHOBITIS
ENDIF
INTCON.5=0

IF SAYI<10 THEN '---RADARDAN ALINAN MESAFE İŞLENİYOR
PORTA.3=0
PORTA.2=1
ELSE
PORTA.2=0
PORTA.3=1
ENDIF

lcdout $FE,1,#SAYI," CM"
SAYI=0
SAYI2=0
PAUSE 2000
goto ana

DISABLE '----------------------------KESME İŞLEMİ-----------------------------
KESME:
SAYI=SAYI+1
IF SAYI=255 THEN
SAYI=0
SAYI2=SAYI2+1
ENDIF
INTCON.2=0
TMR0=238
RESUME '-------KESMEDEN GERİ DÖNÜŞ
ENABLE
END

F®T

#5
Prog atarken code sekmesini kullanıp bu şekilde at.Forum kirliliği olmasın.

LVP_0n onuda 0ff olarak kapatıp denermisin.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 15.5.2016                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 16

@ DEVICEpic16F628A                                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON               
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_LVP_OFF
@ DEVICEpic16F628A_MCLR_ON
@ DEVICEpic16F628A_CPD_OFF             
@ DEVICEpic16F628A_HS_OSC
TRISA=%00000010:PORTA=0
TRISB=0:PORTB=0
DEFINE LCD_DREG PORTB 'LCD  data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT 4  'LCD  data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG PORTB 'LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT 3 'LCD  Enable Bacağı Hangi bite bağlı ?
define LCD RWREG PORTB  ''LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT 2  ''LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG PORTB ''LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT 1 ''LCD RS  bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS 4  ''LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES 2 ''LCD Kaç  sıra yazabiliyor
DEFINE LCD_COMMANDUS_1000
DEFINE LCD_DATAUS_225

SAYI VAR BYTE
SAYI1 VAR BYTE
SAYI2 VAR BYTE

CLEAR

CMCON=7
OPTION_REG=%10000000
TMR0=238
INTCON=%10100000 
ON INTERRUPT GOTO KESME
PAUSE 500

ANA:'--------------------------------------ANA PROGRAM-----------------------

RADAR:'--------------------------------------RADAR KONTROLÜ-------------------
PORTA.0=1 '---RADARIN BASLAMA PALSİ
PAUSEUS 10
PORTA.0=0 '---PALS BİTİŞİ
ECHOBASLANGIC:'---RADAR TARAMA SİNYALİ GÖNDERİYOR
IF PORTA.1=0 THEN
GOTO ECHOBASLANGIC
ENDIF
INTCON.5=1
ECHOBITIS:'---RADARIN TARAMI SİNYALİ BİTİMİ KONTROLÜ
IF PORTA.1=1 THEN
GOTO ECHOBITIS
ENDIF
INTCON.5=0

IF SAYI<10 THEN '---RADARDAN ALINAN MESAFE İŞLENİYOR
PORTA.3=0
PORTA.2=1
ELSE
PORTA.2=0
PORTA.3=1
ENDIF

lcdout $FE,1,#SAYI," CM"
SAYI=0
SAYI2=0
PAUSE 2000
goto ana

DISABLE '----------------------------KESME İŞLEMİ-----------------------------
KESME:
SAYI=SAYI+1
IF SAYI=255 THEN
SAYI=0
SAYI2=SAYI2+1
ENDIF
TMR0=238
INTCON.2=0

RESUME '-------KESMEDEN GERİ DÖNÜŞ
ENABLE
END


Dene bakalım.Görebildiklerimi yaptım.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

hgungor

Kod sekmesi konusunda beni uyardığın için çok teşekkürler, bu özelliği bilmiyordum
Program yine çalışmıyor, 16mhz kristali çıkarıp yerine 4 takınca çalışıyor.Başka yapabileceğimiz bişey varmıdır

F®T

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

hgungor

27pf malesef şema yok ama tarif edebilirim b portuna lcd bağlı a portuna sensör ve iki led bağlı, malesef ne lcd nede ledler çalışmıyor 16mhz ile , ledler a2 ve a3 e bağlı, mesafe belli bir değerin üzerinde bir led , o değerin altında ise diğer led yanıyor.

F®T

#9
peki x tall 16 yapıyon progdanda 16 olanı yüklüyon olmuyomu.xtall bozuk olmasın???Başka xtall varsa kodu değiş xtalli değiş dene üşenme...
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

hgungor

elimde sadece 4 ve 16 olduğundan bunlarla deniyom 15-20 tane 16mhz var birkaç tane denedim bozuktur diye ama sonuç değişmedi

hgungor

#11
BUARADA AZ ÖNCE LED YAKMAYI DENEDİM SADECE ODA OLMADI 16MHZ İLE

Edit:(ete)
Büyük harf ile mesaj yazmayın. Anlamı kızdığınızı bağırarak konuştuğunuzu ifade diyor. Forum dilindeki anlamı bu. Zaten bu anlamı veriyorsanız o zaman başka bizde aynı şekilde cevap vereceğiz demektir.

ete

Elindeki işlemci 16F628 ise ve uzantısında 04P gibi bir ifade var ise o muhtemelen 4 mhz üzerinde çalışmaz. Ama işlemcin 16F628A ise 20 mhz ye kadar her frekansta çalışır.
Önce işlemciyi kontrol et üzerinde ne yazıyor bir bak istersen.
16f628/20p yazanlar 20 mhz ye kadar çalışabiliyor değilse 4 mhz de çalışması garanti oluyor. Ama A serisi otomatikman 20 mhz ye kadar çalışır.
Ayrıca kristal bacaklarına 22p kondansatör bağlanmalı ve kondansatörlerin diğer bacakları gnd ye birleştirilmelidir. Mclr pini 10 k ile +5V ta bağlanmalıdır.

Ete

hgungor

#13
Ete bey cevap için çok teşekkür ederim, entegrenin üzerinde aynen şunlar yazıyor PIC16F628A  -I/P ,
Dediğiniz gibi bağlantılar mevcut sadece 22pf yerine 27pf takmışım, fakat bu 27leri 22 ye çevirincede sonuç değişmedi,
en son denediğim devrenin yazılımı a2 deki led yanmıyor

DEFINE OSC 16
@ DEVICEpic16F628A                                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON               
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_LVP_ON
@ DEVICEpic16F628A_MCLR_ON
@ DEVICEpic16F628A_CPD_OFF             
@ DEVICEpic16F628A_HS_OSC

TRISA=%00000010
PORTA=0
TRISB=0
PORTB=0

CMCON=7

PAUSE 2000
PORTA.2=1
END

ete


Görünüşe göre elindeki işlemci A serisinden ve rahatlıkla 16Mhz de çalışabilir demektir bu. Sigorta ayarlarının veriliş şekli yanlış.
Anlaşılan kullandığın PC 32 bitlik ona uygun sigorta ayarları vermişsin çünki.
Doğru program aşağıdaki şekilde olmalı. Tekrar derleyip dene istersen.

Ete

@ DEVICE pic16F628
@ DEVICE pic16F628, WDT_OFF
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, LVP_OFF
@ DEVICE pic16F628, MCLR_OFF
@ DEVICE pic16F628, CPD_OFF
@ DEVICE pic16F628, HS_OSC
DEFINE OSC 16
TRISA=%00000010
PORTA=0
TRISB=0
PORTB=0

CMCON=7

PAUSE 200

BASLA:
PORTA.2=1
GOTO BASLA
END




Powered by EzPortal