Quarz 8 MHZ Atmega8

OP #2111457
Moin Moin,

derzeit versuche ich einen Quarz mit 8 MHZ an meinem Atmega8 zum laufen 
bringen. Die Fuses habe ich über das AVR Studio und anhand der Infos aus 
dem Datenblatt auf CKOPT 1 und die SUT_CKSEL auf "Ext. Crystal/Resonator 
High Freq: Start-up time 16K CK + 64 ,s" gestellt. Quarz ist wie im 
Tutorial beschalten.

Nun wollte einfach nur eine LED blinken lassen (im 1 Sekeundentakt - 
siehe Code) und erhalte nun ein viel zu schnelles blinken. Setze ich 
einen 4 MHZ Quarz ein reduziert sich das Blinkinterval, aber stellt 
immernoch kein Sekundentakt dar.

Liegt bei mir ein Verständnisproblem vor oder gebe ich dem Atmega8 
nötige Informationen nicht?

Viele Grüße
Angehängte Dateien:
OP
Besten Dank schonmal für den Hinweis. Leider führt dies zu keinem 
Unterschied beim Blinkverhalten. Den nun aktuellen Code mit deinem 
Hinweis hänge ich an.
1
#include <stdlib.h>
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5

6
#define F_CPU           8000000UL              
7

8
#define LED_PORT        PORTD
9
#define LED 2
10

11
void toggle_led()
12
{
13
  LED_PORT ^= (1 << LED);
14
} 
15

16
void main(void)
17
{
18

19
  DDRD=0xff;
20

21
  PORTD=0x00;
22

23
  while(1)
24
  {
25
  
26
  toggle_led();
27
  _delay_ms(250);
28
  _delay_ms(250);
29
  _delay_ms(250);
30
  _delay_ms(250);
31

32
  }  
33

34
}
Gast
Kannst du Messwerte beschaffen - Wie oft blinkt es in 10s oder 100s? 
Damit könnte man vielleicht Rückschlüsse auf die Ursache ziehen.

Bei dem Wechsel auf 4 MHz Quarz: Hast du den Quarz als Bauteil getauscht 
und im Programm F_CPU auf 4000000 geändert?

Welche Version der avr-libc benutzt du (s. Datei avr/version.h)?

Mit dem gezeigten Code kannst du nicht gut unterschieden, ob dein 
Programm läuft oder der AVR dauernd resettet. Das kann wie eine 
blinkende LED aussehen. Füge an einem freien Pin ein Dauersignal ein. 
Wenn das toggelt, hast du ein Resetproblem.
Gast
>#include <util/delay.h>
>
>#define F_CPU           8000000UL

Falsch, so ist es richtig:

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


Und Optimierung einschalten nicht vergessen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 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.