12F675 frekans uygulaması

Başlatan sinasos, 09 Kasım 2015, 14:25:44

sinasos

Arkadaşlar merhaba,
12F675 veya benzeri işlemci ile 2,5 mhz kare dalga frekans elde etmek mümkünmüdür ? eğer mümkünse nasıl ? değilse yardımcı başka bir alternatif sunabilirmisinir ?
benim yaptığım devrede 25-26 khz üzerine çıkmadı ? amacım mosfet sürmek.
teşekkürler

Burak

#1
12F675'de donanımsal PWM yok dolayısıyla yazılımsal PWM ile de bu hıza çıkılamayacağını düşünüyorum ... Ama 683'te bu donanım var ve 20 MHZ'de maksimum ulaşabileceğin PWM hızı 2.5 MHZ olarak ifade ediliyor hesaplama programlarında , tabii denemekte gerek çünkü teoride oluyor gibi görünüyor 683 için ..

Burak
Ω Gens Una Sumus Ω

sinasos

Alıntı yapılan: Burak GÜNAY - 09 Kasım 2015, 15:04:27
12F675'de donanımsal PWM yok dolayısıyla yazılımsal PWM ile de bu hıza çıkılamayacağını düşünüyorum ... Ama 683'te bu donanım var ve 20 MHZ'de maksimum ulaşabileceğin PWM hızı 2.5 MHZ olarak ifade ediliyor hesaplama programlarında , tabii denemekte gerek çünkü teoride oluyor gibi görünüyor 683 için ..

Burak

sayın burak günay,
nazik cevabınız ve ilginizden dolayı teşekkür ederim. bunu Erol hocamın tavsiyesi ile dediğiniz 12F683 ve 12F1822 ile deneyeceğim, sonucu burada bildiririm.
selamlarımla.

Burak

Rica ederim , tercihin 12f1822'den yana olsun o halde .. selamlar ..

Burak
Ω Gens Una Sumus Ω

sinasos

merhabalar,
arkadaşlar 12f1822 işlemci getirttim ama getirmeden aklıma gelmedi. sorun şu; işletim sistemim XO, editör mcs 4.0 ve pbp 2.60 kullanıyorum. ama compiler yapamıyorum. Sayın ETE hocam bununla alakalı bir makale yayınlamış, okudum ama yinede halledemedim. basit bir proğram yazdım, config için mpasm den 12f1822.inc dosyası içinden config satırını aldım ama compiler yapamıyorum. işlemciyi mcs içinde göremiyorum. nasıl compiler yapacağım konusunda yardımcı olursanız sevinirim.
selamlarımla

ete

Derleyiciyi önce Program Kaldır seçeneği ile komple kaldır.
Sonra yeniden kur. Bunu değiştirilmiş olan INC uzantılı dosyaların orjinalleri geri yüklensin diye yapıyoruz.
Sonra ilişikteki text dosyasından linki oku ve oradaki yamaları yükleyip derleyici klasörüne sırası ile uygula.
En sonunda yeniden çalıştır sistemi. 1822 INC dosyasında ilgili satırları kapatıp geri kayıt etmeyi unutma.

Ete

F®T

ETE hocam bu yamaların kurulum sırası önceliği varmı? a, b, c sırasıylamı kurulmalı ?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Harf sırasına göre olmalı.

Ete

F®T

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

sinasos

ETE hocam teşekkür ederim söylediğiniz adımları uyguladım hepsi tamam. birde sizden 1822 ye göre basit bir program örneği rica etsem ayıp olur mu. ben compiler yapamadım. "syntax error" , "bad expression" gibi hatalar veriyor.
istediğim sadece ekte bulunan şemadaki led'i pot ile ayarlayıp 1,8 mhz-2,5 mhz arasında yakmak.led yerine mosfet sürücü kullanıyorum ve onunla da mosfeti sürüyorum.
teşekkürler.

ete

12F1822 ile , 1,8 - 2,5 Mhz arasında HPWM sinyali elde etmek biraz zor.
Max sinyalin olan 2,5MHz için 32 Mhz osilatör kullanman gerek. Dahili OSC de bu seçenek ver sorun değil. Ama bu seferde min seviye 1,953 Mhz den aşaı olamıyor.  Şayet harici 20 Mhz kristal kullanırsan istediğin aralığı elde edbiliyorsun.
Ben başlangıç değerlerini vereyim gerisini istediğine göre ayarla.
Ete

'device 12F1822
asm 
__config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _CP_ON & _BOREN_ON & _CLKOUTEN_OFF
__config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF
endasm

'-----------------------------ÇALIŞMA FREKANSI SEÇİMİ------------------------------------
DEFINE OSC 4  'VEYA DEFINE OSC 4    veya  DEFINE OSC 8
OSCCON=%01101000    '%01111000=16mHZ %01101000=4 mHZ  ,  %01110000=8 mHZ  , %01111000=16mHZ ,

'SİSTEMİ 32 mHZ DE ÇALIŞTIRMAK İÇİN
'-  __config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF     ŞEKLİNDE YAZILACAK
'-DEFINE OSC 32 YAZILACAK
'-OSCCON=%01110000 (YANİ 8mHZ SEÇİLECEK)
CM1CON0=0   'KOMPARATÖRLER İPTAL EDİLDİ
CM1CON1=0
ANSELA = 0  'ANALOG GİRİŞLER İPTAL HEPSİ DİGİTAL

DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 11 ' ADC sampling time (uSec)

PORTA=0
TRISA=%00000001
WPUA=%00000000  'pullup registeri
CPSCON0.7=0          'kapasitif dokunma registeri
' ============= PWM Ayarları =========
CCP1CON = %00001100 ' CCP1, PWM mode
PR2 = 249 'max Duty=1000 olacak %50 için 500 oluyor.
T2CON = %00000101 ' TMR2 on, prescaler 1:16 , %xxxxxx00=1/1  , %xxxxxx01=1/4 , %xxxxxx10=1/16
CCPR1L = 0
'------------------------------------------------------------------------------------------------

BASLA:
..
..

PWM_VER:
         IF DUTY>0 and CCP1CON = 0 then CCP1CON = %00001100
         IF DUTY=0 THEN
           CCP1CON =0
           CIKIS=0
           return
         endIF         
         X=DUTY
         CCP1CON.4=X.0
         CCP1CON.5=X.1
         CCPR1L=x>>2
         return


gogoce

#11
Alıntı yapılan: ete - 27 Kasım 2015, 19:54:37
12F1822 ile , 1,8 - 2,5 Mhz arasında HPWM sinyali elde etmek biraz zor.
Max sinyalin olan 2,5MHz için 32 Mhz osilatör kullanman gerek. Dahili OSC de bu seçenek ver sorun değil. Ama bu seferde min seviye 1,953 Mhz den aşaı olamıyor.  Şayet harici 20 Mhz kristal kullanırsan istediğin aralığı elde edbiliyorsun.
Ben başlangıç değerlerini vereyim gerisini istediğine göre ayarla.
Ete





'device 12F1822
asm 
__config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _CP_ON & _BOREN_ON & _CLKOUTEN_OFF
__config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF
endasm

'-----------------------------ÇALIŞMA FREKANSI SEÇİMİ------------------------------------
DEFINE OSC 4  'VEYA DEFINE OSC 4    veya  DEFINE OSC 8
OSCCON=%01101000    '%01111000=16mHZ %01101000=4 mHZ  ,  %01110000=8 mHZ  , %01111000=16mHZ ,

'SİSTEMİ 32 mHZ DE ÇALIŞTIRMAK İÇİN
'-  __config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF     ŞEKLİNDE YAZILACAK
'-DEFINE OSC 32 YAZILACAK
'-OSCCON=%01110000 (YANİ 8mHZ SEÇİLECEK)
CM1CON0=0   'KOMPARATÖRLER İPTAL EDİLDİ
CM1CON1=0
ANSELA = 0  'ANALOG GİRİŞLER İPTAL HEPSİ DİGİTAL

DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 11 ' ADC sampling time (uSec)

PORTA=0
TRISA=%00000001
WPUA=%00000000  'pullup registeri
CPSCON0.7=0          'kapasitif dokunma registeri
' ============= PWM Ayarları =========
CCP1CON = %00001100 ' CCP1, PWM mode
PR2 = 249 'max Duty=1000 olacak %50 için 500 oluyor.
T2CON = %00000101 ' TMR2 on, prescaler 1:16 , %xxxxxx00=1/1  , %xxxxxx01=1/4 , %xxxxxx10=1/16
CCPR1L = 0
'------------------------------------------------------------------------------------------------

BASLA:
..
..

PWM_VER:
         IF DUTY>0 and CCP1CON = 0 then CCP1CON = %00001100
         IF DUTY=0 THEN
           CCP1CON =0
           CIKIS=0
           return
         endIF         
         X=DUTY
         CCP1CON.4=X.0
         CCP1CON.5=X.1
         CCPR1L=x>>2
         return





merhaba hocam
bişey kafama takıldı
daha önce dimleme konusunda yardımlarınız ile bir dimmer yapabilmiştim . RB0 portundan kesme yaratarak yapmıştık . (16f88 ile)
Bu 12F1822 ile 2 analog port kullanarak dimleme yapacak olsak RA2 INT pini ile mi yapacağız . External interrupt olarak yazıyor datasheette

sanırım doğru anladım
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete


gogoce

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

sinasos

#14
erol hocam,
söylediğiniz adımları defalarca uyguladım ancak sanırım bir yerde hata yapıyorum. bir türlü convert yapamadım. verdiği hataları ekteki resimde görebilirsiniz. acaba hatayı nerede yapıyorum ?
teşekkürler.
ilkay

'device 12F1822
asm 
__config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _CP_ON & _BOREN_ON & _CLKOUTEN_OFF
__config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF
endasm

'-----------------------------ÇALIŞMA FREKANSI SEÇİMİ------------------------------------
DEFINE OSC 20'4  'VEYA DEFINE OSC 4    veya  DEFINE OSC 8
OSCCON=%01101000    '%01111000=16mHZ %01101000=4 mHZ  ,  %01110000=8 mHZ  , %01111000=16mHZ ,

'SİSTEMİ 32 mHZ DE ÇALIŞTIRMAK İÇİN
'-  __config _CONFIG2, _PLLEN_ON & _LVP_OFF & _WRT_OFF     ŞEKLİNDE YAZILACAK
'-DEFINE OSC 32 YAZILACAK
'-OSCCON=%01110000 (YANİ 8mHZ SEÇİLECEK)
CM1CON0=0   'KOMPARATÖRLER İPTAL EDİLDİ
CM1CON1=0
ANSELA = 0  'ANALOG GİRİŞLER İPTAL HEPSİ DİGİTAL

DEFINE ADC_BITS 10     ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1     ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 11 ' ADC sampling time (uSec)
duty var byte
X VAR BYTE
SYMBOL CIKIS=PORTA.0
PORTA=0
TRISA=%00000001
WPUA=%00000000  'pullup registeri
CPSCON0.7=0          'kapasitif dokunma registeri
' ============= PWM Ayarları =========
CCP1CON = %00001100 ' CCP1, PWM mode
PR2 = 249 'max Duty=1000 olacak %50 için 500 oluyor.
T2CON = %00000101 ' TMR2 on, prescaler 1:16 , %xxxxxx00=1/1  , %xxxxxx01=1/4 , %xxxxxx10=1/16
CCPR1L = 0
'------------------------------------------------------------------------------------------------

BASLA:
'..
'..

PWM_VER:
         IF DUTY>0 and CCP1CON = 0 then CCP1CON = %00001100
         IF DUTY=0 THEN
           CCP1CON =0
           CIKIS=0
           return
         endIF         
         X=DUTY
         CCP1CON.4=X.0
         CCP1CON.5=X.1
         CCPR1L=x>>2
         return


Powered by EzPortal