Forum: Analoge Elektronik und Schaltungstechnik Quarzoszillator und richtige Prozessorfrequenz


von Herbert J. (codemaker)


Angehängte Dateien:

Lesenswert?

Erstmal vorweg, ich bin absoluter Neuling in Sachen Mikrocontroller, 
deshalb bitte ich auf einem einfach Niveau zu antworten.
Also es handelt sich um ein Fach in der Uni, worin wir ein kleines 
Betriebssystem umsetzten müssen. Aufgrund einiger Fehlversuche habe ich 
mich jetzt entschlossen, das Board, welches sie benutzten nach zu bauen. 
So weit hat auch alles geklappt. Bis auf:

In der Schaltung wird ein Quarzoszillator mit einen Atmega644 verwendet.
Der Quarzoszillator: 
http://www.reichelt.de/Oszillatoren/OSZI-20-000000/3/index.html?;ACTION=3;LA=446;ARTICLE=13694;GROUPID=3174;artnr=OSZI+20%2C000000

Zu dem habe ich mich ins Thema Fuse eingelesen und habe mich für die im 
Anhang angehängte Konfiguration entschieden.

Dann ein kleines Bekanntes Testprogramm verwendet:
1
 
2
#define F_CPU 20000000UL 
3
#include <avr/io.h> 
4
#include <util/delay.h> 
5
#define LED_DDR  DDRB  
6
#define LED_PORT PORTB 
7
#define LED      PB0 
8
int main(){ 
9
   LED_DDR |=( 1 << LED ); 
10
   
11
   while( 1 ) { 
12
   _delay_ms( 1000 ); 
13
   LED_PORT |= ( 1<< LED ); 
14
   _delay_ms( 1000 ); 
15
   LED_PORT &= ~( 1 << LED ); 
16
   }
17
 
18
 }

Das Problem ist jetzt aber, das die LED nicht im Sekundentakt, sondern 
ca. im 8 Sekundentakt an bzw. aus geht.

Verringere ich die  F_CPU um eine 10er Potenz auf 2000000UL Scheint es 
eine „richtige“ Frequenz zu geben. Aber warum? Welche Einstellung liegt 
hier denn noch quer.

ps. Ich benutze das AVR-Studio 4(Schrecklich, aber die Uni will das so!) 
Und einen AVRISP mkii Programmer, falls wichtig ist.
Pps. Das der  Quarzoszillator richtig angeschlossen ist, davon geh ich 
aus, denn der kriegt ja ein Takt. Ansonsten Halt nur am XTAL1 
angeschlossen, XTAL2 ist unverbunden.

Ich hoffe mein Fehler ist nicht ganz zu blöd, aber ich hab lange gesucht 
und viel Probiert, aber nichts hat geholfen.

von (prx) A. K. (prx)


Lesenswert?

CKDIV8 Fuse => Takt wird durch 8 geteilt.

von Herbert J. (codemaker)


Lesenswert?

Dh das Häkchen da weg machen?
Sorry will nichts kaputt machen.

von (prx) A. K. (prx)


Lesenswert?

Exakt.

von Herbert J. (codemaker)


Lesenswert?

Vielen Dank, das hat meine Stimmung erheblich verbessert.
Und danke für die schnelle Antwort.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.