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

OP #618750
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
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:
#618780
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.
#619088
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

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.

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.