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.