www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32 takt nicht richtig eingestellt


Autor: Philipp Maricek (lord-maricek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich habe das Pollin Atmel Evaluations-Board Version 2.0.1.
Der Mega32 hat da einen 16Mhz Quarz drauf. Ich glaube aber dass der 
kaputt ist. Ich habe diesen Code geschrieben, um Leds an und aus 
zumachen.
#include <stdlib.h>
#include <stdint.h>
#include <avr/io.h>

#include <util/delay.h>

//#undef F_CPU 
#define F_CPU 8000000

void delay_ms(int delay) {
    for (int i=0;i<delay;i++) {
      _delay_ms(1);
   }
}


int main(void)
{
  DDRD = 0xff;
  while(1)
  {
    PORTD = 0xff;
    delay_ms(1000);
    PORTD = 0x00;
    delay_ms(1000);
  }
  return 0;
}[\code]

Aber die Led blinken ungefähr doppelt so schnell.
Mit Avr Studio habe ich die Fuses auf das gesetzt:
[code]Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 64 ms[\code]

Ich habe dann versucht den externen Quarz zu benutzten. Ich habe in den Fuses mehrere Einstellungen versucht, und alle Megas lassen sich nicht mehr ansprechen.
[code]Ext. Low-Freq. Crystal; Start-up time: 32K CK + 64 ms
Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 64 ms}

Habe ich die falschen Fuses gesetzt, oder warum geht das nicht?

Mfg
Philipp

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp Maricek schrieb:
> #define F_CPU 8000000

und warum schreibst du 8Mhz wenn der Amtel einen 16MHz läuft.

Autor: Philipp Maricek (lord-maricek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als internen Quarz habe ich 8Mhz gesetzt, weil der externe irgentwie 
nicht geht. Zumindest nicht, wenn ich die fuses einstelle.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp Maricek schrieb:
> irgentwie

Das würdest du merken. Sobald nämlich der Takt nicht mehr funktioniert, 
kannst du weder programmieren noch fuses setzen.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich habe das Pollin Atmel Evaluations-Board Version 2.0.1.
> Der Mega32 hat da einen 16Mhz Quarz drauf.

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

Falsch: F_CPU vor dem Include definieren
Falsch: 8 MHz != 16 MHz

> Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 64 ms

Falsch: Ext. RC Osc. != Ext. Crystal

> Ext. Low-Freq. Crystal; Start-up time: 32K CK + 64 ms

Falsch: Ext. Low-Freq. Crystal != Ext. Crystal 16 MHz

> Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 64 ms}

Falsch: Low Freq. != 16 MHz

AVR Fuses

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

Bewertung
0 lesenswert
nicht lesenswert
Philipp Maricek schrieb:
> Als internen Quarz habe ich 8Mhz gesetzt, weil der externe irgentwie
>
> nicht geht. Zumindest nicht, wenn ich die fuses einstelle.

Gar nichts hast du eingestellt, sondern nur wild herumgespielt. Kannst 
froh sein, daß das Teil überhaupt noch läuft.

Philipp Maricek schrieb:
> Habe ich die falschen Fuses gesetzt

Na was denn sonst!

1. Wenn du den internen RC-Oszilator, das ist kein Quarz, benutzen 
willst, mußt du auch internen Oszillator 8 MHz einstellen und nicht 
"Ext. RC Osc. 8.0 MHz - 12.0 MHz".

2. Bei der Einstellung "Ext. RC Osc. 8.0 MHz - 12.0 MHz" muß da auch ein 
externer RC dran sein.

3. Die Einstellung für externen QUARZ ist "Ext. Crystal Osz." oder 
besser
   "Ext. Full-Swing Crystal"

Dann läuft dein kaputter Quarz auch wieder.

>#define F_CPU 8000000

Das gehört da so auch nicht hin. Das stellt man unter "Project >> 
Configuration Options" ein.

Für den Fall, daß man das mal vergessen hat schreibt man dann:

#ifndef F_CPU
  #define F_CPU xxx
#endif

Im übrigem wird damit nichts am Controller eingestellt, sondern dem 
Compiler mitgeteilt, mit welchem Takt die Hardware läuft. Z.B. um die 
Delays richtig zu berechnen. Oder woher soll der das sonst wissen?


mfg.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
an der Stelle eine Frage, wenn ich im Makefile (WinAVR, Notepad)
"F_CPU 80000000" einstelle dann brauche ich nicht mehr in "main.c"

#ifndef F_CPU
  #define F_CPU xxx
#endif

bzw. #define F_CPU 8000000

definieren oder?

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

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> bzw. #define F_CPU 8000000
>
>
>
> definieren oder?

Richtig!

mfg.

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> an der Stelle eine Frage, wenn ich im Makefile (WinAVR, Notepad)
> "F_CPU 80000000" einstelle dann brauche ich nicht mehr in "main.c"

falls das ein C&P war, ändere deine Einstellung..einen 80MHz Mega32 gibt 
es afaik nicht...

Autor: Philipp Maricek (lord-maricek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke für die Tipps, aber was muss ich jetzt in die Fuses schreiben?
Aus dem Tutorial werde ich auch nicht ganz schlüssig.
Im avr Studio gibts unter Crystal/Resonator, Low, Medium und High.
Ich werde daraus noch nicht so richtig schlau.

MfG
Philipp

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

Bewertung
0 lesenswert
nicht lesenswert
Philipp Maricek schrieb:
> Im avr Studio gibts unter Crystal/Resonator, Low, Medium und High.
>
> Ich werde daraus noch nicht so richtig schlau.

Ext. Crystal/Resonator High Frequ.

mfg.

Autor: Philipp Maricek (lord-maricek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke, jetzt gehts, manchmal stell ich mich auch doof an.

MfG
Philipp

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.