Phil schrieb:
> Warum erwartet die delay Funktion einen Wert, der beim Kompilieren schon
> bekannt ist?
Weil sie daraus die einzusetzenden Befehle möglichst exakt ermitteln
will. Wie willst du um eine Mikrosekunde genau verzögern können,
wenn bereits deine Rechnung 50 oder 100 Mikrosekunden dauert?
_delay_us() und _delay_ms() sind Bequemlichkeits-Funktionen, die das
umständliche Vorberechnen der CPU-Zyklenzahl auf den Compiler verlagern
möchten, damit der Nutzer den Stress nicht hat. Sie arbeiten intern
mit Gleitkommazahlen, damit man auch sowas angeben kann, wie
1 | #define F_CPU 3.686E6 /* 3.686 MHz */
|
oder
Du wärst schätzungsweise besser beraten, einen Timer damit zu
beauftragen. Dafür sind die Dinger da.