Atmega168 external interrupt int0/int1

Gast #2757723
Hey liebe Leute,

Ich lerne zur Zeit die AVR-Programmierung und als übung wollte ich mal 
mit Intterupts arbeiten. Ich habe wie im Datenblatt beschrieben alle 
notwendingen Resgister gesetzt um den Interrupt zu aktivieren. Trotzdem 
kann ich ihn nicht zum auslösen bringen.
Ich hoffe ihr könnt mir weiterhelfen.

 .def temp = r16
 .org 0x000
 jmp main
 .org 0x002
 jmp INT0_Handler


 main:
 ;Stackpointer initialisieren
 ldi temp, HIGH(RAMEND)
 out SPH, temp
 ldi temp, LOW(RAMEND)
 out SPL, temp
 ;INT0 interrupt aktivieren
 ldi temp, (1 << ISC01)
 sts EICRA, temp
 ldi temp, (1 << INT0)
 out EIMSK, temp
 sei
 ;Portein-, Portausgänge initialisieren
 ldi temp, 0x00
 out DDRD, temp
 ldi temp, 0xff
 out PORTD, temp;interne pullups aktivieren
 out DDRB, temp
 out PORTB, temp

 loop:
 in temp, 0xFF
 out PORTB, temp
 rjmp loop

 INT0_Handler:
 in temp, 0x00
 out PORTB, temp
 reti
Gast #2757728
Sorry, habe einen kleinen Fehler gerade entdeckt: statt "in" soll dort 
"ldi" stehen(unter loop: und INT0_Handler)

Das Problem, dass ich die Interrupts nicht auslösen kann besteht immer 
noch
Gast #2757730
Woran erkennst du, dass der Interrupt nicht auslöst? Mmn nach wird er 
ausgelöst, PORTB aber nur zu kurz auf 0x00 gesetzt. Nach dem Interuppt 
läuft ja die main (loop) weiter.
Gast #2757740
> INT0_Handler:
> ldi temp, 0xFF
> out PORTB, temp
> reti

Ach Mist, so setzt du Portb ja schon vor der Loop.

Also so:

 INT0_Handler:
 ldi temp, 0x00
 out PORTB, temp
 reti

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.