Haberler:

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

Ana Menü

48 Mhz

Başlatan x-nomek, 15 Mayıs 2013, 22:10:03

x-nomek

#fuses HSPLL,PLL5,CPUDIV1

Taktığım kristal 20 Mhz yukarıdaki  yaptığım sigorta ayarları ile pic 48 Mhz demi çaliştiriyorum yada ben oylemi saniyiorum?
pic18f4550

pea

Evet 48MHz'de çalışıyor sistem. Çevre birimleri de 20MHz'de çalışıyor olmalı.

ferdem

x-nomek bana da yakın zamanda 18F4550 osilatör ayarları lazım olacak, emin olmak için Timer kesmesi ile bir pini toggle edip bu pinin frekansına bakabilirsiniz:
Örn Timer1 65535*1mc(machine cycle) sürede bir taşar. 1 mc eğer 20 MHz de çalışılıyorsa 20/4=5MHz, mc=200ns. 65535*0.2us=yaklaşık 13ms. Pin her 13ms de bir toggle ederse periyot 26ms, frekans yaklaşık 38Hz oluyor. Kolay gelsin.

ferdem

Başlık epey eski ama bir not eklemek istedim. PIC16F1827 de timer ayarlarına bakarken bazı konularda yanlış varsayımlar yaptığımı fark ettim.
Timer lar her 1 "machine cycle(mc)" da bir artar varsayımım vardı, timer clock ları hep Fosc/4 gördüğümden ve bir mc Fosc/4 olduğundan aklıma öyle yerleşmiş. Halbuki PIC16F1827 de timer input olarak Fosc olabiliyor... Örneğin Fosc 16 MHz olduğunda bir mc 250 ns iken timer her 62.5ns de bir artıyor. Forumda da birkaç yerde timer her 1 mc de bir artar yazmışım, düzeltmiş oldum.

ziyaretci

Alıntı yapılan: pea - 15 Mayıs 2013, 22:51:49
Evet 48MHz'de çalışıyor sistem. Çevre birimleri de 20MHz'de çalışıyor olmalı.

@pea  hocam çevre birimleri(örneğin timer 1 Fosc/4) 48MHz/4 mü oluyor yoksa PIC'e takılan kristal(20MHz)/4 mü oluyor?

XX_CİHAN_XX

#5
TMR0 da özel bir durum vardır. Power On durumunda OPTION_REG'e her hangi bir (prescaler) değeri yüklemediğin zaman TMR0 her instruction cycle'da bir artacak şekilde yani 1:1 bölen varmış gibi çalışır ki bu da fosc/4 hızında sayması anlamına gelir. TMR0'ın maksimum sayma hızı budur. Ancak OPTION_REG'e herhangi bir (prescaler) değeri girilirse bu durumda bölen minimum 1:2 olarak çalışmaya devam eder ki bu da maksimum sayma hızının fosc/8 e düşmesi demektir. Enteresan bir durum.

Alıntı Yap
In Timer mode, the TMR0 will increment every instruction cycle (without prescaler). If Timer0 is written, the increment is inhibited for the following two cycles.

@ferdem , bu durumda senin olay da 16Mhz için konuşursak prescaler set etmediğinde minimum timer artış periyodun 250nS olurken, prescaler set ettiğinde (minimum periyodun) 500nS ye çıkar. Bu durumda bahsettiğin 62.5nS'yi nerden buldun bilmiyorum ama o yanlış bir değer.

@erkantr67, Timer1 de böleni en düşük 1:1 yapabiliyorsun bu durumda Timer1 sayma periyodu bir instruction cycle kadar olur ki o da fosc/4 e eşittir. Yani 20Mhz fosc frekansın varsa 5Mhz ile timer'ın sayıyor demektir.

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

ferdem

Ben de en fazla Fosc/4 olur diye bilirdim, 16F1827 de timer1 in direkt Fosc ile sürülebildiğini fark ettim, o şekilde de kullandım. 16 MHz de timer1 her 62.5 ns de bir artacak şekilde ayarlanabiliyor.

PIC16(L)F1826/27 datasheet sayfa 185/406.

XX_CİHAN_XX

Haklısınız. Eski serilerde böyle bir şey yoktu. Güzelmiş :)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.