Hallo zusammen, leider muss ich nun eine Frage stellen, bei der viele von Euch wohl die Augen verdrehen werden. Ich bin noch unerfahren im µC-Programmieren und komme mit den Interrupts nicht weiter. Eigentlich möchte ich, dass meine LEDs auf einen Schalter reagieren. Dazu habe ich (mit Hilfe des Tutorials) folgenden Code geschrieben. Ich habe hier nur den interruptrelevanten Teil eingefügt, da ich verschiedene c-, bzw. h-Files habe. Die LEDs leuchten, wenn ich sie über das Programm ein-, bzw. ausschalte, sie reagieren aber nicht auf den Schalter. #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> #include "Functions.h" #include "Variables.h" #include <inttypes.h> int main (void) { DDRD &= ~(1<<PD2); //PD2 als Eingang festlegen PORTD |= (1<<PD2); // Pullups aktivieren while(1) { if (DDRD & (1 << PD2)) ein(); else if (!(DDRD & (1 << PD2))) aus(); } return(0); } void aus(void) { uiPWM1Match = 0; InitTimer0(); InitTimer1(); } void ein(void) { uiPWM1Match = 50; InitTimer0(); InitTimer1(); } Ich habe auch schon überlegt, ob es nicht auch mit folgender while-Schleife funktionieren müsste: while(1) { if (PD2 == 0) ein(); else aus(); } Irgendwas habe ich wohl komplett falsch verstanden, denn die Schaltererkennung funktioniert leider gar nicht. Ich möchte natürlich nicht, dass Ihr meine Arbeit macht aber für ein paar Tipps wäre ich sehr dankbar. Z.B. Habe ich nicht ganz verstanden, wie das mit dem Interrupt überhaupt funktioniert: Zuerst setzte ich den Pin auf 0, damit er als Eingang definiert ist, ist das richtig? Und dann? Ist es dann genau dieser Pin, den ich einlese? Das würde ja bedeuten, dass über den Schalter evtl. ein anderes Signal auf den Pin kommt als ich programmiert habe... Ich glaube, dass hier mein Denkfehler ist aber leider komme ich allein nicht weiter. Es wäre nett, wenn mir jemand helfen könnte. Ach so: Ich benutze AVR Studio...als µC habe ich den ATA6603. Vielen Dank im Voraus!!! Marion
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.