Hallo, habe mich an interrupts probiert und jetzt das problem dass die Befehle EIMSK und ISR (INT0_vect) nicht erkannt werden. Hier der Programmauschnitt: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdlib.h> #include "lcd.h" /* Der CPU-Takt wird definiert; Dieser entspricht der Frequenz des Quarz. */ #define F_CPU 3686400UL /* Start des Programmes. */ int main(void) { EIMSK = (1<<INT0); sei(); ISR (INT0_vect) // Interrupt Service Routine für externen Interrupt INT0 { Menue++; _delay_ms(100); // kurzes delay zum "Entprellen" } DDRD &= ~(1 << DDD2); // Int0-Pin ist Eingang PORTD |= (1 << PORTD2); // Pullup aktiv // Hier folgen die Konfigurationen zum externen Interrupt INT0 MCUCR |= (1 << ISC01); // INT0 trigger bei fallender Flake an PD2 GICR |= (1 << INT0); // INT0 aktivieren lcd_init(); // LCD wird initialisiert, angeschaltet und gelöscht. lcd_on(); lcd_clear(); lcd_write_s("Drahtmessung"); DDRC= 0x00; //Alles Eingänge PORTC= 0xFF; DDRB=0b11111110; //Alles Ausgänge PORTB=0b11111110;
Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen. Wo gehört es denn hin?
Anfänger1 schrieb: > Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen. > Wo gehört es denn hin? Wenn das von deinem Lehrer kommt, dann solltest du ihn besser mal hier vorbeischicken.
Ja aber was muss ich denn da jetzt machen. Die Befehle EIMSK und ISR (INT0_vect) werden nicht als befehle erkannt sonder beim übersetzen als fehlende variablen erkannt
> Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen.
Unwahrscheinlich.
Anfänger1 schrieb: > Ja aber was muss ich denn da jetzt machen. Die ISR z.B. vor main setzen - außerhalb! Zu EIMSK kann ich nichts sagen. Kann sein, dass es das nicht bei jedem AVR unter dem Namen gibt. Welchen μC verwendest du?
HildeK schrieb: > Zu EIMSK kann ich nichts sagen. Kann sein, dass es das nicht bei jedem > AVR unter dem Namen gibt. Das ist definitiv so. > Welchen μC verwendest du? Quäl' ihn doch nicht mit solchen Details. Zusammengeklauter und unverstandener Code muss einfach auf jedem µC funktionieren. C ist doch PORTABEL!
Anfänger1 schrieb: > dass die Befehle > EIMSK und ISR (INT0_vect) nicht erkannt werden. Das ist schon in Ordnung so, da weder EIMSK noch ISR (INT0_vect) Befehle sind. Allerdings frage ich mich schon, warum sich jemand > an interrupts probiert der nicht im Ansatz verstanden hat, um was es bei Interrupts geht. aswqaswqa
Anfänger1 schrieb: > Atmega 8 Dann nimm dir mal das Datenblatt vom Mega8 zur Brust und studiere das Kapitel über den INT0. Ich konnte jedenfalls kein EIMSK in dem finden, also gibt es das auch nicht.
HildeK schrieb: > Dann nimm dir mal das Datenblatt vom Mega8 zur Brust und studiere das > Kapitel über den INT0. Ich glaube eher, dass der Einstieg hier besser klappt. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts aswqaswqa
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.