Yazmış olduğum programda bekleme zamanlarının tutmadığını gördüm. Gerekli bir ayarı mı atlıyorum ilk defa mplab x e geçtim. PİCKİT3 ile programlama yapıyorum. Zamanlama dışında program çalışıyor. delay fonksiyonlarında bir sıkıntı mı oluşuyor bilmiyorum. Benzer problemle karşılaşan oldu mu ?
programın bazı bölümleri step motor kontrol için eklenmişti. Zaman sorununu çözmek için basit rutinler deniyorum.
#include <18F2550.h>
#fuses HS,PLL5,USBDIV,PUT,CPUDIV1,VREGEN,NOWDT,NOPROTECT,NOLVP,NODEBUG //HS,PLL1,
#use delay(clock=48000000)
#define USB_HID_DEVICE TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //Uçnokta1'de Kesme transferi aktif
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 64 //Uçnokta1 için maksimum al?nacak ve gonderilecek
#define USB_EP1_RX_SIZE 64 //veri boyutu (64 byte)
#include <pic18_usb.h>
#include <USB_Konfigurasyon.h> //USB konfigurasyon bilgileri bu dosyadad?r.
#include <usb.c>
#include <stdlib.h>
//#define PGC PIN_B6 //Giri?, Devre üzeri programlama pinleri,//ICD2 kullanmak istemezseniz bu sat?r? silin
//#define PGD PIN_B7 //Ç?k??, Devre üzeri programlama pinleri //ICD2 kullanmak istemezseniz bu sat?r?silin
#define EN PIN_B7
#define MS1 PIN_B6
#define MS2 PIN_B5
#define MS3 PIN_B4
#define rst PIN_B3
#define slp PIN_B2
#define stp PIN_B1
#define dir PIN_B0
#define sensor PIN_C6
#define LED PIN_C0
#define UcNokta1 1
#define usb_nm2 paket[2]
#define usb_nm1 paket[1]
#define komut paket[0]
int16 i,s;
int16 yeni_nm ;
int16 baslangic;
int16 bitis;
int16 tekrar;
int16 nm = 800;
unsigned int8 paket[65];
unsigned int8 gond_paket[65];
int f,y,j ;
void main()
{
// setup_psp(PSP_DISABLED); // PSP birimi devre d???
setup_spi(SPI_SS_DISABLED); // SPI birimi devre d???
setup_timer_1(T1_DISABLED); // T1 zamanlay?c?s? devre d???
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlay?c?s? devre d???
setup_adc(ADC_OFF); // ADC kipi devre d??? b?rak?l?yor.
setup_adc_ports(NO_ANALOGS); // ADC portlar? ADC amaçl? kullan?lm?yor.
setup_CCP1(CCP_OFF); // CCP1 birimi devre d???
setup_CCP2(CCP_OFF); // CCP2 birimi devre d???
output_high(EN);//!ENABLE
output_high(MS1);//MS1
output_high(MS2);//MS2
output_high(MS3);//MS3
output_high(rst);//!RESET
output_high(slp);//!SLEPP
//reset_mot();
usb_init();
usb_task();
usb_wait_for_enumeration(); //Cihaz, haz?r olana kadar bekle
while(usb_enumerated())
{
for(;;)
{ usb_put_packet(UcNokta1, gond_paket,3, USB_DTS_TOGGLE);
if(usb_kbhit(1)) //E?er pc'den yeni bir paket geldiyse
{ usb_get_packet(UcNokta1, paket, 5); //paketi oku
switch(Komut) // Paketin ilk eleman?ndaki komutu oku ve ilgili göreve git
{
case 0x05:
output_low(dir);//DIR-(YON)
for(i=0;i<639;i++)
{
output_toggle(LED);//STEP
delay_ms(100);
} output_low(LED);
break;
case 0x06:
output_high(dir);//DIR-(YON)
for(i=0;i<639;i++)
{
output_toggle(LED);//STEP
delay_ms(100);
} output_low(LED);
break;
default: ; break;
}
}
}
}
}
https://www.picproje.org/index.php/topic,60163.msg464805.html#msg464805 (https://www.picproje.org/index.php/topic,60163.msg464805.html#msg464805)
Buradaki kodda delay açısında bir sorun yok, CCS C konusunu bilemiyorum...