Proton'da Hardware Interrupt hatası

Başlatan mech, 19 Aralık 2008, 16:12:14

Maxim

örnekleri eklerseniz sevinirim
bende deneme yapayım (canlı)

inventor

#16
Hemen ekliyorum,
Bu arada karşılıklı görüşmek isterseniz msn : yuksel_dogrul@hotmail.com

Sorunu halledebilirsek tüm detayları ile burada yayınlarım.

http://www.dosya.tc/server/UGdiPV/deneme.rar.html

Program üzerinde çok oynamalar yaptım. Context save,on_interrupt  gibi ....

Bu nedenle hw kesmede on interrupt değil on_interrupt olmalı gibi eleştirileriniz olacaktır. Programın şu anki deneme yaptığım halini ekledim. Sadece kesme rutinlerini oynuyorum. Ana kısım değişmiyor. Ama eklediğim hali programın tam halidir.

Master kısmındaki ölç butonuna basılır
Slave bunu algılar ve motor bir yönde çalışmaya başlar
alt swici kapanınca motor diğer yönde çalışır ve alt swici tekrar açılır
üst swici kapanınca motor durur.
Motor çalışırken masterdan gönderilen komutlar kesmeye neden olmamalıdır.
İlk anda ust swici kapalı değilse motor bu swıc kapanana kadar çalışacaktır.


Bu arada şu deneme yazılımı ile sistem gerçekte de çalışmaktadır
Master
Device 16F876 

Xtal 4

Config CP_OFF, DEBUG_OFF, WRT_ENABLE_ON, CPD_OFF, LVP_OFF, BODEN_OFF, PWRTE_ON, WDT_OFF, XT_OSC

TRISA=0
TRISB=1
TRISC=%10001000
PORTA=0
PORTB=0
PORTC=0

Declare Serial_Baud = 9600
Declare Hserial_RCSTA = $90 
Declare Hserial_TXSTA = $24
Declare Hserial_SPBRG = 25
Declare Hserial_Clear   =   On

Symbol RCIF =PIR1.5    

INTCON=%11000000
PIE1.5=1
'On_Hardware_Interrupt GoTo KESME

Dim TEMPREG As Byte
Dim CHAR    As Byte

BASLA:
    
    If PORTC.3=0 Then  
      PORTC.5=1
      HRSOut "A"
    Else 
      HRSOut "B"
    EndIf
    
'    If CHAR="C" Then
'      High PORTB.7
'    EndIf
    
'    If CHAR="D" Then
'      Low PORTB.7
'    EndIf
    
GoTo BASLA

'KESME:
'Context Save
'RCIF=0
'  CHAR = HRSIn ,{10,ATLA} 
'ATLA:
'   TEMPREG=RCREG
'Context Restore
End

Bu da slave
Device 16F628 

Xtal 4

Config BODEN_ON, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT

TRISA=1
TRISB=%00000010
PORTA=0
PORTB=0

Declare Serial_Baud = 9600
Declare Hserial_RCSTA = $90 
Declare Hserial_TXSTA = $24
Declare Hserial_SPBRG = 25
Declare Hserial_Clear   =   On

Symbol RCIF =PIR1.5    

INTCON=%11000000
PIE1.5=1
On_Hardware_Interrupt GoTo KESME

Dim TEMPREG As Byte
Dim CHAR    As Byte
PORTB.4=0
BASLA:
'    If PORTA.0=0 Then 
'      HRSOut "C"
'        Else
'      HRSOut "D"
'    EndIf

    If CHAR=65 Then 
      High PORTB.3
      High PORTB.6
      Low PORTB.7
    EndIf
    If CHAR=66 Then 
      Low PORTB.3
    EndIf
GoTo BASLA

KESME:
Context Save
RCIF=0
  CHAR = HRSIn ,{10,ATLA} 
ATLA:
   TEMPREG=RCREG
Context Restore
End


Selam

inventor


Maxim