Vbxler
27.06.2009, 09:01
Hallo Leute,
ich stehe gerade auf dem Schlauch!
Vielleicht kann mir einer helfen.
Folgendes Programm funktioiert:
//--------------------------------------------------------------
// 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)
{
;
}
}
Wenn ich die Taste drücke, wird der Ausgang geschaltet - wenn ich loslasse, geht der Ausgang auf = 0.
Dieser Code funktioniert nicht:
//--------------------------------------------------------------
// 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);
}
}
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.
Der Fehler sitzt warscheinlich wieder zwischen meinen Ohren.
Danke für jede Hilfe.
ich stehe gerade auf dem Schlauch!
Vielleicht kann mir einer helfen.
Folgendes Programm funktioiert:
//--------------------------------------------------------------
// 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)
{
;
}
}
Wenn ich die Taste drücke, wird der Ausgang geschaltet - wenn ich loslasse, geht der Ausgang auf = 0.
Dieser Code funktioniert nicht:
//--------------------------------------------------------------
// 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);
}
}
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.
Der Fehler sitzt warscheinlich wieder zwischen meinen Ohren.
Danke für jede Hilfe.