INT0 - Interrupt

Gast #2257703
Lesenswert?
• ▲
▼
Hallo,

ich hoffe ihr könnt mir helfen. Es geht um das Interrupt INT0. Ich habe 
die Einstellung "Any logic change on INT0 generates an interrupt 
request" gewählt. Das  heißt doch, dass wenn ich den Taster drücke ein 
Interrupt ausgelöst wird und genauso wenn ich ihn wieder loslasse, 
oder??


Mit freundlichen Grüßen

Alex
Gast #2257742
Lesenswert?
• ▲
▼
mh dann verstehe ich das verhalten nicht. Also weshalb ich frage...ich 
habe INT0 aktiviert und "any logic...." eingestellt. Jedoch wird das 
interrupt nur ausgeführt, wenn ich die Taste loslasse....Außerdem wird 
das Interrupt auch ausgeführt, wenn ich Taster2(INT1) sowie 
Taster3(INT2) drücke(diesmal in umgekehrter logik), obwohl diese 
überhaupt nicht als Interrupt enabled sind.
Gast #2257780
Lesenswert?
• ▲
▼
Also es handelt sich um das Pollin-board.

Obwohl ich die jumper für die 3 taster herausgenommen habe, reagiert der 
controller troztdem auf die taster...deswegen gehe ich jetzt von einem 
lötfehler aus....also suche ich erstmal nach dem hardware-fehler.
Gast #2257789
Lesenswert?
• ▲
▼
hier trotzdem der code
1
/*LEDS****************************************/
2
#define led1_init() portd_pin6_output()
3
#define led2_init()  portd_pin7_output()
4

5
#define led1_on()  PORTD |= 0x20
6
#define led2_on()  PORTD |= 0x40
7

8
#define led1_off()  PORTD &= ~0x20
9
#define led2_off()  PORTD &= ~0x40
10

11

12
/*BUTTONS*************************************/
13
#define BUTTON1 PIND & (1 << PIND2)
14
#define BUTTON2 PIND & (1 << PIND3)
15

16
#define button1_enable()   DDRD &= ~(0x04); 
17
#define button2_enable()  DDRD &= ~(0x08)
18

19

20
#define button1_int_enable()   MCUCR |= ((1<<ISC00)); GICR |= (1<<INT0) //Taster 1
21
#define button2_int_enable()   MCUCR |= (1<<ISC10); GICR |= (1<<INT1) //Taster 2
22
#define button1_int_disable()   GICR &= ~(1<< INT0)
23
#define button2_int_disable()   GICR &= ~(1<< INT1)
24

25

26

27

28
void hw_init()
29
{
30
button1_enable();
31
button2_enable();
32
button1_int_enable();
33
//button2_int_enable();
34

35
pwm_init();
36

37
timer1_init();
38
timer1_int_enable();
39

40
led1_init();
41
led2_init();
42

43

44
global_int_enable();
45

46
}
47

48
/*Tür auf/Auto aufgeschlossen*******************************************************/
49
ISR(INT0_vect) //Taste1
50
{  
51
  //button1_int_disable(); //entprellen
52
  /*
53
  if(frb_status==INACTIVE)
54
  {
55
    pwm_start();
56
    timer1_start();    
57
    frb_status= ACTIVE;
58
  }
59
  
60
  if(BUTTON1 && (frb_status ==ACTIVE))
61
  {
62
    frb_cmd = UP;
63
  }
64
  else if(!BUTTON1 && (frb_status == ACTIVE))
65
   {
66
    frb_cmd = DOWN;
67
    }
68
  */
69
  
70
  if((PORTD & 0x20) == 0x20)
71
  {
72
  led1_off();
73
  }
74
  else
75
  {
76
  led1_on();
77
  }
78
  pwm_start();
79
  timer1_start();
80

81

82
  //button1_int_enable();
83
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.