External Interrupt Request mit ATtiny26

Gast #4305132
Hallo zusammen,

Ich versuche erfolglos ein external interrupt request mit ATtiny26 zu 
programmieren, deswegen wende ich mich euch, damit ihr mir weiterhelfen 
könnten.

Das Programm soll einfach drei LEDs anschalten sobald eine Taste am Pin 
PB6 gedrückt wird. ( code siehe unten

Nachdem ich das Programm kompilieren kommt die Wahrnung: Warning  1 
'EXT_INT0' appears to be a misspelled signal handler

Könnte jemanden mir da helfen bitte!!
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4

5

6
ISR(EXT_INT0)
7
{    
8
  PORTA = 0b00111000;   // LED on
9
  
10
}
11

12
#include <avr/io.h>
13

14
int main(void)
15
{   DDRA = 0b00111000;
16
  DDRB &= ~(1<<PB6);
17
  
18
  GIMSK |= (1<<INT0);  //external interrupt request enable
19
  MCUSR |= ((1<<ISC01)|(1<<ISC00)); // trigger an interrupt by rising edge on pin INT0
20
  sei();            // Timer/counter global interrupt enable
21
  
22
    while(1)
23
    {  
24
        
25
    }
26
}

Sixafeud
Gast #4305147
Danke Thomas für die schnell Antwort,

ISR(INT0_vect) habe ich ausprobiert funktioniert nicht richtig. Die LEDs 
sind sofort angeschaltet ohne, dass ich die Taste gedrückt habe. Das 
möchte ich aber nicht.
Danke im vorraus für weitere Vorschläge

sixafeud
#4305241
Hallo,

ist die Fehlermeldung weg? Ja, also ist dieser Fehler behoben.
Deine LEDs gehen an, also scheint das Programm erstmal zu laufen.

Dein Taster ist wie angeschlossen?
Ich sehe kein Einschalten des PullUp für PB6 in Deinem Code.
Hast Du einen externen dran?
Wenn nicht, ist der offene Taster ein offener PIN PB6 wenn der Taster 
nicht gedrückt ist.
Dann kann jedes Störfeld in der Nähe eine steigende Flanke erugen und 
den Interrupt auslösen...

Gruß aus Berlin
Michael
#4305361
S. Landolt schrieb:
> Zwischenzeitlich dachte ich, die LEDs seien an GND angeschlossen.

Das sind sie auch. Zumindest sollten sie das, damit sie mit den 3 Einsen 
eingeschaltet werden.

Was mir allerdings gerade noch auffällt:

sixafeud schrieb:
> MCUSR |= ((1<<ISC01)|(1<<ISC00)); // trigger an interrupt by rising
> edge on pin INT0

Das setzt voraus, dass der Taster an Vcc liegt oder beim Loslassen 
schaltet, wenn er, wie es sich gehört, an GND liegt. Und natürlich 
entsprechend über einen Pulldown bzw. Pullup verfügen muss.

Na, warten wir mal ab. Vielleicht kommt ja noch was vom TO.

mfg.
Gast #4305460
Ersmal danke schön für die Vorschläge,

Michael U. schrieb:
>>Dein Taster ist wie angeschlossen?
>>Ich sehe kein Einschalten des PullUp für PB6 in Deinem Code.
>>Hast Du einen externen dran?

Der Pulldown Widerstand hatte nicht gebaut .Jetzt habe ich ihn in der 
Sofware implementiert (ein Bild des Tasters habe ich angehängt). Leider 
gehen die LEDs immer sofort an. Wenn ich sie aber mit dem Befehl 
PINB&(1<<PB6) steuere dann funktionniert das (dies ist aber nicht das 
Ziel).

Wo könnte das Problem wirklich liegen. Schon habe ich den ganzen Tag 
dabei verbracht.

Bitte Hilfe!!

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4

5

6
ISR( INT0_vect)
7
{    
8
  PORTA = 0b00111000;   // LED on
9
  
10
}
11

12

13

14
int main(void)
15
{   DDRA = 0b00111000;
16
  DDRB &= ~(1<<PB6);
17
  PORTB &= ~(1<<PB6);
18
  
19
  GIMSK |= (1<<INT0);  //external interrupt request enable
20
  MCUSR |= ((1<<ISC01)|(1<<ISC00)); // trigger an interrupt by rising edge on pin INT0
21
  sei();            // Timer/counter global interrupt enable
22
  
23
    while(1)
24
    {  
25
        
26
    }
27
}
Angehängte Dateien:
Gast #4307177
Hi alle zusammen,

Erstmal vielen dank für alle Vorschläge, es hat funktionniert und das 
Problem lag genau da.

 Thomas Eckmann schrieb:
>> Da: MCUSR |= ((1<<ISC01)|(1<<ISC00));

>> Das Register heisst MCUCR.


 nochmal danke   Thomas Eckmann

MFG
Sixafeud

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.