isoment01
Üye
- Katılım
- 26 Haz 2016
- Mesajlar
- 197
- Puanları
- 1
- Yaş
- 32
arkadaşlar merhaba, forumda oldukça fazla yardım istiyorum heryerden araştırıyorum fakat deneyimsiz olduğum için hep eksik kalıyor ama işin ucunu bırakmak istemiyorum bırakamam buradan başka akıl danışabileceğim birisi yok, konuyu daha önce açtım bir abimiz yardım etti fakat ccs de yazdıgım ıcın mp lab uyumlu kodlarda bazı register atamalarını yapamadım. Yapacagım sistemi hemen anlatacak olursam;
step motorum 200 adımlık yarım adım sürüp 400 adımda 8 tur atmasını fakat ileri ve geri yönde olacak buna göre kesmeyi ileri yönde 8 tur ve geri yönde 8 tur yapmam lazım. Bu noktada kesmeyi nasıl sonlandırıp başlatacagımı bilemedim sizlere yazdığım kodu göndereceğim ve ordaki eksiklerimi söylerseniz ptesi günü olan tubitak sunumumda bana cok yardımcı olmanız lazım sistemi calıstırabılmem ıcın bu motoru sürmem şart.
ledlerle calıstırdıgımda sadece motor ve yon pınlerım calısıyor timer a hıc gırmıyor.
#device PIC18F4680
#include <18f4680.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
#use fast_io(b)
unsigned int16 sayac = 0, hedef = 0;
#int_timer1
void timer1_interrupts()
{
set_timer1(63036);
output_high(pin_b0);
delay_us(20);
output_low(pin_b0);
sayac++;
if(sayac>=hedef)
disable_interrupts(INT_TIMER1);
disable_interrupts(GLOBAL);
}
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //65,5 ms overflow
setup_timer_2 (T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00);
output_b(0x00);
set_tris_c(0x00);
output_c(0x00);
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL);
output_high(pin_c3);// motor aktif
delay_ms(100);
output_high(pin_c1);// motor yönü belirlendi
delay_us(50);
hedef=3200; //400*8
sayac=0;
set_timer1(63036);
output_low(pin_c1); // yon degıstırıldı
hedef=3200;
sayac=0;
set_timer1(63036);
output_low(pin_c3); // motor durdu
while(TRUE)
{
//TODO: User Code
}
}
step motorum 200 adımlık yarım adım sürüp 400 adımda 8 tur atmasını fakat ileri ve geri yönde olacak buna göre kesmeyi ileri yönde 8 tur ve geri yönde 8 tur yapmam lazım. Bu noktada kesmeyi nasıl sonlandırıp başlatacagımı bilemedim sizlere yazdığım kodu göndereceğim ve ordaki eksiklerimi söylerseniz ptesi günü olan tubitak sunumumda bana cok yardımcı olmanız lazım sistemi calıstırabılmem ıcın bu motoru sürmem şart.
ledlerle calıstırdıgımda sadece motor ve yon pınlerım calısıyor timer a hıc gırmıyor.
#device PIC18F4680
#include <18f4680.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
#use fast_io(b)
unsigned int16 sayac = 0, hedef = 0;
#int_timer1
void timer1_interrupts()
{
set_timer1(63036);
output_high(pin_b0);
delay_us(20);
output_low(pin_b0);
sayac++;
if(sayac>=hedef)
disable_interrupts(INT_TIMER1);
disable_interrupts(GLOBAL);
}
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //65,5 ms overflow
setup_timer_2 (T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00);
output_b(0x00);
set_tris_c(0x00);
output_c(0x00);
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL);
output_high(pin_c3);// motor aktif
delay_ms(100);
output_high(pin_c1);// motor yönü belirlendi
delay_us(50);
hedef=3200; //400*8
sayac=0;
set_timer1(63036);
output_low(pin_c1); // yon degıstırıldı
hedef=3200;
sayac=0;
set_timer1(63036);
output_low(pin_c3); // motor durdu
while(TRUE)
{
//TODO: User Code
}
}