Forum: Mikrocontroller und Digitale Elektronik INT0 Problem PIC18F458


von Heiko H. (daheik)


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

von Heiko H. (daheik)


Lesenswert?

Hat keiner eine Idee?

von Castlerock (Gast)


Lesenswert?

floating pin?

sehe auch diesen thread - Beitrag "Interrupt-Frage bei PIC"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.