Hallo :) Ich bin neu in der Mikrocontroller Programmierung und habe eben meinen ersten Interrupt programmiert. Hab jedoch keine Möglichkeit es zu testen, könnte mir jemand sagen ob es funktionieren würde und wenn nein wo liegen die Fehler? Danke im Voraus!:)
1 | #define F_CPU 3686400 // Taktfrequenz des myAVR-Boards
|
2 | #include <avr\io.h> // AVR Register und Konstantendefinitionen |
3 | #include <avr/interrupt.h> // enthält alle Routinen für die Interruptverarbeitung |
4 | |
5 | //----------------------------------------------------------------------
|
6 | int main (void) // Hauptprogramm, startet bei Power ON und Reset |
7 | {
|
8 | DDRD |= (1<<PD7) |
9 | PORTD|= (1<<PD2) | (1<<PD3) |
10 | |
11 | MCUCR |= (1<<ISC10) | (1<<ISC11); //Interrupt 1 wird konfigriert -> steigende Flanke |
12 | löst den Interrupt aus (Loaslassen das Tasters) |
13 | |
14 | //Interrupt 0 wird nicht konfiguriert,d.h
|
15 | //ISC01 u. ISC00 wird eine 0 zugewiesen
|
16 | -> Low-Level (Betätigen des Tasters) |
17 | |
18 | GICR |=(1<<INT0) | (1<<INT1); //INT0 und INT1 aktiviren |
19 | |
20 | sei(); //Interrupts global aktivieren |
21 | |
22 | while(1) |
23 | {
|
24 | |
25 | }
|
26 | |
27 | ISR(INT0_vect) //ISR (Interrupt-Service-Routine) für den externen |
28 | //Interrupt 0
|
29 | |
30 | {
|
31 | PORTD |= (1<<PD7); //setze PortD 7 (Lampe an) |
32 | }
|
33 | |
34 | ISR(INT1_vect) //ISR (Interrupt-Service-Routine) für den externen |
35 | //Interrupt 1
|
36 | |
37 | {
|
38 | PORTD &= ~(1<<PD7); //lösche PortD 7 (Lampe aus) |
39 | }
|
40 | |
41 | |
42 | //----------------------------------------------------------------------
|