F_CPU-Verwirrung ATMEGA88

Gast #1799723
Lesenswert?

Hallo!
Also ich bin etwas verwirrt.. Ich verwende ein STK500 mit einem 
ATMEGA88.
Jumper scheinen richtig gesetzt, da das Programm bei gesetzem 4MHz-Quarz 
2.5 mal langsamer abläuft als bei 10MHz-Quarz. Ohne Quarz läuft nichts. 
Es wird also der gesteckte Quarz verwendet.

Mit meinen 20MHz-Quarzen läuft der ATMEGA88 nicht, aber das ist momentan 
nicht schlimm. (Reichelt G13-704 20,0000-HC18)

Zum Problem:
1
#define F_CPU 10000000UL //Takt in Hertz
2

3
#include <avr/io.h>
4
#include <avr/delay.h>
5

6
int main()
7
{ 
8
 DDRD  = 0xFF;        // Port D komplett Ausgang
9
 
10
 while(1)
11
 {
12
  PORTD=0xFF;          // Ausgang high
13
  _delay_us(10);        
14
  PORTD=0x00;        // Ausgang low
15
  _delay_us(10);      
16
 } 
17
}

Dies ergibt auf dem Oszilloskop eine Verzögerung von 76µs und nicht die 
gewünschten 10µs.
Wenn ich F_CPU nun durch 7.6 dividiere, erhalte ich exakt die 
gewünschten 10µs.

Das ganz betrifft auch die Funktion    _delay_ms();

Kann mir jemand verraten was hier schief läuft??
Angehängte Dateien:
Moderator Persönliche Seite #1799792
Lesenswert?

Stephan schrieb:
> Ich muß mal nachlesen was man
> damit überhaupt fgestlegt..

Die initiale Einstellung des clock prescalers (CLKPR).  Mit gesetzter
CKDIV8-Fuse steht dieser auf 1:8, sodass bei einem 8-MHz-RC-Oszillator
ein CPU-Takt von 1 MHz heraus kommt.  Dieser Takt ist bei allen AVRs
für den kompletten Betriebsspannungsbereich ein gültiger Takt
(während der volle Takt dies nicht wäre).
Gast #1799815
Lesenswert?

ach so.. Aber dann könnte man doch auch einen anderen Quarz nehmen, 
oder?
Hat es noch etwas mit Stabiliät zu tun?
Also das Ganze wird später mit Netzteil betrieben, und in dem Bereich 
darf man ja ruhig "Strom verschwenden" ohne schlechtes Gewissen, oder?

Zum Oszilloskop: Paralaxefehler :-) Es ist ein älteres Oszilloskop bei 
dem die Skala recht weit von der Röhre entfernt ist...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren