Christian_D
14.05.2007, 23:27
Hallo,
ich bin Anfänger in der uC-Programmierung (zumindest, was Mega8 betrifft) und möchte mit folgendem Programm den Pin 7 auslesen und diesen auf Pin 1 "ausgeben".
(1) Leider messe ich eine Leerlaufspannung von 1.5 V, obwohl lt. Datenblatt mit internem Vorwiderstand 5 V an Pin 7 anliegen sollten. Was kann falsch sein?
(2) Kann ich aus diesem Grund den Taster ("Schalten" = auf Masse ziehen) nicht detektieren?
Hier das Programm:
int main()
{
// LED-Port auf IN und OUT
DDR_LED = 0x0F ; // Port 7 = Eingang, Port 1 = Ausgang //
PORT_LED = 0xF0 ; // Pull-up Widerstand Port 7 = EIN //
// Endlosschleife
while (1)
{
if (PIN_LED & 0x80) // Taster nicht gedrückt --> Port 7 = High //
{
PORT_LED &= ~(0x02) ; // Port 1 = nicht gesetzt (LED off) //
}
else // Taster gedrückt --> Port 7 = Low (Gnd) //
{
PORT_LED |= 0x02; // Port 1 = gesetzt (LED on)
}
}
// main braucht keine return-Anweisung, weil wir nie hier hin kommen
}
Vielen Dank für Antworten!
Christian
ich bin Anfänger in der uC-Programmierung (zumindest, was Mega8 betrifft) und möchte mit folgendem Programm den Pin 7 auslesen und diesen auf Pin 1 "ausgeben".
(1) Leider messe ich eine Leerlaufspannung von 1.5 V, obwohl lt. Datenblatt mit internem Vorwiderstand 5 V an Pin 7 anliegen sollten. Was kann falsch sein?
(2) Kann ich aus diesem Grund den Taster ("Schalten" = auf Masse ziehen) nicht detektieren?
Hier das Programm:
int main()
{
// LED-Port auf IN und OUT
DDR_LED = 0x0F ; // Port 7 = Eingang, Port 1 = Ausgang //
PORT_LED = 0xF0 ; // Pull-up Widerstand Port 7 = EIN //
// Endlosschleife
while (1)
{
if (PIN_LED & 0x80) // Taster nicht gedrückt --> Port 7 = High //
{
PORT_LED &= ~(0x02) ; // Port 1 = nicht gesetzt (LED off) //
}
else // Taster gedrückt --> Port 7 = Low (Gnd) //
{
PORT_LED |= 0x02; // Port 1 = gesetzt (LED on)
}
}
// main braucht keine return-Anweisung, weil wir nie hier hin kommen
}
Vielen Dank für Antworten!
Christian