Interupt löst nicht aus, was mach ich falsch?

Gast #1395535
Lesenswert?

Hi

Ich benutze einen ATmega48.
Hier mein "Test Code".
1
#define  F_CPU 8000000
2
#include <stdio.h>
3
#include <avr\io.h>
4
#include <avr\interrupt.h>
5
#include <util\delay.h>
6

7
#define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT)))
8
#define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT)))
9

10
//--------------------------------------------------------------------
11
// INT0_vect - INT0 Interrupt an Eingang PORTD2 bei fallender Flanke
12
//--------------------------------------------------------------------
13
SIGNAL(SIG_INTERRUPT0)
14
{
15
  PORTC = 0b00000001;
16
}
17
//--------------------------------------------------------------------
18
// INT1_vect - INT1 Interrupt an Eingang PORTD3 bei fallender Flanke
19
//--------------------------------------------------------------------
20
ISR(INT1_vect)
21
{
22
  PORTC = 0b00000001;
23
}
24
//--------------------------------------------------------------------
25
// TIMER0_OVF_vect - Timer0 Interrupt bei Überlauf
26
// aktuelle Einstellung:  14.063 Hz  71.111 ms
27
//--------------------------------------------------------------------
28
ISR(TIMER0_OVF_vect)
29
{
30
  TCNT0 = 248;
31
}
32
//------------------------------------------------------------------------
33
// Initialisierungen
34
//------------------------------------------------------------------------
35
void init()
36
{
37
  // Ports initialisieren
38
  cbi(DDRD,2);   // PORTD2 auf Eingang mit PullUp
39
  sbi(PORTD,2);
40
  EIMSK|=0b01000000;   // INT0 Interrupt an Eingang PORTD2 bei fallender Flanke
41
  MCUCR|=0b00000010;
42
  cbi(DDRD,3);   // PORTD3 auf Eingang mit PullUp
43
  sbi(PORTD,3);
44
  EIMSK|=0b10000000;   // INT1 Interrupt an Eingang PORTD3 bei fallender Flanke
45
  MCUCR|=0b00010000;
46
  //--- Timer 0 initialisieren ---
47
  TCCR0B =0x05;   // Teiler 1/1024
48
  sbi(TIMSK0,0);   // Interrupt bei Überlauf
49
  TCNT0 = 248;
50
  //--- Interrupts erlauben ---
51
  sei();
52
}
53

54
/////////////////////////////////////////////////////////////////////////////
55
// Main-Funktion
56
/////////////////////////////////////////////////////////////////////////////
57
main()
58
{
59
  DDRC=0xff;
60
  PORTC=0;
61

62

63
  while (true)    // Mainloop-Begin
64
  {
65
    
66
    //...
67
  }
68
  // Mainloop-Ende
69
}

Nur warum lösen die Interupts nicht aus?

gruß

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