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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren