Serin komutu kullanımı sırasındaki gecikme.

Başlatan dyonizos, 28 Ekim 2011, 14:50:07

dyonizos

#30
valla hocam ya kendimi o kadar kötü hissediyorum ki sormayın :)
kendimle beraber sizide delirttim eminim. İşte birseye şartlanınca böyle oluyor. İlginç olan aynı port çıkış olarak tanımlı olsada SERIN ile data alabiliyordu. Bu nedenle portun giriş yadaçıkış olup olmadığını atlamışım. NAsılsa SERIN data alıyor demekki giriş diye düşünmüştüm.
tekrardan özürdileyerek yeni soruya geçebilirmiyim  :-\


kodlar aşağıdaki şekilde çalışıyor. Ancak Serin ve Hserin ikisinde de gecikme oluyor. Hserinde daha az ama ondada gecikme var potansiyometre gecikmeli okuduğu içinde motorun pozisyonunu 20 defa ileri geri yaparak tutturabiliyor :)

kesme kullanıp deniycem simdi ama bu defada kesmeye girdiğinde aynı şekilde gecikme olmıycakmı?



Device 18F252
Declare XTAL 20
CONFIG_START
OSC = HS
PWRT   = On    ; Power Up Timer Enabled
WDT    = OFF    ; Watchdog Timer Disabled
WRTD   = OFF ; Data EEPROM Write Protection Disabled
LVP = On
CONFIG_END


Declare LCD_DTPIN = PORTB.0 ;LCD Data Pin
Declare LCD_RSPIN = PORTA.4 ;LCD RS Pin
Declare LCD_ENPIN = PORTA.5 ;LCD EN Pin
Declare LCD_LINES = 2       ;LCD Satır Sayısı
Declare ADIN_RES 10
Declare ADIN_TAD 8_FOSC
Declare ADIN_STIME 50


Declare HSERIAL_BAUD=9600
Declare HSERIAL_RCSTA=%10010000
Declare HSERIAL_TXSTA=%00100100
Declare HSERIAL_SPBRG=129
Declare HSERIAL_BRGH=1
Declare HSERIAL_CLEAR=On

TRISA=%00000011
TRISB=%00000000
TRISC=%10000000
ADCON1 = %10000010
INTCON=%00100000
PORTB=0
CCP1CON = %00001100
CCP2CON = %00001100

Symbol CIKIS = PORTB
 
Declare CCP1_PIN = PORTC.2
Declare CCP2_PIN = PORTC.1



Dim elpot As Word
Dim azpot As Word
Dim OLDelpot As Word
Dim OLDazpot As Word
Dim elpott As Word
Dim azpott As Word
Dim Azimuth As Word
Dim Elevator As Word

Dim x As Byte

Cls
Print At 1,1,"  merhaba  "
DelayMS 2000
Cls



MAIN:
elpott=0
azpott=0
GoSub adc_oku


HSerIn  [Wait("AZ"), Dec Azimuth]
HSerIn [Wait("EL"), Dec Elevator]
'SerIn portc.7, 84,20, MAIN,[Wait("AZ"), Dec Azimuth]
'SerIn DATAPIN, 84,1, MAIN,[Wait("EL"), Dec Elevator]

GoSub hareket



Print At 1,1, "Az: ",Dec Azimuth,"   "
Print At 2,1, "El: ",Dec Elevator,"   "
Print At 1,9, "A: ",Dec azpot,"   "
Print At 2,9, "E: ",Dec elpot,"   "


GoTo MAIN


adc_oku:

For x=1 To 30
ADcIn 0,elpot
elpott=elpott+elpot
ADcIn 1,azpot
azpott=azpott+azpot
Next

elpot=elpott/30
azpot=azpott/30
                       
Return

hareket:
If azpot>Azimuth Then
CIKIS=%01000000
Else
CIKIS=%10000000
EndIf

If azpot=Azimuth Then  CIKIS=%00000000:HPWM 1,0,1250

HPWM 1,100,1250
Return






Andromeda

Şöyle yapalım.....
serin ile datayı al...gecikmeyi minumumda tut...
sonra al bu datayı , pot u datanın söylediği pozisyona getir. ve programı sonlandır....
herşey dursun...sonrası allah kerim...
sistemin amacı nedir?
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

dyonizos

bu yolu denıyorum sımdı.
Program Orbitron adındaki bir uydu takip programından uyduların acılarını serı porttan gonderıyor. bende pot ile pozisyon kontrollü 2 adet dc motor ile anteni bu açılara çevirmeye çalışıyorum.
Aslında step motorla çok kolay oluyordu yapmıstımda ancak. step motorda sürekli son poziyonu eeproma yazmam gerektiği için eeprom hafıza sıkıntısı oluyor. Ayrıca dc motor reduksıyonlu ucuz bır cozum.