Hallo Leute,
ich stehe gerade auf dem Schlauch!
Vielleicht kann mir einer helfen.
Folgendes Programm funktioiert:Wenn ich die Taste drücke, wird der Ausgang geschaltet - wenn ich loslasse, geht der Ausgang auf = 0.Code://-------------------------------------------------------------- // Interruptvector Overflow Timer2 //-------------------------------------------------------------- ISR(TIMER2_OVF_vect) { //------------------------------------------------ // Systemfunktionen //------------------------------------------------ TCNT2 = 0x64; //Nachladen des Timer2 - Register //------------------------------------------------ //Taste abfragen //------------------------------------------------ byTaste = (PIND & (1 << biD0_D2_Reserve)); //wurde Taste betätigt? if (byTaste) PORTC |= (1<<boD0_C5_Reserve); else PORTC &= ~(1<<boD0_C5_Reserve); } //----------------------------------------------------------------------- // Hauptprogramm //----------------------------------------------------------------------- int main(void) { init(); //Initialisierung //----------------------------------------------------------------------- // Hauptschleife //----------------------------------------------------------------------- while (1) { ; } }
Dieser Code funktioniert nicht:Da die Variable 'byTaste' global ist, muss der Zustand auch überall verfügbar sein. Aber es ist nicht nicht der Fall, der Ausgang wird nicht geschaltet.Code://-------------------------------------------------------------- // Interruptvector Overflow Timer2 //-------------------------------------------------------------- ISR(TIMER2_OVF_vect) { //------------------------------------------------ // Systemfunktionen //------------------------------------------------ TCNT2 = 0x64; //Nachladen des Timer2 - Register //------------------------------------------------ //Taste abfragen //------------------------------------------------ byTaste = (PIND & (1 << biD0_D2_Reserve)); } //----------------------------------------------------------------------- // Hauptprogramm //----------------------------------------------------------------------- int main(void) { init(); //Initialisierung //----------------------------------------------------------------------- // Hauptschleife //----------------------------------------------------------------------- while (1) { //wurde Taste betätigt? if (byTaste) PORTC |= (1<<boD0_C5_Reserve); else PORTC &= ~(1<<boD0_C5_Reserve); } }
Der Fehler sitzt warscheinlich wieder zwischen meinen Ohren.
Danke für jede Hilfe.







Zitieren


Lesezeichen