pıc basıc """pause 500"""" komut sorunu

onrsrc

Üye
Katılım
30 May 2012
Mesajlar
2
Puanları
1
Arkadaşlar merhabalar bi konuda acil yardımınıza ihtiyacım var;

16F84A kullanarak 2 dc motorlu, 4 cny70 li, 1 hc-sr04 ultrasonic sensorlü mini sumo yaptım , programlarını yazdım ancak program sürekli PAUSE 5000 sorunu veriyor; 5 sn bekliyor tam çalşmak üzereyken cızt ediyor duruyor tekrar 5sn bekliyor bu böyle sürüyor. Acaba PAUSE 5000 i yanlış yere mi yazıyorum neden bu sorunla karşılaşıyorum 2 gündür bununla uğraşıyorum. Bir fikriniz varsa lütfen fikirlerinizi paylaşın. Programım burda;


DEFINE OSC 4
PORTA=0
PORTB=0
TRISA=%00010000
TRISB=%01111111
SYMBOL CNY7_L2=PORTB.0
SYMBOL CNY7_L1=PORTB.1
SYMBOL CNY7_R2=PORTB.2
SYMBOL CNY7_R1=PORTB.3
SYMBOL ANA_SENSOR=PORTB.6
SYMBOL TRIP=PORTB.7
SYMBOL MOTOR_L_G=PORTA.0
SYMBOL MOTOR_L_I=PORTA.1
SYMBOL MOTOR_R_G=PORTA.2
SYMBOL MOTOR_R_I=PORTA.3
CNY_ST VAR BIT
TIMER VAR WORD
CNY_ST=0
PORTA=0
PAUSE 5000
'_________________________________ANA PROGRAM DÖNGÜSÜ__________________________

ANAPROGRAM:

IF CNY7_L1=CNY_ST OR CNY7_L2=CNY_ST OR CNY7_R1=CNY_ST OR CNY7_R2=CNY_ST THEN
GOSUB SAVUNMA
GOTO ANAPROGRAM
ELSE
GOSUB TARAMA
ENDIF

GOTO ANAPROGRAM
TARAMA:
IF ANA_SENSOR=1 THEN
TIMER=TIMER+1
IF TIMER<1200 THEN
LOW MOTOR_L_G
LOW MOTOR_R_I
HIGH MOTOR_L_I
HIGH MOTOR_R_G
RETURN
ENDIF


ENDIF
IF ANA_SENSOR=0 THEN

LOW MOTOR_L_G
LOW MOTOR_R_G
HIGH MOTOR_L_I
HIGH MOTOR_R_I
TIMER=0
HIGH TRIP
PAUSEUS 10
LOW TRIP
RETURN
ENDIF




'___________________________________CNY 70 ALT PROGRAMI (SAVUNMA)_______________
SAVUNMA:
IF CNY7_L1=CNY_ST AND CNY7_R1=CNY_ST THEN
PORTA=0
HIGH MOTOR_L_G
HIGH MOTOR_R_G
PAUSE 500
ENDIF

IF CNY7_L2=CNY_ST AND CNY7_R2=CNY_ST THEN
PORTA=0
HIGH MOTOR_L_I
HIGH MOTOR_R_I
PAUSE 500
ENDIF

IF CNY7_L1=CNY_ST AND CNY7_L2=CNY_ST THEN
PORTA=0
HIGH MOTOR_L_I
PAUSE 500
ENDIF

IF CNY7_R1=CNY_ST AND CNY7_R2=CNY_ST THEN
PORTA=0
HIGH MOTOR_R_I
PAUSE 500
ENDIF

IF CNY7_L1=CNY_ST THEN
PORTA=0
HIGH MOTOR_L_G
PAUSE 50
HIGH MOTOR_R_G
PAUSE 500
ENDIF
IF CNY7_L2=CNY_ST THEN
PORTA=0
HIGH MOTOR_L_I
PAUSE 50
HIGH MOTOR_R_I
PAUSE 500
ENDIF
IF CNY7_R1=CNY_ST THEN
PORTA=0
HIGH MOTOR_R_G
PAUSE 50
HIGH MOTOR_L_G
PAUSE 500
ENDIF
IF CNY7_R2=CNY_ST THEN
PORTA=0
HIGH MOTOR_R_I
PAUSE 50
HIGH MOTOR_L_I
PAUSE 500
ENDIF
RETURN
END
 
Problem pause komutunda değil, motorların(?) harekete geçmesi sırasında pic resetleniyor. besleme ile ilgili sorunlarınız var.
 
Problem pause komutunda değil, motorların(?) harekete geçmesi sırasında pic resetleniyor. besleme ile ilgili sorunlarınız var.



pause 5000 komutunu kaldırıp programı çalıştırdığmda gayet güzel bi şekilde çalışıyor.. ama komutu koyduğumda sanki 5sn de bir tekrar loop edip başa dönüyor.
 
pic basic de pause komutlarının kullanımı rahttır fakat kesmeleri kapatır.birde pic ile prgram yaparken kitlenme resetlenme sorunlarına karşı wdt kullanmak gerekir.
 
Bu sorunun sebebi muhtemelen pic ve motor sürücünün motor besleme gerilimini ortak kullandığınız için kaynaklanıyordur.PIC'in direk üzerine besleme bacaklarına ( 5 ile 14) 100nF'lık yada bir kondansatör lehimleyin. Programdada konfigrasyon ayarlarının olduğu kısma BOD_OFF kodunu ekleyin.BOD - Brown Out Detect anlamına geliyor ve PIC beslemesi 5 voltun altına düştüğü anda devreyi resetlemek için kullanılıyor.Eğerki bununla ilgili bir kod eklemesi yapmazsanız ON durumunda çalışıyor ve besleme 5 volt altına düştüğü anda PIC resetliyor.
 

Forum istatistikleri

Konular
129,173
Mesajlar
923,926
Kullanıcılar
451,525
Son üye
ituran20

Yeni konular

Geri
Üst