Arkadaşlar selamlar. Bu ayarlar ile 0-5 arası pinlerden pwm çıkışı alabiliyorum.
DTCON = 0
PTCON0 = %00000000
PTCON1 = %10000000
PTPERL = $FF
PTPERH = 0
PWMCON0 = %01011111
PWMCON1 = 1
OVDCOND = %11111111
PDC0L ve PDC0H = Duty değeri
Her ne kadar yabancı dilim olmasada datasheeti çevirerek incelediğimde PWMCON0 registerinin 0,1,2,3.bitler açılmak istenen kanalı ayarlıyor 4,5,6. bitler pwm çıkışı alınmak istenen bitleri ayarlıyor
PWMCON0 register ayarlarının sonunda şöyle bir not yazılmış
Note 1: Reset condition of the PWMEN bits depends on the PWMPIN Configuration bit.
2: When PWMEN<2:0> = 101, PWM<5:0> outputs are enabled for PIC18F2331/2431 devices; PWM<7:0>
outputs are enabled for PIC18F4331/4431 devices.
When PWMEN<2:0> = 111, PWM Outputs 1, 3 and 5 are enabled in PIC18F2331/2431 devices; PWM
Outputs 1, 3, 5 and 7 are enabled in PIC18F4331/4431 devices.
3: Unimplemented in PIC18F2331/2431 devices; maintain these bits clear.
PWMCON0 registerinin 4,5,6 bitleri 101 olursa tüm bitlerden pwm alırsınız diyor ama yalnızca 0-5 arasından alabiliyorum 6,7. bitlerde pwm ne yaptıysam yok
Üç gündür bununla uğraşıyorum , tecrubesi olan arkadaşlar yardımcı olursa çok makbule geçecek , şimdiden teşekkür ederim yazan arkadaşlara.
Çeviriyi yanlış anlamışsın sen. 0,1,2 ve 3. bitler kanal felan ayarlamıyor. Bu bitler kanallar tamamlayıcılı mı ( biri aktifken diğeri pasif gibi düşünebilirsin) yoksa bağımsız mı çalışacağını seçiyorsun( pwm0 high ise pwm1 de high olur). Bağımsız çalışıtırıken farklı duty değerleri veremiyorsun.
Örneğin pwm0 255 ise pwm1 de 255 olmak zorunda.
Hemen bir deneme yaptım ve gayet düzgün çalışıyor.
Kodlarının tümünü paylaşırsan yardımcı olabilirim.
Cevap için çok teşekkürler Apsis hocam benim pek umudum yoktu cevap geleceğinden açıkcası , umut oldunuz.
Pwm için kullandığım kodlar bunlar
TRISB=%00000000
DTCON = 0
PTCON0 = %00000000
PTCON1 = %10000000
PTPERL = $FF
PTPERH = 0
PWMCON0 = %01011111
PWMCON1 = 1
OVDCOND = %11111111
i var word
i=1000
for i=0 to 1023
PDC0L = i.LowByte
PDC0H = i.HighByte
PDC1L = i.LowByte
PDC1H = i.HighByte
PDC2L = i.LowByte
PDC2H = i.HighByte
PDC3L = i.LowByte
PDC3H = i.HighByte
pause 5
next
0,1,2. kanallardan yani 0,1,2,3,4,5. bitlerden pwm çıkışı var iken 6 ve 7 de yok. Bu kodlarda bir yanlışlık vardır lllaki ama denemediğim alternatif kalmadı.
6 ve 7. bitleri rd6 ve rd7 den alman lazım. Port ayarı olarak sadece B portunu ayarlamışsın. D portunu ayarla ve RD6 ve RD7 den pwm işaretini alman lazım.
Söylemeyi unutmuşum. Ben C'de denedim sen basic'de yazmışsın.
Kodlarının tümü buysa sigorta ayarların nerede?
Piyade bölüğü baştan say 1,2,3.... en son 2 asker topçu bölüğünden seslensin 6,7 .
Aslında hangi portun hangi bitleri pwm imiş diye baktım başta , PORTB 0,1,2,3 özelliklerinde pwm görünce diğerleride portb den devam ediyordur diye kontrolü bırakmıştım tabii büyük hata. Şimdi denedim PORTD 6 ve 7 de pwm görünce çocuk gibi sevindim vallahi. Altı aydır uğraşıpta tam sonunda kalakaldınmı verdiğin emeğemi zamanamı yanasın bilemiyor insan.
Apsis hocam ne kadar teşekkür etsem azdır çok sağolun , unutmayacağım bu yardımınızı hiçbir zaman.
Ne demek hocam hepimiz sorunlarımızı çözmek için varız. Faydalı olduysa ne mutlu bana.
İyi çalışmalar..