F_CPU wird nicht dort festgelegt sondern als precompiler konstante oder per define im code
im 2ten Bild LOW.CKDIV8 ist AN, das heißt deine CPU taktet mit OSC/8 = 1 Mhz, da OSC 8Mhz ist
Um mal ins Detail zu gehen, im Code für die Atmel Treiber und internen Funktion (von delay.h) zum Beispiel werden Formel benutzt um die Anzahl an Takte Vs Frequenz zu errechnen um korrekt und deterministisch arbeiten zu können, damit delay_ms(1000) auch genau eine Sekunde dauert.
Die Formel verwendet dann den "Platzhalter" F_CPU wo eigentlich eine Frequenz stehen müsste, also quasi so etwas wie eine Variable!
Es ist aber keine Variable sondern eneben nur ein Platzhalter.
Beim compilen geht der Preprozessor/Precompiler einmal über den Code, sammelt alle #defines und andere precompiler Schlüsselwörter ein und bildet sich so eine Art Notizzettel welcher Code eingeblendet und ausgeblendet wird und welche Platzhalter mit welchem Inhalt überschrieben werden ("Suchen und ersetzen" wenn man es so nennen will)
Nach diesem Schritt sollte sich dein Code so lesen als hättest du überall die F_CPU Frequenz von Hand eingetragen und dieser wird dann am Ende fertig compiliert.
Lesezeichen