FREKANS GECIKME

Başlatan yusufrov, 01 Aralık 2015, 00:10:36

yusufrov

MERHABA ARKADAŞLAR,
FREKANS OKUYARAK İŞLEM YAPMAK İSTİYORUM FREKANS OKUYORUM İSİS TE İŞLEMİ DE YAPIYORUM FAKAT İŞLEM COK YAVAŞ GERÇEKLEŞİYOR BİR YERDE PROBLEM VAR YANLIŞ YAPIYORUM AMA ÇÖZMEDİM. YARDIM VE BİLGİ VERMENİZİ RİCA EDERİM.

PROGRAMIN HEMEN BAŞA DONUP TEKRAR FREKANSI KONTROL EDİP AŞAGI İNMESİNİ İSTİYORUM FAKAT BENİM PROGRAMDA NEREDEYSE 2 SANİYEYE YAKIN BEKLİYOR.

COUNT DALGA,1000,OKUNAN BU SATIRI DEGİŞTİRSEM DE GENEDE UZUN SURUYOR. YADA ISIS MI YANILTIYOR ACEBA.



@ __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF & _BODEN_OFF

DEFINE LCD_RSREG    PORTB
DEFINE LCD_RSBIT    4     
DEFINE LCD_EREG     PORTB
DEFINE LCD_EBIT     5     
DEFINE LCD_DREG     PORTB
DEFINE LCD_DBIT     0     
DEFINE LCD_BITS     4     
DEFINE LCD_LINES    2

ADCON1=7

TRISA=%11111111
TRISB=%00000000
TRISC=%00000000
TRISD=%11111111

PORTA=0
PORTB=0
PORTC=1
PORTD=0

DEFINE OSC 20

FREKANS VAR WORD
OKUNAN VAR WORD
SYMBOL TRANSISTOR=PORTC.0
SYMBOL DALGA=PORTD.6
SYMBOL LED=PORTD.7
SYMBOL BUTON=PORTC.5
TRANSISTOR=1

LCDOUT $FE,1,"PRO_PRO"
LCDOUT $FE,$C0,"BASLATILIYOR"

BASLA:
PAUSE 2
TRANSISTOR=1
LED=1
COUNT DALGA,1000,OKUNAN
PAUSE 5
LCDOUT $FE,1,"OKUNAN FREKANS"
LCDOUT $FE,$C0,#OKUNAN,"Hz"


KESME1:
IF OKUNAN=200 THEN KESME1D
GOTO BASLA

KESME1D:
TRANSISTOR=0
LED=0
IF PORTD.0=1 THEN BASLA
PAUSE 100
IF PORTD.1=1 THEN BASLA
PAUSE 100
IF PORTD.2=1 THEN BASLA
PAUSE 200
IF PORTD.3=1 THEN BASLA
PAUSE 300
IF PORTD.4=1 THEN BASLA

GOTO BASLA

END

ete

Program COUNT komutunda 1000 ms(1 sn) bekliyor. Okunan=200 ise yaklaşık 700 ms pauseleri uyguluyor ve komut gecikmeleri ile birlikte toplam geri dönüş süresi neredeyse 2 sn oluyor zaten.
Okunan şayet 200 değil ise program yaklaşık 1,2 sn de geri dönüyor.
Bir yanlışlık yok. Yanlışlık şurada. Madem zaman bu kadar önemli neden keyfi pause ler kullanıyorsun.
Basla sayırından sonra pause var bir yararı olmadığı gibi amlamıda yok.
Sonrasında yeniden bir pause neden? Onunda bir anlamıyok.

Ete

yusufrov

Degerli Hocam,
İlginiz için teşekkürler pauseler aslında daha fazlaydı başta o pauseleri birazda oynarken oynarken koyduk fakat o pauseleri silsem bile sistem geri dönüşü genede geç oluyor işlemi nasıl hızlandırabilirim 1 sn. nin altına çekmem gerekiyor.

ete

Bütün pauseleri kaldır. Count komutunu 500 ms ile çalıştır. Sayılan değeri 2 ile çarp. Olsun bitsin
Ete

yusufrov

Hocam carpma işlemini denedim daha önce fakat hata verdi.
aşagıdaki yazımlarda hata nedir.

BASLA:
TRANSISTOR=1
LED=1
COUNT DALGA,500,OKUNAN
OKUNAN,500*2
LCDOUT $FE,1,"OKUNAN FREKANS"
LCDOUT $FE,$C0,#OKUNAN,"Hz"

YADA

BASLA:
TRANSISTOR=1
LED=1
COUNT DALGA,100,OKUNAN
OKUNAN=100*10
LCDOUT $FE,1,"OKUNAN FREKANS"
LCDOUT $FE,$C0,#OKUNAN,"Hz"

Bu yazılımlarda hata aldımyazım hatasından dolayı mı aceba.

söylediğiniz gibi butun pauseleri kaldıracagım.

pause koymanın sistemin daha duzgun kararlı çalışacagı konusunda bir duyum almıştım o sebeple arada bir koyuyordum sanırım yanlış bir davranış mış.

ete

#5
İlk kod da okunan,500*2 şeklinde bir çarpma yanlıştır. Çarpma alttakinde doğru.

Ete

yusufrov

Akşam deneyecegim hocam teşekkür ederim.

CNC Cad Cam konusunda yardımcı olabilecegim bir konu olursa herzaman yardımcı olmaktan grur duyarım.

ete

ihtiyaç olursa aklımdasın. Gerçi hep bir ufak (25x25cm ) lik bir CNC 'im olsun istiyorum ama bir türlü el atamadım bu konuya.
Ne yapacaksın derseniz kutu deliklerini LCD yerlerini açmada ve PCB kazıtmakta kullanmayı planlıyorum.

Ete

yusufrov

ben yapacagım kucuk bi cnc grafit işlemek için sizin içinde vidalı mil ve kontrol unutesini sorup ortalama bi maliyet cıkartabilirim hocam.
İmalat esnasında oluşacak işleme işlerini de ben yaparım.

ete

Al bakalım.  Ona göre karar  vereyim.

Ete

Powered by EzPortal