Forum: Mikrocontroller und Digitale Elektronik delay function Problem


von Chris C. (chris_student)


Lesenswert?

für ein ATMEGA88 habe ich ein Problem mit der delay function 
gefunden.Wenn ich die Funktion auf 1000ms ,8 sec statt 1s dauert 
!!!!!.Die LED blinkt ,sondern 8s statt 1s .

---------

#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL

int main(void)
{

  DDRC |=(1<<PC0);

    while (1)
    {
    PORTC |=(1<<PC0);
    _delay_ms(1000);
    PORTC &= ~(1<<PC0);
    _delay_ms(1000);
    }
}

von Christian M. (christian_m280)


Lesenswert?

Vielleicht einfach
1
#define F_CPU 8000000UL

auf die richtige Frequenz setzen... Oder die Fuse, wie Du willst!

Gruss Chregu

von Sebastian R. (sebastian_r569)


Lesenswert?

Bitte einmal die CKDIV8 Fuse deaktivieren, danke.

von Dyson (Gast)


Lesenswert?

F_CPU muss vor dem Include von delay.h definiert werden. Das wird dir 
auch in einer von dir ignorierten Warnung mitgeteilt.

von Chris C. (chris_student)


Lesenswert?

Sebastian R. schrieb:
> Bitte einmal die CKDIV8 Fuse deaktivieren, danke.

 Danke für Ihre Antwort.wie mache ich das ! ich bin neu in 
Programmierung

von Chris C. (chris_student)


Lesenswert?

Christian M. schrieb:
> Vielleicht einfach
>
>
1
> #define F_CPU 8000000UL
2
>
>
> auf die richtige Frequenz setzen... Oder die Fuse, wie Du willst!
>
> Gruss Chregu

Danke für Ihre Antwort .Ich denke muss ich die Fuse einstellen aber 
weiss ich nicht wie !!

von Adam P. (adamap)


Lesenswert?

Chris C. schrieb:
> Ich denke muss ich die Fuse einstellen aber
> weiss ich nicht wie !!

AtmelStudio:
Tools -> Device Programming

Tool und Device auswählen

Fuses ändern.

Oder mit AVR Dude.

https://www.mikrocontroller.net/articles/AVR_Fuses

: Bearbeitet durch User
von Chris C. (chris_student)


Lesenswert?

Sebastian R. schrieb:
> Bitte einmal die CKDIV8 Fuse deaktivieren, danke.

Sie haben Recht .Es hat sich geklappt

von Falk B. (falk)


Lesenswert?

Chris C. schrieb:
> für ein ATMEGA88 habe ich ein Problem mit der delay function
> gefunden.Wenn ich die Funktion auf 1000ms ,8 sec statt 1s dauert
> !!!!!.Die LED blinkt ,sondern 8s statt 1s .

Nicht soviel Red Bull saufen, dann klapp's vielleicht auch mit den 
Nerven und vernünftigen Satzbau.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.