Hallo Ich arbeite mit dem AVR-Studio 4 (mit GCC-Compiler) und programmiere über das STK500 einen ATmega128. Ich habe nun ein simples Testprogramm (siehe unten) geschrieben mit welchem ich nur über einen externen Interrupt (fallende Flanke) einen Ausgang toggeln möchte (LED blinken). Beim AVR-Studio 4 ist ja ein eigentlich recht nützlicher Simulator dabei, mit welchem ich das Programm auch getestet habe: es hat auch funktioniert. Wenn ich es jedoch am CRUMB128 selber teste, funktioniert das Programm nicht. Hier der Programm-Code: #include <AVR/io.h> #include <AVR/signal.h> #include <AVR/interrupt.h> int a; // Hilfsvariable (setzen oder rücksetzen) int main(void) { DDRB=0xFF; // PortB als Ausgang PORTB=0xFF; // Pull-up DDRE=0x00; // PortE als Eingang PORTE=0xFF; // Pull-up EICRB |= (1<<ISC71); // Interrupt reagiert EICRB &= ~(1<<ISC70); // auf fallende Flanke EIMSK |= (1<<INT7); sei(); // allgemeine Interruptfreigabe while(1) // warte auf Interrupt { } return 0; } SIGNAL (INT7_vect) // wenn fallende Flanke kommt { if(a==0) // wenn a=0 { PORTB &= ~(1<<PORTB0); // Ausgang löschen a=1; // bei nächster Flanke --> else-Zweig } else // wenn a=1 { PORTB |= (1<<PORTB0); // Ausgang setzen a=0; // bei nächster Flanke --> if-Zweig } } Kann mir bitte jemand helfen, ich wäre wirklich für jeden Hinweis dankbar.
statt: if(a==0) // wenn a=0 { PORTB &= ~(1<<PORTB0); // Ausgang löschen a=1; // bei nächster Flanke --> else-Zweig } else // wenn a=1 { PORTB |= (1<<PORTB0); // Ausgang setzen a=0; // bei nächster Flanke --> if-Zweig kannst du auch einfach PORTB ^= (1<<PORTB0) nehmen. exklusiv oder
Und womit erzeugst Du Deine fallende Flanke? Doch wohl hoffentlich nicht mit einem Taster, oder? Wenn doch: Wenn Du einen Taster an einen externen Interrupt anschließt (und dann auch noch ohne Entprellung), dann kann alles Mögliche passieren. Nur ist das in den seltensten Fällen das, was Du willst... Ach ja, und Basti hat natürlich auch recht.
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.