16F88 PWM

Başlatan zeus48, 18 Nisan 2022, 03:42:46

zeus48

Arkadaşlar mrb. 16f88 de  RB0/INT/CCP1(1) ve  RB3/PGM/CCP1(1)  bu işlemcinin 2 pwm çokışımı var ?
data bilgilerine baktım ama pekbirşey anlamadım. Tşk

mehmet

#1
CONFIG1:CCPMX biti ile sadece
pin değişebilir. CCP1 modülü
aynı kalır. Bir adet PWM kanalı
bulunmaktadır.
Sadece programlama aşamasında
seçilir.
İlgili mcunun kataloğunu inceleyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

ete

Kısaca tek bir PWM modülü ve çıkışı vr ancak seçimli (ikisinden birisi ) iki pin var.

Ete

zeus48

Tşk.Üstadlar.  Bana 18 pinli 2 pwm si olan işlemci lazım.Bir tane buldum 18f1330. Başka işlemci bilen varmı?

ete

16F1827 , 14 bacaklı 16F1825 bunlarda 4 adet PWM modülü yer alıyor.

Ete

zeus48

Ete hocam mrb. İyi bayramlar.Yanıtınız için teşekkür ederim. 16f1827 tam aradığım işlemci. Fakat formdaki yazıları okuyunca gözüm korktu. Bilmeyene çok karmaşık. Baştan beri sadece sigorta ayarları ile başım dertte ne kadar okusam fazla yol gidemiyorum.

Enson aRci arkadaşın akü şarj için yazdıklarına baktım onun sigorta ayarlarını kopyalayıp kendime göre düzenleyeyim diye ama hiçbirşey yapamadım.

Hocam sorum şu.
Ben bu işlemciyi dahili osc 8 mhz de çalıştırmak istiyorum
Ben işlemcinin B3-B6-A3 portlarındaki PWM leri kullanmak istiyorum
Ben işlemcinin A2-A4    portlarındaki DAC ları kullanmak istiyorum
Geriye kalan diğer portlar dijital giriş,çıkış olarak kullanacağım

aRci Arkadaşın yapmış olduğu ayarlar benim için nasıl olmalıdır .Yardımcı olabilirmisiniz. Tşk


   ASM
    __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CPD_ON & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_OFF   
    __config _CONFIG2, _WRT_OFF & _PLLEN_ON & _LVP_OFF & _STVREN_OFF
    endasm
 
    OSCCON = %11110000      '8 mhz internal clock, PLL on     
    ANSELA = %00001101      ' AN on PortA.2 analog
    ANSELB = %00000000      ' Digital inputs
 
    DEFINE OSC 32
    DEFINE ADC_BITS 10     ' 10 bit A/D Conversion
    DEFINE ADC_CLOCK 1
    DEFINE ADC_SAMPLEUS 10 ' 5 uS A/D sample time
 

ete

16F1827 işlemcisini dahili OSC ile 8 Mhz de çalıştırmak için şunları yapmak gerekiyor.
1. DEFINE OSC 8
2. OSCCON = %01110000   ' %0xxxx000 ,1111=16Mhz, 1110=8Mhz, 1101=4Mhz, 1100=2 Mhz.
3. OSCTUNE =0
4. #CONFIG
 __config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
 __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_19 & _LVP_OFF
#ENDCONFIG

PWM çıkışlarına gelince. APFCON0 registeri bitlerine bakacak olursak;
- Bit0 = CCP1 çıkışını ayarlıyor. 0=CCP1 çıkışı PORTB.3 den olacak
- Bit3 = CCP1 çıkışını ayarlıyor  0=CCP2 çıkışı PORTB.6 da.

CCP3 zaten bu seçimsiz olarak.PORTA.3 de.

Şimdi bu çıkışlar için hangi Timerlar kullanılacak onu seçelim.
CCPTMRS registeri bu işi yapmaktadır.
Bit,1,0 CCP1 ayarlar. Bit,3,2 CCP2 yi ayarlar. Bit 5,4 ise CCP3'ü ayarlar.
Hepsine sıfır vererek hepsi için TMR2 yi kullanabilirsiniz.
Bu aşamada T2CON registerine PWM frekansına göre bölme oranı verip Timer'ı aktif hale getirmek gerekiyor. İşinbu kısmı diğer PWM içeren işlemcilerle aynıdır.
PR2 registerine yine frekansa bağlı olarak değer vermek gerekiyor. Bu aşamdan sonra 3 PWM de çalışacaktır. Tabiiki CCPxCON registerlerine
1100 = PWM mode: PxA, PxC active-high; PxB, PxD active-high
1101 = PWM mode: PxA, PxC active-high; PxB, PxD active-low
1110 = PWM mode: PxA, PxC active-low; PxB, PxD active-high
1111 = PWM mode: PxA, PxC active-low; PxB, PxD active-low
değerlerinden birini de vermek gerekiyor.

Gelelim DAC modülüne.

DACCON0 registeri 7 nolu biti 1 yapılarak DAC aktif hale getirilir.
5 nolu bit ise DAC voltaj Output pin enable bitidir. Bu bit 1 yapılarak PORTA.2 pininden çıkış alınır.
Diğer detaylar data sheet de DACCON0 ve DACCON1 registerleri inecelenerek görülebilir.

Gelelim Giriş Çıkış işlerine.
Bu işlemcide TRISx registeri giriş çıkış pinlerini ayarlıyor geleneksel olarak.
Analog pinler ANSELx registeri ile ayarlanıyor. Hangi pin analog olarak ayarlanacak ise ANSELx registerinde karşılık gelen bit 1 yapılmalıdır. Pinleri digital kullanmak için ansel registerlerine sıfır verilmelidir.

Bu işlemcide Çıkış pinleri LATx regsiterineden yapılır. Örnek verelim PORTA.0 pininden HIGH çıkarmak için , LATA.0=1 komutunun verilmesi yeterlidir.
Giriş pinleri ise PORTx registerinden okunur. Örnek verelim PORTB.0 da bağlı buton için ,
IF PORTB.0=0  gibi komutlar kullanmak gerekir.
Burası önemli çıkışlar LATx registerinden girişler ise PORTx registerinen yapılmaktadır.
Analog pinleri ise ANSELx registeri ayarlıyor.

Burada hazır kod vermek yerine sana yol gösteren açıklamaları verdim. Birazcık kafa yourp kolaylıkla istediklerini ayarlayabilirsin.

Ete



zeus48

Ete hocam mrb. Açıklamalarınız için tşk ederim. Şimdide derleme sorunu çıktı. Formdaki yazılarıokudum. PBP2.60  yamalarının yapılması gerektiğini anladım. Fakat yamaları güncellemeye geldiğimde  benim c deki PBP  yi bilinmeyen versiyon diyor güncellemiyor.

1827 için sadece sigorta ayarlarını derlemeye kalktığımda altta şu uyarıları veriyor.  (dosya ziplenip  yüklendi)
programda view--compile and program ---asembler--mpasm   bunları yaptım
c deki  1827 inc dosyasındaki sigorta ayarlarını kapattım. Fakat başaramadım.




ete

PBP2.60 versiyon kullanıyor isen,
ASM
 __config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
 __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_19 & _LVP_OFF
ENDASM
şeklinde sigorta ayarı kullanman gerekir.
Derlemede 16LF1827 seçimini kullanma 16F1827 yi kullan tabiiki işlemcin LF serisinden değil ise.

Bunun dışında https://etepic.com/index.php/topic,1687.0.html linkinde yer alan bilgiler geçerlidir. Bu linkide iyice oku ve uygula.

Ete

zeus48

Ete hocam cevabınız için tşk. Şimdi sadece portc  ve trisc  hatası veriyor derlerken. bu işlemcide portc yok.  Bununla ilgili yazılanları okudum a,b,c yamalarının yapılması gerekiyormuş. Yamaları yaparken PBP dosyamı bilinmeyen olarak görüyor ve güncellemiyor. PBP2.60 yeniden indirmek için nete baktım bulamadım. Nereden indirebilirim. Tşk

zeus48

Ete hocam cözdüm sorun yok ,Şimdilik. Sorunumu yine sizin yazdıklarınızdan çözdüm.
https://www.dropbox.com/s/c3f6se7jyeyy2dp/setup_2.60.exe
 pbp 260  indirdim,yamaları yükledim. Şimdilik sorun yok . Tşk Üstad

zeus48

#11
Arkadaşlar mrb. 16f1827  ile yeni tanıştım. Bir haftadır savaşıyorum. Derlemeye başarmıştım ama bir sorun çıktı. En alt satırdaki  ADCIN 2,VHAM  okumak için yazdığım satırı ilave edinde  derleme başarılı diyor fakar 2 satır error veriyor. Ama "ADCIN 2,VHAM"  Bunu kaldırırsam error yok. Tşk

Error[113] c:\pbp\pbppi14e.lib.5845 :symbol not previously defined ()
Error[112] c:\pbp\pbppi14e.lib.5845 :missing operator


DEFINE PIC16F1827
ASM
 __config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_OFF & _CP_OFF &_CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF 
 __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_19 & _LVP_OFF
ENDASM
 

DEFINE OSC 8
OSCCON = %01110000   ' %0xxxx000 ,1111=16Mhz, 1110=8Mhz, 1101=4Mhz, 1100=2 Mhz.
OSCTUNE=0

TRISA =%00110100
TRISB =%01000100
PORTA =0
PORTB =0

ADCON1=%11010000

ANSELA = %00010100      ' AN2-AN4 KULLANILIYOR
ANSELB = %00000000      ' ANALOG KULLANILMIYOR

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

;;;;;;;;;;;;;;;;;;;;;DEĞİŞKENLER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

AHAM VAR WORD:AHAM=0       ;AMP HAM DEĞİŞKENİ
VHAM VAR WORD:VHAM=0       ;VOLT HAM DEĞİŞKENİ
 ;;;;;;;;;;;;;;;;;;;;;SEMBOLLER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

symbol LAM  =PORTB.0
symbol SORL =PORTB.1  
symbol DTG  =PORTB.2
symbol SARL =PORTB.4 
symbol SES  =PORTB.5 

symbol KIR  =PORTA.0
symbol SGIR =PORTA.5
symbol YES  =PORTA.6  
symbol SAR  =PORTA.7
PAUSE 300
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ADCIN 2,VHAM
end

ete

Kod da bir iki değişiklik yaptım tekrar senin kodun üzerine yazdım. Oraya bak ve yeniden derlemeyi dene bakalım ne olacak.

Kod eklerken Code tag kullanmayı ihmal etme.

Ete

zeus48

Ete hocam tşk. Yanıtınız için .

Yine aynı derleme başarılı ama yine 2 satır error veriyor

Error[113] c:\pbp\pbppi14e.lib.5845 :symbol not previously defined ()
Error[112] c:\pbp\pbppi14e.lib.5845 :missing operator

zeus48

;DEFINE PIC16F1827
ASM
 __config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_OFF & _CP_OFF &_CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF  
 __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_19 & _LVP_OFF
ENDASM

DEFINE OSC 8
OSCCON = %01110000
OSCTUNE=0
 
TRISA =%00110100
TRISB =%01000100
PORTA =0
PORTB =0
 
ADCON1=%11010000
 
ANSELA=%00010100        ; AN2-AN4 KULLANILIYOR
ANSELB =%00000000       ; ANALOG KULLANILMIYOR

deFINE ADC_BITS 10        ; ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 5      ; ADC clock source  (Fosc/16)
DEFINE ADC_SAMPLEUS 11  ; ADC sampling time (uSec) 
;;;;;;;;;;;;;;;;;;;;;DEĞİŞKENLER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AHAM VAR WORD:AHAM=0    ;AMP HAM DEĞİŞKENİ
VHAM VAR WORD:VHAM=0    ;VOLT HAM DEĞİŞKENİ
;;;;;;;;;;;;;;;;;;;;;SEMBOLLER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
symbol LAM=PORTB.0
symbol SORL=PORTB.1
symbol DTG=PORTB.2
symbol SARL=PORTB.4 
symbol SES=PORTB.5 
 
symbol KIR=PORTA.0
symbol SGIR=PORTA.5
SYMBOL YES=PORTA.6
Symbol SAR=PORTA.7
PAUSE 300
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADCIN 2,vHAM
END

Powered by EzPortal