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:
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);
}
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?
ich hab wohl was an den Augen
War ein [Edit] meinerseits
Schöne Nacht wünsche ich euch auch
mic
Lesezeichen