Verständnisfrage zum Takt

Ich habe folgendes kleines Problem beim Programmieren des Attiny45. Ich habe den gekauft und habe aus dem Internet entnommen, dass der standdardmäßig mit 8MHz internem Oszillator getaktet wird. Ich habe mir mit AVR Studio 5.1.208 die Fuses angeschaut, und es sieht wie folgt aus:

SELFPRGEN = [ ]
RSTDISBL = [ ]
DWEN = [ ]
SPIEN = [X]
WDTON = [ ]
EESAVE = [ ]
BODLEVEL = DISABLED
CKDIV8 = [X]
CKOUT = [ ]
SUT_CKSEL = INTRCOSC_8MHZ_6CK_14CK_64MS

EXTENDED = 0xFF (valid)
HIGH = 0xDF (valid)
LOW = 0x62 (valid)

Daraus geht meines Erachtens hervor, dass das Ding tatsächlich mit 8MHz läuft.
Jetzt habe ich folgenden Programmteil ausprobiert und festgestellt, dass die richtigen Zeiten nur rauskommen, wenn ich anstelle von 8MHz 1MHz angebe. Frage, Läuft der Chip mit 8 oder mit einem MHz?

    #define F_CPU 1000000                    // clock 1.0 MHz, internal oscillator

    #include <avr/io.h>
    #include <util/delay_basic.h>
    #include <avr/interrupt.h>

    #define LED PB4
	
void delay_ms(uint16_t ms){
  while (ms > 0) {
    _delay_loop_2(F_CPU/4000);
    ms--;
  }
}
    
    ISR (PCINT0_vect)               // Interrupt on PCINT0 vector
    {
    PORTB ^= (1 << LED);               // Toggle LED
    delay_ms (500);
    PORTB ^= (1 << LED);               // Toggle LED
	
    }
	



int main(void)
{

    GIMSK = _BV (PCIE);										 // Pin Change Interrupt Enable
    PCMSK = _BV (PCINT3);									 // Enable external interrupts PCINT3, PB3
    // MCUCR = 0x00;    										 // PCINT0 is triggered on rising edge
    sei();													 // int - Global enable interrupts
    DDRB |= (1 << LED);										 // Set direction register output

        for (;;) {                  // loop (endless)
          asm("NOP");
        }

    return 0;
}

In dem ganzen Codeschniplsel geht es nur um die Zeile #define F_CPU und delay_ms(500). Wenn ich 8.000.000 angebe, dann dauert das nicht eine halbe Sekunde, sondern ganze vier Sekunden.

CKDIV8 = [X]

Vermutlich wird der Takt nochmal durch 8 geteilt.
Dieses Fusebit ändern oder es sollte woanders berücksichtigt werden ???

Schau dir mal die Seite AVR® Fuse Calculator – The Engbedded Blog an und gib Attiny45 ein.
Ausgegeben werden die Fuses im Auslieferungszustand. CKDIV8 = 0 ( "0" heißt gesetzt) bedeutet, dass der Takt intern durch 8 geteilt wird.
Die Definition #define F_CPU 1000000 sagt dem Compiler, dass der Chip auf 1 MHz läuft, also stimmen die Zeiten im Programm.
Ändern kannst du das nur, wenn du die Fuses änderst.

ArduStemmi:
Daraus geht meines Erachtens hervor, dass das Ding tatsächlich mit 8MHz läuft.

Nö.

Und es gibt Datenblätter, in denen Du das nachlesen kannst.

Clock Selection
The AVR fuse settings control the system clock source being used.
The device is hipped with internal RC oscillator at 8.0MHz and
with the fuse CKDIV8 programmed, resulting in 1.0MHz system clock.

So werden die Dinger von Atmel ausgeliefert.
Und so schreibt Atmel das ins Datenblatt.