Atmega32 Clock

OP #2805503
Lesenswert?
• ▲
▼
Hi Leute,

ich komme  nicht weiter.
Hab/ will meinen Atmega32 auf den 8Mhz Quarz umstellen.

Fuses
Low    0xFD
High   0xC9

Ich kann die Fuses eh umstellen wie ich will, er läuft anscheinend immer 
mit dem gleichen Takt.
Mit dem Oazi mess ich ca. 7,6 Mhz am Quarz, das dürfte also passen denke 
ich. C am Quarz sind 22pF nach Datenblatt.

Teste mit diesem Programm (LED toggeln)
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
ISR(TIMER1_COMPA_vect)
5
{
6
  PORTD ^= 0xff;
7
}
8

9
int main(void)
10
{
11
  DDRD = 0xff;
12
  PORTD = 0xff;
13
  
14
  TCCR1A = (1<<WGM12);
15
  TCCR1B = (1<<CS12) | (1<<CS10);  
16
  TIMSK = (1<<OCIE1A);
17
  OCR1A = 7812;
18
  
19
  sei();
20
  
21
    while(1)
22
    {
23
        //TODO:: Please write your application code 
24
    }
25
}

Nach meinen Berechnungen müsste er dann mit 8Mhz/(1024*7812) = ca. 1Hz 
toggeln.
Wenn ich messe sind es ca. 8s, also 1/8 Hz, was mich auf den internen 
Clock von 1Mhz schließen lässt.
Allerdings ist das komische, ich kann OCR1A ändern, aber die 
Toggelfrequenz bleibt gleich.

Steh ich jetzt also mit dem Programm auch noch auf dem Kopf?
Vielen Dank für eure Hilfe.

Grüße Joe
#2805567
Lesenswert?
• ▲
▼
amateur schrieb:
> Kann es sein, dass Du die "div8-Sicherung" nicht rausgeschaubt hast?
> Ich benutze die normale Entwicklungsumgebung und kann deine Fuses nicht
> "umrechnen".


Mega32 hat keine.
(War mir zwar ziemlich sicher, hab aber trotzdem nochmal nachgeschaut)


M.E. ist das Programm korrekt.
Sicher, dass es auch in den M32 gebrannt wird? Irgendwelche Warnungen 
beim Compilieren?
#2805581
Lesenswert?
• ▲
▼
Brenn mal das da rein
1
#define F_CPU 8000000
2
 
3
#include <avr/io.h>
4
#include <util/delay.h>
5
 
6
// Hier die tatsächlich verwendeten Parameter angeben
7
 
8
#define LED_PORT    PORTD
9
#define LED_DDR     DDRD
10
#define LED_PIN     PD0
11
 
12
int main()
13
{
14
   LED_DDR |= 1 << LED_PIN;
15
 
16
   while (1)
17
   {
18
      LED_PORT ^= 1 << LED_PIN;
19
      _delay_ms(1000);
20
   }
21
 
22
   return 0;
23
}

(damit sind mal alle Fehler, die durch falsche Timereinstellung oder 
falscher ISR-Name entstehen können vom Tisch.)

Led muss 1 Sekunde ein, 1 Sekunde aus. Dann läuft der µC mit 8Mhz. Wenns 
wieder nur 8 Sekunden sind, dann läuft der definitiv auf 1Mhz
(Kannst du auch verifizieren. Schreib bei F_CPU 1000000 rein, und du 
musst wieder die 1 Sekunde haben)

Optimierung auf -Os nicht vergessen!
OP #2805597
Lesenswert?
• ▲
▼
Karl Heinz Buchegger schrieb:
> Brenn mal das da rein
> #define F_CPU 8000000
>
> #include <avr/io.h>
> #include <util/delay.h>
>
> // Hier die tatsächlich verwendeten Parameter angeben
>
> #define LED_PORT    PORTD
> #define LED_DDR     DDRD
> #define LED_PIN     PD0
>
> int main()
> {
>    LED_DDR |= 1 << LED_PIN;
>
>    while (1)
>    {
>       LED_PORT ^= 1 << LED_PIN;
>       _delay_ms(1000);
>    }
>
>    return 0;
> }
>
> (damit sind mal alle Fehler, die durch falsche Timereinstellung oder
> falscher ISR-Name entstehen können vom Tisch.)
>
> Led muss 1 Sekunde ein, 1 Sekunde aus. Dann läuft der µC mit 8Mhz. Wenns
> wieder nur 8 Sekunden sind, dann läuft der definitiv auf 1Mhz
> (Kannst du auch verifizieren. Schreib bei F_CPU 1000000 rein, und du
> musst wieder die 1 Sekunde haben)
>
> Optimierung auf -Os nicht vergessen!

Damit blinkt die LED mit 0,5Hz, passt also! 8Mhz Takt.
Watchdog ist aus.

Dann versteh ich bei meinem Programm die langsame Frequenz nur nicht...
Aber schon mal Danke Karl-Heinz :-)

Antwort schreiben

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