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.