www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [Frage?] die Delay TIme nicht stimmt mit <util/delay.h>.


Autor: Paramet W. (paman)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen ....

Ich hab diese Funktion <util/delay.h> mit ATmega16 versucht zu benutzen.
Aber die Zeit nicht so stimmt.

zB. Ich hab auf 80us gesetzt, aber sie kommt auf 990us aus.

Ich habe schon mit FUSE Bit korrigiert, das schon richtig ist.
Die Quarz ist auch richtig 4Mhz.

Woran kann die Problem noch legen, oder mich etwas flash gemacht

Danke für eure Hilfe ...

Gruß
PaMan
#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdint.h>

#ifndef F_CPU
#define F_CPU 4000000UL     /* Quarz 4 Mhz */
#endif
#include <util/delay.h> 
/******************************************************************************/

int main (void)
{

  DDRA = 0xFF;          // Set PortA as Output

  DDRB =  0b11111010;        // PB3( OC0 as Output) PB0(T0 as Input) PB2(SW as Input)
  PORTB = 0b00000101;        // Pull Up Input Pin

  PORTA |= (1<<PORTA0);      // Pre Show

  

    while(PINB & (1<<PINB2));  // wait switch Clear (Loop until bits clear)
    PORTA &= ~(1<<PORTA0);    // switch Confirm clear pre show

    while(1)
    {
    _delay_us(80);

    PORTA |= (1<<PORTA1);

    _delay_us(80);

    PORTA &= ~(1<<PORTA1);
    }

}


Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Thema Screenshot: Bildformate, also PNG nicht JPG.

Zum Problem: Doku lesen bildet: Optimierung einschalten. 
Fliesskommarechnung zur Laufzeit ist auf AVRs eher langsam.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontrolliere ob F_CPU ausserhalb von deinem Quellcode anders definiert 
ist (AVRStudio-Einstellung oder Makefile).

Kontrolliere ob die Quellen wie von delay() vorgesehen mit 
eingeschalteter Optimierung übersetzt werden.

Autor: Peter S. (psavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das jpg Bild ist von der Dateigrösse und Bildqualität völlig ok!

Aber vermutlich hast Du die Optimierung nicht aktiviert,ich empfehle 
generell -O1 zu verwenden. (Höhere Optimierungs Stufen sind auch okey, 
bewirken aber nur noch marginale Verbesserungen)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das jpg Bild ist von der Dateigrösse und Bildqualität völlig ok!

Seine erste Version war völlig unbrauchbar. Es ergibt wenig Sinn, einen 
Screenshot solange als JPG mit unterschiedlicher Komprimierung zu 
speichern bis er lesbar ist. PNG ist da einfacher und besser.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter S. (psavr)

>Das jpg Bild ist von der Dateigrösse und Bildqualität völlig ok!

Ja, aber dennoch das falsche Format. Ich kann auch mit ner Schubkarre am 
Sonntagmorgen zum Bäcker fahren. . . ;-)

Mfg
Falk

Autor: Sebastian Müller (sebby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was steht in der util/delay.h also taktfrequenz drin?
wenn da auch 4 mhz steht, dann mach mal eine endlos schleife und toggle 
nur ein pin, da müssten dann 2 mhz rauskommen (wenn ich mich net irre), 
als vergleich

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Müller wrote:
> was steht in der util/delay.h also taktfrequenz drin?
Was soll denn bitteschön in der delay.h für eine Taktfrequenz stehen? 
Die wird im Makefile angegeben!

> wenn da auch 4 mhz steht, dann mach mal eine endlos schleife und toggle
> nur ein pin, da müssten dann 2 mhz rauskommen (wenn ich mich net irre),
> als vergleich
Das kannste ja mal versuchen. Jede Wette, dass da bei Weitem weniger als 
2 MHz rauskommen!

BTW: Durch Pin-Toggeln in Software kriegste selbst in Assembler bei 
Weitem keine F_CPU/2 raus, von C ganz zu schweigen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.