avatar_emrecatal00

osc bilgi yardım

Başlatan emrecatal00, 15 Mart 2016, 20:46:51

emrecatal00

Öncelikle merhaba! ben 12f675 ile programımı yazdım fakat ete hocamın örneklerinde ;
DEFINE OSC 4
DEFINE OSCCAL_1k 1
diye komutları gördüm ben programımda bu komutları kullanmamıştım sonradan eklediğimde ise yazdığım programlar yavaşladı
sorum şudur ; bu komutları kullanmadan devam etsem bir problem olur mu? veya bu komutları kullanırsam programıma göre nasıl adapte edeceğim , çünkü bu komutları yazınca programım yavaşlıyor bu konu hakkında yardımcı olursanız veya açıklamada bulunursanız çok memnun olurum herkese teşekkürler şimdiden..

''HAYAT PAYLAŞINCA GÜZEL''

ete

DEFINE OSC 4 komutu , işlemcinin hangi frekansta çalıştığını programa bildiriyor. Bu bilgi sonradan PAUSE ve diğer zamana bağlı komutların dopru çalışmasını sağlıyor. Gerçi genelde default değer olarak zaten 4Mhz kullanılıyor. Bu frekans için illaki bu komutu yazmak gerekmiyor.

DEFINE OSCCAL_1k 1  komutu ise OSC_Kalibrasyon değerini işlemciyi programlama sırasında yerinden okunup sonra tekrar aynı yere yazılmasını sağlıyor. 12F675 de Osilatör kalibrasyon değeri fabrikada bulunup ayarlanan bir değerdir.  Bu kalibrasyon değeri ne demek onu açıklayalım. İşlemci dahili osc ile çalışırken frekansın 4 Mhz olması istenir. Bunu sağlamak için fabrikada işlemci dahaili osc ile çalıştırılır ve frekansın ne olduğuna bakılır. Şayet 4Mhz den az yada fazla ise 4 Mhz oluncaya kadar kalibrasyon değeri verilir. Bu değer onun tam 4Mhz de çalışmasını sağlar. Bu değer sonra Program hafızasının son adresi olan 03FF adresine kayıt edilir. Tabiiki işlemci programlanırken bu son adresteki değerin önce okunup sonra yeni programla birlikte yeniden yerine kayıt edilmesi gerekir. İşte yukarıda verilen komut bu işi yaptırır. Komutu kullanmaz isen kalibrasyon değeri silinir ve pic 4Mhz den farklı (genelde daha düşük bir frekans ile) çalışmaya başlar. Bu yüzden senin programın yavaşlamış.
Muhtemelen kalibrasyon değerin silindi. Artık eskisine dönsende pic yine aynı hızla çalışacaktır.
PicKit2 programlayıcıda ve bazı diğer programlayıcılarda bu kalibrasyon değerini hesaplayıp tekrar yerine yazma özelliği vardır. Ya yeni bir 12F675 kullanacaksın yada prigramlayıcında OSCCAL değerini yeniden tespit etme özelliği var ise onu kullanıp işlemciyi tekrar hayata döndüreceksin.

Ete

emrecatal00

Alıntı yapılan: ete - 15 Mart 2016, 21:06:00
DEFINE OSC 4 komutu , işlemcinin hangi frekansta çalıştığını programa bildiriyor. Bu bilgi sonradan PAUSE ve diğer zamana bağlı komutların dopru çalışmasını sağlıyor. Gerçi genelde default değer olarak zaten 4Mhz kullanılıyor. Bu frekans için illaki bu komutu yazmak gerekmiyor.

DEFINE OSCCAL_1k 1  komutu ise OSC_Kalibrasyon değerini işlemciyi programlama sırasında yerinden okunup sonra tekrar aynı yere yazılmasını sağlıyor. 12F675 de Osilatör kalibrasyon değeri fabrikada bulunup ayarlanan bir değerdir.  Bu kalibrasyon değeri ne demek onu açıklayalım. İşlemci dahili osc ile çalışırken frekansın 4 Mhz olması istenir. Bunu sağlamak için fabrikada işlemci dahaili osc ile çalıştırılır ve frekansın ne olduğuna bakılır. Şayet 4Mhz den az yada fazla ise 4 Mhz oluncaya kadar kalibrasyon değeri verilir. Bu değer onun tam 4Mhz de çalışmasını sağlar. Bu değer sonra Program hafızasının son adresi olan 03FF adresine kayıt edilir. Tabiiki işlemci programlanırken bu son adresteki değerin önce okunup sonra yeni programla birlikte yeniden yerine kayıt edilmesi gerekir. İşte yukarıda verilen komut bu işi yaptırır. Komutu kullanmaz isen kalibrasyon değeri silinir ve pic 4Mhz den farklı (genelde daha düşük bir frekans ile) çalışmaya başlar. Bu yüzden senin programın yavaşlamış.
Muhtemelen kalibrasyon değerin silindi. Artık eskisine dönsende pic yine aynı hızla çalışacaktır.
PicKit2 programlayıcıda ve bazı diğer programlayıcılarda bu kalibrasyon değerini hesaplayıp tekrar yerine yazma özelliği vardır. Ya yeni bir 12F675 kullanacaksın yada prigramlayıcında OSCCAL değerini yeniden tespit etme özelliği var ise onu kullanıp işlemciyi tekrar hayata döndüreceksin.

Ete
hocam öncelikle cevabınız için çok teşekkür ederim pickit2 kullanıcısıyım galiba yanlış anladınız yada ben yanlış anlamışda olabilirim kusura bakmayın DEFINE OSC 4 ve DEFINE OSCCAL_1k 1   komutunu kullanmadan pice programı yazdırdım herşey istediğim gibi çalıştı fakat örneklerinizde DEFINE OSC 4 ve DEFINE OSCCAL_1k 1 komutu kullandığınızı gördüm ve bende programıma ekledim fakat DEFINE OSC 4 komutunu ekleyince programımda yavaşlama oldu farklı bir pic de DEFINE OSC 4 komutunu ekleyiptemi yazdırmayı deneyim ? 

ete

Ben doğru anladım ama sen yazdıklarımı anlamamışsın. O komutlar olmadan o işlemci doğru çalışmaz.
İlk seferde doğru çalıştı ise her zaman çalışacak anlamına gelmez.

Ete

emrecatal00

Alıntı yapılan: ete - 15 Mart 2016, 21:49:43
Ben doğru anladım ama sen yazdıklarımı anlamamışsın. O komutlar olmadan o işlemci doğru çalışmaz.
İlk seferde doğru çalıştı ise her zaman çalışacak anlamına gelmez.

Ete
Peki hocam farklı bir işlemcide bu komutu yazarsam yine aynı olurmu yani yavaş çalışırmı yoksa proteusdaki gibi 4mhz frekansında yani normal  çalışır mı ? eğer çalışmassada ne yapmam gerek sürelerle mi oynayayım ?

ete

Bu sorun yalnızca 12F675 ile alakalı ve  DEFINE OSCCAL_1k 1  komutuda yalnızca bu işlemcide kullanılmalı.
Başka işlemcide bir şey yapman gerekmiyor. 12F683 kullan sorun kalmaz.

Olayı tam olarak anlamadın sanıyorum. Bir kez daha izah ediyorum.
12F675 içinde dahili OSC var. Bu osc nin birde kalibrasyon registeri var. Dahili OSC 4MHz ve bu 4Mhz i almak için fabrikada kalibrasyon registerine $38 gibi bir değer bulup veriyorlar. Dahili OSC bu değer ile tam 4Mhz veriyor.
Ama bu değer $FF olursa 4Mhz yerine 2Mhz veriyor diyelim. Sen bu değeri programlarken silince kalibrasyon registerine $FF yazılıyor ve senin işlemci başlıyor 4 yerine 2 Mhz de çalışmaya. Olay budur. Bu özellik sadece 12F675 ve sanıyorum 12F629 da var. Onun dışındakilerde yok bu özellik.

Ete

emrecatal00

Alıntı yapılan: ete - 16 Mart 2016, 07:58:55
Bu sorun yalnızca 12F675 ile alakalı ve  DEFINE OSCCAL_1k 1  komutuda yalnızca bu işlemcide kullanılmalı.
Başka işlemcide bir şey yapman gerekmiyor. 12F683 kullan sorun kalmaz.

Olayı tam olarak anlamadın sanıyorum. Bir kez daha izah ediyorum.
12F675 içinde dahili OSC var. Bu osc nin birde kalibrasyon registeri var. Dahili OSC 4MHz ve bu 4Mhz i almak için fabrikada kalibrasyon registerine $38 gibi bir değer bulup veriyorlar. Dahili OSC bu değer ile tam 4Mhz veriyor.
Ama bu değer $FF olursa 4Mhz yerine 2Mhz veriyor diyelim. Sen bu değeri programlarken silince kalibrasyon registerine $FF yazılıyor ve senin işlemci başlıyor 4 yerine 2 Mhz de çalışmaya. Olay budur. Bu özellik sadece 12F675 ve sanıyorum 12F629 da var. Onun dışındakilerde yok bu özellik.

Ete
Hocam cevaplarınız için çok teşekkür ederim. 12f683 aldığımda programımı osc komutsuz yazdırırsam anladığım kadarıyla normal çalışacak , sizin demek istediğinizi de anladım programdaki osc ayarlarını silmişim program yazdırırken ve bu nedenle pic değişik çalışıyor. Fakat elimde çok sayıda 12f675 var bunları da ziyan etmek istemiyorum hocam , 4mhz de yani osc 4 komutuyla  programda düzenleme yapsam düzelir mi ? yada hiç kullanılmamış 12f675 ile osc 4 komutlarını ekleyip denesem düzelir mi ?

ete

Elinde başka 12F675 var ise başka işlemci deneme bence.
Söylenen iki komutu ekleyip o şekilde yeni işlemciye yaz programı kullan sorun olmaz.
Eski işlemciyide Pickit2 arayüz programında Tools kısmınd OSCAL seçeneğini seç , (işlemci Zİf sokette takılı olsun)
ve OSCAL değerini Otomatik bul seçeneği ile yeniden doğru OSCAL değerini buldur onuda bu şekilde yeniden kullanabilirsin. Sonuçta işlemcin ölmedi tekrar kullanılabilir durumdadır.

Başka illemciye geçersen programda yenisine ait komut ilaveleri eskisine ait bazı komutların çıkartılması gerekir ki buda bilmeyenler için zor bir süreç .

Ete

emrecatal00

Alıntı yapılan: ete - 16 Mart 2016, 08:58:09
Elinde başka 12F675 var ise başka işlemci deneme bence.
Söylenen iki komutu ekleyip o şekilde yeni işlemciye yaz programı kullan sorun olmaz.
Eski işlemciyide Pickit2 arayüz programında Tools kısmınd OSCAL seçeneğini seç , (işlemci Zİf sokette takılı olsun)
ve OSCAL değerini Otomatik bul seçeneği ile yeniden doğru OSCAL değerini buldur onuda bu şekilde yeniden kullanabilirsin. Sonuçta işlemcin ölmedi tekrar kullanılabilir durumdadır.

Başka illemciye geçersen programda yenisine ait komut ilaveleri eskisine ait bazı komutların çıkartılması gerekir ki buda bilmeyenler için zor bir süreç .

Ete
Hocam cevaplarınız için çok teşekkür ederim dediğiniz gibi yaptım tools bölümünden otomatik buldurdum dediğiniz osc 4 komutunu falanda ekledim herşey normal osc değerini 3434 buldu tekrar teşekkürler hocam..

''HAYAT PAYLAŞINCA GÜZEL''

est32

ete hoca söylemeyi unutmuş sanırım, OSCAL değeri silinen işlemciler harici kristal ile de sorunsuz kullanılabilir fakat işlemciden 2 pin gereksiz yere işgal edilmiş olur.

emrecatal00

Alıntı yapılan: est32 - 16 Mart 2016, 12:28:50
ete hoca söylemeyi unutmuş sanırım, OSCAL değeri silinen işlemciler harici kristal ile de sorunsuz kullanılabilir fakat işlemciden 2 pin gereksiz yere işgal edilmiş olur.
harici kristal kullanmamam gerektiği için dahili osilatörü kullandım cevabınız için teşekkürler..

''HAYAT PAYLAŞINCA GÜZEL''

Powered by EzPortal