Ha, ich bin wieder im Topic, weil mir aufgefallen ist, dass bei meinen Programm die grüne StatusLED und die BackLEDs(unterschiedlich hell) weiterglimmen. Bei der StatusLED liegt es wohl an den internen Pullups, die müssen aus sein. Die BackLEDs liegen mit der Kathode an PD7, deshalb gehen die aus, wenn man diesen Ausgang setzt:
Das heißt aber auch, wenn man die BackLEDs einschalten will, muss man zusätzlich zu PC0/PC1 noch PD7 als Ausgang definieren und ein Low ausgeben. Dann gehen auch D13/14 aus, deshalb funktionieren BackLEDs und Odometrie nicht zusammen. Oder sehe ich das falsch?Code:#include <avr/io.h> #include <avr/interrupt.h> unsigned int timer_startwert=65536-7812; // 8MHz/1024=7812,5 int main(void) { DDRB=0; // nicht benoetigte Ports auf Eingang setzen PORTB=0; // und die Pullups aus, sonst "glimmt" die StatusLED gruen DDRC=0; PORTC=0; DDRD=(1 << PD2); //rote StatusLED haengt an PD2(= Port D, Bit2) DDRD|=(1 << PD7); // Kathoden der BackLEDs haengen auf PD7 PORTD=(1 << PD7); // high an PD7 schaltet die BackLEDs aus /* Es folgt eine Einschaltverzögerung von ca. 1 Sekunde */ TCNT1=timer_startwert; // 16-Bit auf einmal laden? TCCR1B |= 0b00000101; // Prescaller Timer1 auf 1024 setzen while(!(TIFR & (1 <<TOV1) )); //Warten bis Überlauf Timer1 TCCR1B &= ~0b00000101; // Prescaller löschen bedeutet Timer1 stoppen TIFR = (1 << TOV1); // Flag setzen bedeutet Flag wieder löschen while(1) PORTD=(1 << PD7) | ((PINC & (1<<PC4)) >> 2); // eine Taste schaltet StatusLED aus return(0); }
War ein [Edit] meinerseitsich hab wohl was an den Augen![]()
Schöne Nacht wünsche ich euch auch
mic







Zitieren

Lesezeichen