mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Quarz 8 MHZ Atmega8


Autor: Hans B. (hans_b92)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>#define F_CPU           8000000

Da gehört noch ein UL (unsigned long) hinter. Sonst denkt der Compiler 
das ist Integer.

#define F_CPU           8000000UL

mfg.

Autor: Hans B. (hans_b92)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#define F_CPU           8000000UL              

#define LED_PORT        PORTD
#define LED 2

void toggle_led()
{
  LED_PORT ^= (1 << LED);
} 

void main(void)
{

  DDRD=0xff;

  PORTD=0x00;

  while(1)
  {
  
  toggle_led();
  _delay_ms(250);
  _delay_ms(250);
  _delay_ms(250);
  _delay_ms(250);

  }  

}

Autor: Helfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>#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.

Autor: Hans B. (hans_b92)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an Helfer und Holger, die Reihenfolge #define und include hat den 
Ausschlag gegeben. Besten Dank für die Unterstützung!

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans B. schrieb:
> void main(void)

int main(void)

Sollte der Compiler auch anmeckern. Hat zwar nichts mit deinem Fehler zu 
tun aber...

Den Takt kannst du auch einstellen unter
>>Project >>Configuration Options >>General >> Frequenzy

mfg.

Autor: Tüll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und du kannst auc _delay_ms(1000) schreiben

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.