Hi to @ll,
ich will folgendes:
wenn die Pins PC0=1 und PC2=0 dann LED an PC4 an.
Problem ist nur, das PC0 ein Ausgang ist!
Wenn ich das so progg, das PC0 als Eingang ist und ich mit
Code:
if ((PINC&0x05)==4) { /* Pin PC0=1 und PC2=0 dann... */
funktioniert es. Aber, wenn ich jetzt PC0 als Ausgang habe, klappt es leider nicht. Darf man für diese Abfrage nur Pins Eingänge benutzen?
Ich habe mal eine LED an PC0 angeschlossen und wenn ich PC3 drücke leuchtet die LED schwach.
So sieht mein Code aus, leider Funktioniert es nicht.
Was mache ich falsch?
Code:
#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#define F_CPU 8000000 // clock
int main(void) {
DDRC = (1<<PC0); /* Pin PC0 als Ausgang für Drehen Links */
DDRC = (1<<PC4); /* Pin PC4 als Ausgang für Led */
DDRC &= (~ (1<<PC2)|(1<<PC3)); /* Pin PC3 und PC2 als Eingang */
PORTC |= (1<<PC2)|(1<<PC3); /* Pull Up von PIN PC3 und PC2 aktivieren */
for(;;){
if (!( PINC & (1<<PINC3))) { /* mache was wenn PinC3 low ist */
PORTC|=(1<<PC0);
}
else{
PORTC&= ~(1<<PC0);
}
if ((PINC&0x05)==4) { /* Pin PC0=1 und PC2=0 dann... */
PORTC|=(1<<PC4);
}
else{
PORTC&= ~(1<<PC4);
}
}
}
Lesezeichen