pic_loader
Üye
- Katılım
- 13 Eki 2009
- Mesajlar
- 42
- Puanları
- 1
Arkadaşlar merhaba.
Daha önce yardımlarınızı rica ettiğim çalışmada programlama dili olarak SALİH-46 hocamın tavsiyesiyle ccs kullanmaya çalışıyorum.
Şu an yapmak istediğim encoderin ürettiği pulse'leri sayıp seri iletişim ile bilgisayara göndermek.
Bunu başarırsam sonraki aşamada pwm sinyalleri üretmeye çalışacağım.
Acemice de olsa bu amaç için bir kod yazdım.
Encoder'in pulse üreten bacağı RB0 pinine, yön bilgisini alacağımız bacağı ise RB3 pinine bağlı diye farzediyorum(bu tercihlerim hatalıysa lütfen belirtin), diğer iki pin ise seri iletişim için.
SALİH-46 hocamın önerisiyle Serdar Çiçek'in kitabını aldım, orada seri iletişim örneğinde int_tbe kesmesi hakkında kod örneği bulamadım.
Acaba burada kodu yanlış kullandım mı bilmiyorum
Bir diğer bilmediğim ext kesmesinde kitapta gördüğüm şu bilginin ne anlama geldiği.
Şimdi doğrusu yüksek kenar düşük kenar nedir onu dahi hala anlayamadım, burada tam olarak ne söylendiğini bana anlatabilir misiniz?
Son olarakda burada yön bilgisi için şöyle bir bilgiye ihtiyacım var, encoder saat yönünde döndüğünde RB3 pinine bağlı bacak lojik "1" mi olur "0" mı?
Artırma yada eksiltmeyi buna göre yapmalıyım.
Yardımlarınız için şimdiden teşekkür ediyorum.
Daha önce yardımlarınızı rica ettiğim çalışmada programlama dili olarak SALİH-46 hocamın tavsiyesiyle ccs kullanmaya çalışıyorum.
Şu an yapmak istediğim encoderin ürettiği pulse'leri sayıp seri iletişim ile bilgisayara göndermek.
Bunu başarırsam sonraki aşamada pwm sinyalleri üretmeye çalışacağım.
Acemice de olsa bu amaç için bir kod yazdım.
Encoder'in pulse üreten bacağı RB0 pinine, yön bilgisini alacağımız bacağı ise RB3 pinine bağlı diye farzediyorum(bu tercihlerim hatalıysa lütfen belirtin), diğer iki pin ise seri iletişim için.
Kod:
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,stop=1)
#use fast_io(b)
#priority ext, tbe
signed int16 palse_konum=0;
#int_ext
void harici_kesme () {
if(input(pin_b3))
palse_konum--;
else
palse_konum++;
}
#int_tbe
void seriletisim_gonder(){
puts(palse_konum);
disable_interrupts(int_tbe);
}
void main(){
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
set_tris_b(0b00001011); //RB0, RB1 ve RB3 giris, RB2 cikis
output_b(0x00);
ext_int_edge(H_TO_L);
enable_interrupts(int_ext);
enable_interrupts(global);
while(1);
}
SALİH-46 hocamın önerisiyle Serdar Çiçek'in kitabını aldım, orada seri iletişim örneğinde int_tbe kesmesi hakkında kod örneği bulamadım.
Acaba burada kodu yanlış kullandım mı bilmiyorum
Bir diğer bilmediğim ext kesmesinde kitapta gördüğüm şu bilginin ne anlama geldiği.
ext_int_edge(H_TO_L); komutu ile dış kesmenin, giriş sinyalinin yüksek kenardan düşük kenara geçişi sonunda olması sağlanmıştır.
Şimdi doğrusu yüksek kenar düşük kenar nedir onu dahi hala anlayamadım, burada tam olarak ne söylendiğini bana anlatabilir misiniz?
Son olarakda burada yön bilgisi için şöyle bir bilgiye ihtiyacım var, encoder saat yönünde döndüğünde RB3 pinine bağlı bacak lojik "1" mi olur "0" mı?
Artırma yada eksiltmeyi buna göre yapmalıyım.
Yardımlarınız için şimdiden teşekkür ediyorum.