PIC24-PWM
Bu örneğimizde PWM uygulaması yapacağız. Program aşağıdaki gibidir.
/*
Aykut ULUSAN
Elektronik Mühendisi
IZMIR
www.uicroarm.com
JP5 ve JP19 on konumda olacak
PWM özelliğini kullanacağız
*/
#include <p24Fxxxx.h>
_CONFIG1(0x3F20) // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x78EF) // Dahili fast rc osc enable, xtal uçları boş olacak
// X*10US
void
DLY_10US(unsigned int us){
while(us--) {
__asm__ volatile ("repeat #33");
__asm__ volatile ("nop");
}
}
// 65536ms'ye kadar
void
DLY_MS(unsigned int ms){
while(ms--){
DLY_10US(100);
}
}
volatile unsigned char duty=0;
int
main(void){
AD1PCFG=0xFFFF; // portlar dijital
TRISB = 0x1FFF;
_LATB14=1;
_LATB13=1;
RPOR7bits.RP15R = 18; // rb15 pwm portu
T2CON = 0;
TMR2 = 0;
PR2 = 255;
OC1CON = 0x0006;
OC1RS = duty; //duty cycle'ı bir reg ile değiştireceğiz.
T2CON = 0x8000;
T3CON = 0;
TMR3 = 0;
PR3 = 143;
T3CON = 0x8030;
while(1){
DLY_MS(20);
OC1RS = ++duty;
}
return 0;
}
/*************************************************************/
9 Yorum

Hocam iyi günler…
Acaba yaptığınız projeleri hangi pic ile yapıyorsunuz tam olarak?
Bir de yaptığınız projeleri, eğer size extra çok bir yük yük bindirmeyecekse proteus dosyalarını da paylaşabilir misiniz…
Teşekkürler…
Merhaba,
PIC24FJ64GA002. Maalesef proteus kullanmıyorum.
hocam bu programı proteusla ile yazmaya çalışsak,sorun olur mu yada örneğin bunu kopyalsak proteusa_?
Merhaba,
Proteus gibi sanal test ortamlarını kullanmanızı tavsiye etmem.(Register simulatörleri hariç).Elektronik pahalı bir meslek, benim tavsiyem, hiç olmadı bir işlemci alın, protoboard üzerinde deneyin, bu şekilde programlamanın haricinde çok şey de öğrenilecektir. Proteus yanıltıcı bir program.
Soruna gelince aynı işlemci proteusta varsa rahatlıkla çalıştırabilirsin. Ben proteus kullanmıyorum.
merhaba
hocam bu deney kartını ve arkadaşa solemişssınız ama hangi programla bu işe girmem gerektiği konusunda bir öneriniz varsa sizi dinliyorum.
şimdiden teşekkürler
Merhaba,
C ile program yazabilirsin veya bilmiyorsan basic ile. Benim önerim C dili.
picproje.org sitesinde araştırmalar yapabilirsin. Çünkü bir çok derleyici var, kolayı ve biraz daha zoru var. Detaylarını öradan öğrenebilirsin.
Merhaba
Hocam, bu set üzerinde dsPIC30F6015 mikrodenetleyicisini yada türevlerini kullanabilirmiyim? Özellikle daha zeki PID ve PWM algoritmaları ile çizgi izleyen robot yapmak istiyorum. Türkiyede ki robotlarda genelde 16f877 kullanılıyor. Genelde stabil çalışmıyorlar. Birinci olan projeleri yapan arkadaşlar bu işin şans işi olduğunu söylüyorlar. Ama ben inanmıyorum. Yada sizin dsPIC yerine STM32 serisini tavsiye edermisiniz?
İlginize teşekkür ederim.
Merhaba Ahmet,
Bir işlemci stabil çalışmaması işlemcinin değil tasarımcının suçudur. Başkaları o işlemci ile büyük ve sorunsuz projeler geliştirirken neden bazıları stabil çalıştıramıyor buna kafa yormak lazım.
Bir projenin iyi olması için sadece işlemcinin iyi olması yetmez, bunun haricinde analog tasarımın(power supply, sensör algılama devreleri..), işlemci programlama deneyimi, pcb tasarımı, malzeme montajı, uygun malzeme şeçimi
vs. gibi bir çok özelliklerinde iyi olması gerekir. Eğer power supply’ın veya sensör algılama devresi veya pcb veya uygun malzeme seçilmemişse bu hataları en deneyimli embedded programcı bile aşamaz çünkü bu bahsettiğim devreler
sistemin referans noktalarıdır. Referanslarınız rastgele değişken ise programlarınızda stabil çalışmaz.
Bahsettiğin işlemciler arasında en üstünü stm32’dir sonra dspic ve bu üçü arasında en yeteneksizi F877’dir ama iyi elektronik ve programclılık deneyimlerine sahipsen F877 ile de bahsettiğin projeyi kolayca yapabilirsin.
Hatta bazı şeyleri donanıma yıkarsan F877 bile çok fazla gelebilir. 2. seçenek ise donanımla değil gelişmiş işlemci kullanmaktır ama yine yukarıda saydığım tasarım şartlarına uymak gerekir, bu durumda senin projen için kolayca 12bit adc, 16bit pwm hassasiyetine sahip olursun.
Aykut ULUSAN
DS1307 veya PIC24FJ64GA002 vs… yapılan RTC programları kristal frekansı
%100 doğru (32768) olsa bile belirli bir süre sonunda geri kalıyor
doğru zamanı nasıl yakalarız.