Finwe0815
26.09.2007, 20:22
Hy zusammen,
ich hab nen kleines großes Problem, und zwar:
Ich will mit meinem Atmega8 einen Port einlesen (PB0) und je nach Art des Zustandes ne LED ein und ausschalten (wenn High --> LED an; wenn Low --> Led aus.
Die LED ist mit dem Minus Pol direkt mit Masse verbunden, der Plus Pol mit PC0. Wenn ich nun eine Verbindung von VCC 5V mit PB0 verbinde soll die LED leuchten. Wenn keine Verbindung besteht soll die LED aus sein.
Ich benutze Winavr und Pony Prog... Einzelne Pins ein und ausschalten funktioniert aber das mit dem Einlesen nicht, hier mal der Code:
// Test
#include <avr/io.h>
int main (void)
{
DDRB &= ~( 1 << PB0 ); //PB0 Eingang
PORTB |= ( 1 << PB0 ); //Pull up an
DDRC |= ( 1 << PC0 ); //PC0 Ausgang
while(1)
{
if (PINB & (1 << PB0)) //wenn PB0 High ist...
{
PORTC |= (1 << PC0); //PC0 High
}
// Eine Schleife ist eigentlich unnötig
if (!(PINB & (1 << PB0))) //wenn PB0 Low ist...
{
PORTC &= ~(1 << PC0); //PC0 Low
}
}
return 0;
}
Im Moment läuft es irgendwie andersherum wenn keine Verbindung besteht ist die LED an, wenn eine Verbindung besteht ist sie aus??? Wenn ich nur eine Schleife programmiere passiert garnix, die LED ist immer an oder aus (je nach Schleife) und das Anlegen vonn VCC oder GND an PB0 bewirkt garnix?!
Ich hoffe Ihr könnt mir helfen.
Vielen Dank im Voraus
Gruß Finwe09
ich hab nen kleines großes Problem, und zwar:
Ich will mit meinem Atmega8 einen Port einlesen (PB0) und je nach Art des Zustandes ne LED ein und ausschalten (wenn High --> LED an; wenn Low --> Led aus.
Die LED ist mit dem Minus Pol direkt mit Masse verbunden, der Plus Pol mit PC0. Wenn ich nun eine Verbindung von VCC 5V mit PB0 verbinde soll die LED leuchten. Wenn keine Verbindung besteht soll die LED aus sein.
Ich benutze Winavr und Pony Prog... Einzelne Pins ein und ausschalten funktioniert aber das mit dem Einlesen nicht, hier mal der Code:
// Test
#include <avr/io.h>
int main (void)
{
DDRB &= ~( 1 << PB0 ); //PB0 Eingang
PORTB |= ( 1 << PB0 ); //Pull up an
DDRC |= ( 1 << PC0 ); //PC0 Ausgang
while(1)
{
if (PINB & (1 << PB0)) //wenn PB0 High ist...
{
PORTC |= (1 << PC0); //PC0 High
}
// Eine Schleife ist eigentlich unnötig
if (!(PINB & (1 << PB0))) //wenn PB0 Low ist...
{
PORTC &= ~(1 << PC0); //PC0 Low
}
}
return 0;
}
Im Moment läuft es irgendwie andersherum wenn keine Verbindung besteht ist die LED an, wenn eine Verbindung besteht ist sie aus??? Wenn ich nur eine Schleife programmiere passiert garnix, die LED ist immer an oder aus (je nach Schleife) und das Anlegen vonn VCC oder GND an PB0 bewirkt garnix?!
Ich hoffe Ihr könnt mir helfen.
Vielen Dank im Voraus
Gruß Finwe09