Atmega32 takt nicht richtig eingestellt

OP #2039857
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.
1
#include <stdlib.h>
2
#include <stdint.h>
3
#include <avr/io.h>
4

5
#include <util/delay.h>
6

7
//#undef F_CPU 
8
#define F_CPU 8000000
9

10
void delay_ms(int delay) {
11
    for (int i=0;i<delay;i++) {
12
      _delay_ms(1);
13
   }
14
}
15

16

17
int main(void)
18
{
19
  DDRD = 0xff;
20
  while(1)
21
  {
22
    PORTD = 0xff;
23
    delay_ms(1000);
24
    PORTD = 0x00;
25
    delay_ms(1000);
26
  }
27
  return 0;
28
}[\code]
29

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

34
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.
35
[code]Ext. Low-Freq. Crystal; Start-up time: 32K CK + 64 ms
1
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
Persönliche Seite #2039896
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
#2040298
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.
Gast #2040318
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?

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.