-         

Ergebnis 1 bis 5 von 5

Thema: Interrupt wird nicht aktiviert

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    44

    Interrupt wird nicht aktiviert

    Anzeige

    Ich hab ein Prgramm geschrieben, dass eigentlich, viel mehr als nur einen Interrupt auslösen soll. Jetzt hab ich es mal bis auf die Fehlerquelle beschränkt, und hab es noch mal mit Beispielprogrammen verglichen, und konnte keine Unterschiede mehr feststellen und trotzdem wird bei mir der externe Interrupt 0 nicht ausgelöst, weder im Simulator noch in echt.

    Code:
    .include "m16def.inc"
    
    .def temp = r16
    
    
    .org 0x000
    		rjmp RESET			;bei Reset
    .org 0x002
    		rjmp EXT_INT0		;INT0
    .org 0x004
    		reti				;INT1
    .org 0x006
    		reti				;INT2
    .org 0x008
    		reti				;Timer2 Vergleich korrekt
    .org 0x00A
    		reti				;Timer2 Overflow
    .org 0x00C
    		reti				;Timer1 Capture Event ???
    .org 0x00E
    		reti				;Timer1 Vergleich von A korrekt
    .org 0x010
    		reti				;Timer1 Vergleich von B korrekt
    .org 0x012
    		reti				;Timer1 Overflow
    .org 0x014
    		reti				;Timer0 Vergleich korrekt
    .org 0x016
    		reti				;Timer0 Overflow
    .org 0x018
    		reti				;Serialer Transfer fertig
    .org 0x01A
    		reti				;USART Datenempfang (RX) fertig
    .org 0x01C
    		reti				;USART Datenregister leer
    .org 0x01E
    		reti				;USART Datensendung (TX) fertig
    .org 0x020
    		reti				;ADC Vergleich fertig
    .org 0x022
    		reti				;EEPROM fertig
    .org 0x024
    		reti				;Analog Comperator
    .org 0x026
    		reti				;Two-wire Serial Interface
    .org 0x028
    		reti				;Store Program Memory fertig
    
    RESET:
    		;----- Stack
    
    		ldi temp, low(RAMEND)			;Stackpointer
    		out SPL, temp
    
    		ldi temp, high(RAMEND)
    		out SPH, temp
    
    		;----- Kontrolllampen an Port A
    
    		ldi temp, 0xFF
    		out DDRA, temp
    
    		;----- Interrupts
    
    		ldi temp, 0b01000000
    		out DDRD, temp
    		
    		ldi temp, 0b00000011			;Interrupt Reaktionsimpuls einstellen
    		out MCUCR, temp
    
    		ldi temp, 0b01000000			;Interrupts enablen
    		out GICR, temp
    
    		sei								;Interuppts aktivieren
    
    
    IDLE:
    		rjmp idle
    
    		;----- Interrupts
    
    EXT_INT0:
    		sbis PORTA, 0
    		sbi PORTA, 0
    
    		sbic PORTA, 0
    		cbi PORTA,0
    		reti
    Laut Simulator verweilt der Prozessor im idle und in der Realität schein er dass auch zu machen.

    Fusebits sind kontrolliert, an A liegen Leds und der interupt wird von einem nicht entprellten Schalter mit Pulldown Widerstand ausgelöst.

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Input-Pin Abfrage geht mit
    SBIS PINA, 0

    (Portx ist immer der Output)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    44
    Dass war der Fehler!!!

    Ich fass es nicht

    Blöd ist bloß, dass das bedeutet, das ich noch woanders Fehler haben muss ...
    Nur halt eben nicht in diesem Programmausschnitt.

    Aber verstanden hab ich immernoch nicht, warum dass einen Unterschied macht. Schließlich verändere ich doch auch im PORTX-Register den Wert, also müsste dort also was stehen, warum steht da nichts?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111

    Re: Interrupt wird nicht aktiviert

    Zitat Zitat von 'ne Frage
    Laut Simulator verweilt der Prozessor im idle und in der Realität schein er dass auch zu machen.
    Dein Problem ist zwar gelöst, aber was Du schreibst kann eigentlich nicht sein. Hast Du vielleicht auch noch F10 und F11 verwechselt? Dann hättest Du den Fehler vielleicht schneller gefunden.
    Gruß

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.02.2005
    Beiträge
    44
    gut dass du das geschreiben hast!

    Nach einigem probieren, hab ich festgestellt, das im Simulator die Register mit dem Bit0 anfangen und nicht wie überall mit Bit7. Fiese Stolperfalle ...

    Hat noch jemand was dazu zu schreiben warum ich das PORTX-Register nicht abfragen kann?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •