Hallo,
wie hast Du den Schalter verkabelt,
vielleicht schaut es nur so aus als wenn die immer an sind weil der Kontakt flattert
Hi,
ich benutze das Board RN-Control 1.4 mit MEGA32 und habe mir folgenden Code zum testen des externen Interrupts überlegt:
Jetzt zu meinem Problem: Eigentlich sollte sich beim drücken des Tasters an PD2 der Status der oberen 4 LED's ändern, jedoch passiert bei mir nichts. Sie leuchten dauerhaft.Code:#include <avr/io.h> #include <avr/interrupt.h> int main(){ //Initialisierung der LED's DDRC = 0xff; PORTC = 0x0f; // Initialisierung PORTD (INT0) DDRD &= ~(1<<PIN2); PORTD |= (1<<PIN2); //INT0 aktivieren, auf fallende Flanke reagieren GIMSK |= (1 << INT0); MCUCR |= (1 << ISC01); MCUCR &= ~(1<<ISC00); //Interrupts global aktivieren sei(); for(;;){ } return 0; } //ISR Routine ISR(INT0_vect){ PORTC ^= 0xf0; }
Hoffe ihr könnt mir helfen
Jens
Hallo,
wie hast Du den Schalter verkabelt,
vielleicht schaut es nur so aus als wenn die immer an sind weil der Kontakt flattert
mit "for(;return 0;" schickst du das programm doch sofort ins nirwana? und setzt damit die leds erneut auf leuchten? macht das nix?
kA, ob es daran liegen kann..
@robocat
nach dem for kommt aber noch ein Block in geschweifter Klammer, so wird das return nicht erreicht.
ja-.-
komisch vorhin war das anders?!
oder war ich nur nicht aufmerksam genug?
sry jedenfalls, so is ok.
Ein Pin des Schalters habe ich an PD2 angeschlossen und den anderen an Masse.
Habe auch schon mal anstatt PORTC ^= 0xf0;
PORTC = 0x00 stehen.
Dann sollte er ja eigentlich nach dem ersten mal drücken die LED's immer an haben.
Muss man vielleicht ein bestimmtes Fuse Bit gesetzt sein?
Also der Pin ist als Eingang definiert, und der Schalter geht gegen Masse,
was ist wenn der Schalter nicht gedrückt ist ?
Es muss doch eigentlich irgendwo ein High-Pegel herkommen, den man auf Masse ziehen kann, der dann als INT erkannt wird.
Da würde sich ein Pullup gut machen, so wie das auch bei einem Resetschalter gemacht wird.
ich habe doch den internen PULLUP aktiviert.
oder meinst du das so, dass ich einen 100k widerstand mit gegen 5v schalte, so wie beim reset.
Hallo,
so, jetzt hab ich das selber probiert mit der RN-Control, und das Programm von ganz oben funktioniert bei mir, die LEDs flackern halt ein wenig wenn man den Kontakt betätigt, ohne externen Pullup.
Evtl. kannst Du mal messen, ob an dem Pin ca. 5V anliegen, wenn der Taster nicht betätigt ist.
Kenne das RN 1.4 nicht. Aber sind die Taster entprellt?
Ausserdem sollte das in der ISR wahrscheinlich
heissen, oder?Code:PORTC ^= 0x0f;
Lesezeichen