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ß