PİC16F688 configuration

Başlatan efsanepoldem, 26 Mayıs 2022, 19:45:25

İlyas KAYA

DEFINE OSC 4

OSCTUNE=%00011111
OSCCON=%01101010


CMCON = 7      
intcon=0
 

Denermisin
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

efsanepoldem

#16
   Hocam bugün işyerinde değilim. Pazartesi inşallah deneyip haber vereceğim. Ayrıca bu ayarlar internal osc için mi? Yoksa external osc için mi?

İlyas KAYA

#17
Alıntı yapılan: efsanepoldem - 28 Mayıs 2022, 12:24:39Hocam bugün işyerinde değilim. Pazartesi inşallah deneyip haber vereceğim. Ayrıca bu ayarlar internal osc için mi? Yoksa external osc için mi?

İnternal 4 mhz

Bir ara bende sıkıntı yaşamıştım en son çalıştırdım ama neden nasıl yaptığımı hatırlamıyorum bende direk kendi kodumdan alıp verdim yani çalışıyor. Osctune ile ilgili diye hatırlıyorum. Onu yapmayınca devre zamanlamalarim tutmuyordu.

Suan aktif olarak 4 mhz iç osilator ile çalışan 16f88 deki kendi ayarlarım.
Ek olarak: Datasheet e göre yapınca olmamıştı diye hatırlıyorum.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

efsanepoldem

#18
    Arkadaşlar merhaba. Bir seri data gönderme işlemi yapmak istiyorum. pic16f688 internal osc ayarlarını yapamamaktan gına geldi. Datasheeete bakıyorum. Şöyle diyor.  OSCCON register 4,5,6. bitleri "011" olarak ayarlanırsa , 4 MHz de çalışır. "111" ayarlanırsa 8 mHz de çalışır. Bununla birlikte OSSCON.0  biti "1" olursa sistem cloc u internal osilatör seçilmiş olur. Yani OSCCON =%01110001 şeklinde ayarladım. Ayrıca Config word FOSC<2:0>: Oscillator Selection bits lerini  "100" şeklinde ayarlıyorum. (INTOSCIO şeklinde kullanılacak ) OSCTUNE=%00000000 şeklinde ayarladım. Fakat internal osc yi bir türlü çalıştıramadım. Konu hakkında bilgisi olan var mı? Daha once sorularıma cevap veren arkadaşların söylediklerini yaptım fakat çare olmadı.

ete

İnternal OSC yi 4Mhz kullanmak için birinci şart
#CONFIG
    __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF
#ENDCONFIG
yada önceki versiyona göre,
ASM
    __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF
ENDASM

ikinci şart ise OSCCON register ayarı oda OSCCON=%01100001 şeklinde verilmeli.
Define OSC 4 komutu eklenmeli hepsi bu kadar.
İstersen OSCTUNE=0 vererek kalibre edilmiş şekilde dahili OSC yi kullanabilirsin.

İnternal OSC yi bir türlü çalıştıramadım ne anlama geliyor acaba? İşlemci hiç mi çalışmıyor yoksa istenilen hızda mı çalışmıyor. Burayada bir açıklık getirebilirsek iyi olacak.

Ete

efsanepoldem

#20
   ETE hocam İnternal OSC yi bir türlü çalıştıramadım demekle yanlış yazmışım. Aslında çalışıyor. Seri haberleşme olduğu için 4 MHz de çalışmıyor. Program başlangıcında bir takım ledler yakıp söndürüyorum. Herşey normal. Fakat seri haberleşmede muhtemelen ayarladığım frekansta çalışmıyor. Çünkü seri port programıyla TX portundan gönderdiğim karakterler saçma sapan geliyor.

SEROUT2 MODUL_TX,84,["AT"] bu şekilde gönderiorum.
Cevap :3 diye geliyor.
Config  bu şekilde hatasız derleniyor.
asm
 __config _INTOSCIO & _WDT_OFF & _MCLRE_ON & _CP_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF
endasm

ete

4Mhz OSC frekansı genellikle 9600 Baud için pek uygun düşmüyor. Hata oranı epeyce yüksek. Bence işlemci frekansı enazından 8 Mhz olmalı.
Peki neden SEROUT2 komutunu kullanıyorsun? Neden SEROUT veya HSEROUT komutlarını kullanmıyorsun.

Ete

efsanepoldem

#22
  ETE hocam var olan bir Pcb uzerinden çalışma yaptığım için pic denetleyicisinin mevcut RX ve TX pinleri ilgili pinlere denk gelmiyor. Onun için usart kesmesi olan hserout u kullanamıyorum. 4 MHz  rezonator ile sistem sıkıntısız çalışıyor. Pic16f688  8 MHz i destekliyor. Hata oranı daha az olur ise onu da kullanabilirim. Sıkıntı yok.  Peki hocam Serout2 ile serout konutu arasında ne gibi farklar var. Serout komut u ile sıkıntı çözülebilir mi? Tahminimce internal osc. Seçtiğimiz frekansta çalışmıyor. Bu da baud hızını değiştiriyor. 

alisumer

ben int osc ile çok seri bağlantı yaptım o bahsettiğiniz hata oranı çok önemli şeyler değil 100 dosyadan 2 si 3 ü hatalı olabilir anlamına geliyor ben hiç sıkıntı yaşamadım daha önce de söyledim ama tekrar edeyim isterim gönderdiğiniz resimdeki veriler rasgele anlamsız veriler değil belli ki bağlantı var ve stabil tekrarlayan  veri geliyor ya gönderdiği sayı formatında okumuyorsunuz belki de terslenmiş bağlantı kullanıyorsunuz . kullandığınız gsm modulünün bilgi sayfası varsa paylaşın bir bakalım ne tarz bir veri gönnderiyor belki yardımımız olur bu şekilde
Hep meraktan

efsanepoldem

  Cevap için teşekkürler. Böylesi ilk defa başıma geliyor. Daha önce bende internal osc ile birçok uygulama yaptım. Pic16f688 i ilk defa kullanıyorum. Datashet ten çözerim diye düşünüyordum fakat beceremedim. Kullandığım GSM GPRS modül quectel M66. Ayrıca daha önce de belirttiğim gibi, modül ile rezonator kullanarak haberleşebildiğimi yazmıştım. Yani data formatında bir sıkıntı olduğunu düşünmüyorum.                   


ete

Serial komutlarını iki guruba ayırmak lazım. Birinci gurupta yer alan Hserin-Hserout komutları donanım bazında çalışır ve bu sayede baud hızı karşılığında oluşab,ilecek hata oranı bile hesaplanabilir. 4Mhz ve 9600 Baud hızlarda bu hata oranı %0,16 çıkıyor ki bana göre ihmal edilebilir bir oran bu.
İkinci gurupta Serin-Serout veya Serin2 ve Serout2 komutları yer alıyor k, bunlar yazılım esaslı çalışıyor. Bu komutlarda bir hata oranı bile hesaplamak mümkün olamıyor maalesef. 4Mhzde Hserout ile 9600 baud da çalışmak ile aynı hız ve Mhz de Serout2 ile çalışmak aynı şeyler olamıyor maalesef. Sen sürekli kafanı işlemcinin dahili OSC sine takmış durumdasın ama bana göre dahili osc doğru çalışıyor ancak komutlar yeterince hızlı çalışamıyor diye düşünüyorum.
Bunu deneyip görmek aslında çok kolay. Timer1 sayacını kullanarak bir led yakıp söndürme kodu yaz mesela her 500 ms de bir toggle yapan bir sistem tasarla göreceksin düzenli ve doğru olarak çalışacaktır o sistem.

Sürekli olarak kristal ile çalıştığında sorun yaşamadığını belirtiyorsun ama bütün şartların eşit olduğuna inanasım gelmiyor maalesef. Senin kristal ile doğru çalıştığını söylediğin söze karşılık bende Hserout ile çalış bak doğru çalıştığını göreceksin diyorum.

Bu durumda yapılacak iki şey kalıyor. Ya işlemci frekansını 8Mhz de çalıştıracaksın ki bu sana kodlarda en azından biraz daha fazla hız kazandıracak yada dahili OSC den vaz geçip kristal yada rezonatöre geçeceksin.

Ete

efsanepoldem

Söylediklerimizi deneyeceğim. Teşekkürler ETE hocam

Powered by EzPortal