[Frage?] die Delay TIme nicht stimmt mit <util/delay.h>.

OP #618750
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
1
#include <avr/interrupt.h>
2
#include <avr/io.h>
3
#include <stdint.h>
4

5
#ifndef F_CPU
6
#define F_CPU 4000000UL     /* Quarz 4 Mhz */
7
#endif
8
#include <util/delay.h> 
9
/******************************************************************************/
10

11
int main (void)
12
{
13

14
  DDRA = 0xFF;          // Set PortA as Output
15

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

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

21
  
22

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

26
    while(1)
27
    {
28
    _delay_us(80);
29

30
    PORTA |= (1<<PORTA1);
31

32
    _delay_us(80);
33

34
    PORTA &= ~(1<<PORTA1);
35
    }
36

37
}
Angehängte Dateien:
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)
> 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.
@ 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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.