INT0 Problem PIC18F458

OP #447617
Lesenswert?
• ▲
▼
Hallo Leute,

was würd ich nur ohne euch machen ;-)

Habe folgendes Problem:
Wird ein Interrupt an INT0 ausgelöst, wird er korrekt bearbeitet.
Soll er jedoch danach innerhalb weniger Sekunden erneut ausgelöst werden 
funktioniert es nicht.
Erst nach ca 10 Sekunden kann er erneut ausgelöst werden.

Der Interrupt Pin1 befindet sich an Bit0 von PORTB
Der Interrupt Pin2 befindet sich an Bit1 von PORTB

1. Frage:
Bei gewolltem Interrupt Int0 muss doch das dazugehörige TRIS Bit auf 1 
gesetzt werden (für Input oder??) -> Es funktioniert aber auch mit 0 ???

2. Frage:
Wenn ich während dem Interrupt das Register TRISB mit clrf auf 0 setze 
funktionieren x Interrupts hintereinander.
Mit movlw 0x00  movf TRISB funktioniert es NICHT ????????

Warum funktioniert es wenn ich das TRISB auf Output setze????


Quellcode:

  org 0x00
  goto Main

  org 0x18
  goto ISR_High

ISR_High:
  btfsc  INTCON3,0
  goto  ISR_High_Int0
  btfsc  INTCON,1
  goto  ISR_High_Int1

ISR_High_Int0:
  bcf   INTCON3,0
  clrf  TRISB    ; ????
  bcf   LED3O
  bsf   LED2O
  retfie 1

ISR_High_Int1:
  bcf   INTCON,1
  clrf  TRISB    ; ????
  bcf   LED2O
  bsf  LED3O
  retfie 1

Main:
  bsf    INTCON,7    ; GIEH
  bsf    RCON,7      ; IPEN
  bsf    INTCON3,3    ; INT1IE
  bsf    INTCON2,5    ; INTEDG1
  bsf    INTCON3,6    ; INT1IP
  bsf    INTCON,4
  bsf    INTCON2,6
.......


Hoffe ihr könnt mir mal wieder helfen!

Gruß DaHeik

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren