Ignore:
Timestamp:
02/24/08 11:26:09 (17 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/aposs/Magic.m

    r8872 r8875  
    216216/* OLD ORIGINAL VALUES: Prop=100, Div=300, Int=1000 */
    217217if (get cannr==1) then
    218 SET KPROP  950
    219 SET KDER  2000
    220 SET KINT     0
     218SET KPROP  100 /*950*/
     219SET KDER   300 /*2000*/
     220SET KINT  1000 /*0*/
    221221elseif (get cannr==2) then
    222222SET KPROP  100
     
    329329kIoModule = 4*256                   
    330330
    331 ON INT -(kIoModule+6) GOSUB DOOR_STATUS_CHANGED
    332 ON INT  (kIoModule+6) GOSUB DOOR_STATUS_CHANGED
    333 
    334331/*-------------------------------------------------------------------------*/
    335332/* Init                                                                    */
     
    350347   
    351348   init  = 0
     349
     350   oldstate = kTRUE
    352351
    353352   gosub reset
     
    361360      else
    362361         fuse  = in (kIoModule+1)
    363          emcy  = in (kIoModule+2)
     362         emcy  = in (kIoModule+2)                             
    364363         vltg  = in (kIoModule+3)
    365364         mode  = in (kIoModule+4)
    366365         door  = in (kIoModule+6)
    367366         ready = in 1
    368 
     367                                     
    369368         if (door==0) then
    370369            preop = kTRUE
    371          endif
    372 
    373          if (preop==kTRUE) then
    374             print "Door open!"
    375             gosub reset
    376          elseif (ready==0) and (RF==1) then
     370         endif                         
     371
     372         if (ready==0) and (RF==1) then
    377373            print "DKC not ready, but RF set... setting RF=AH=0!"
    378374            gosub reset
     
    438434         endif         
    439435      endif
    440 
     436       
     437      if (preop==kTRUE and oldstate!=preop) then
     438          print "Door switch changed state!"
     439          gosub reset
     440      endif
     441      oldstate = preop
     442       
    441443      rc = CANIN sdorx -1 0 canhi canlo
    442444   goto mainloop
     
    455457   SUBPROG reset
    456458      init = 0
    457      
     459               
    458460      out 1 0
    459461      out 2 0   
     
    461463      motor off   
    462464      waitt 1000
    463    
     465
    464466      if (brake==1 and get cannr==3) then         
    465467         waitt 3000          /* wait 3s for DKC to stop the motor */
     
    467469         waitt 1000
    468470      endif   
    469      
     471
    470472      canout pdo3 (ready | (fuse<<1) | (emcy<<2) | (vltg<<3) | (mode<<4)) (rf | (brake<<1))
    471473   return
     
    482484      PRINT "Setting Idx:", idx, "/", subidx, " to ", sdoval
    483485*/
    484       if (idx==0x1000 and subidx==1) then
    485          if (sdoval==1) then
    486             if (door==0) then
    487                canlo = 1
    488             else
    489                preop = kFALSE
    490             endif
    491          elseif
    492             preop = kTRUE
     486      if (idx==0x1000 and subidx==1) then   
     487         preop = kTRUE
     488         if (sdoval==1 and door==1) then
     489             preop = kFALSE
     490         else
     491             canlo = 1
    493492         endif
    494493      elseif (idx==0x1003 and subidx==0 and sdoval==0) then
     
    537536      elseif (idx == 0x2003) then
    538537        if (subidx) then
    539           DEC sdoval
     538          /* If velocity mode active */
     539          /*if (AXEND&4)
     540             DEC sdoval%4
     541          else*/
     542             DEC sdoval
     543          /*endif*/
    540544        else
    541           ACC sdoval
     545          /*if (AXEND&4)
     546             ACC sdoval%4
     547          else*/
     548             ACC sdoval
     549          /*endif*/
    542550        endif
    543551      elseif (idx == 0x3000) then
     
    584592         elseif (subidx == 1) then
    585593            /* It is unclear where this arbitraty factor comes from */
    586             CVEL sdoval/4
     594            CVEL sdoval%4
    587595         endif
    588596      elseif (idx == 0x3007) then
     
    810818/*-------------------------------------------------------------------------*/
    811819   SUBPROG PROC_PDO1
    812       CANOUT pdo1 (AXEND|(preop<<9)) APOS
     820      CANOUT pdo1 (AXEND|(((~preop)&1)<<8)) APOS
    813821   RETURN
    814822
Note: See TracChangeset for help on using the changeset viewer.