Die Variabel count72kHz wirdt in die Asuro.c Bibliothek inkrementiert bei jeder Output Compare Interupt der Timer2. (Zbs. steht am anfang von Asuro.c im FirstTry ordner) Also soll das:
while (count72kHz<100)
wie ein art von Zeit Messung funktionieren. (EDIT: Die Funktion Sleep() funktioniert auch so ähnlich.)
Bis 100 mal die Timer Interrupt passiert ist, wird die Pin D2 (3e Pin von Port D) Eingang abgefragt:
(1<<2) heißt Bitwert 1 wird 2 mal nach Links geschoben. Das
ist Äquivalent an 1 Multiplizieren mit 4. Das 3e Bit einer Byte hat ein Bitwert von 4. Einfach bedeutet das 00000100 im Binair Zahlung.
Wieso dort nicht gleich die Nummer 4 verwendet wird ist mir auch ein Rätsel.
PIND & (00000100) heißt das Register mit die Zustand der Port D Pins wirdt ge-Und-et mit Binair 4. Dadurch bekommt man ein Byte wo nur das 3te bit entweder gesetzt ist, oder nicht. Alle andere Bits sind 0, weil sie ge-Und-et sind mit 0.
if (("PinD2_zustand") == 0) heißt das getestet wird ob PinD2 niedrig ist. Wobei dann angenommen wird das die Schwungkreise in Oszillation ist.
Ich habe keine Ahnung wie die Schaltung aus sieht. Deshalb kann ich das Letzte nicht weiter erklären.
Lesezeichen