Forum: Compiler & IDEs Timer timed falsch


von Tom (Gast)


Lesenswert?

Hi,

ich will mit meinem ATmega8 ne Uhr baun. Hab jetzt aber ein Problem mit 
dem Programm dafür.
Folgender Code:
1
#include <avr/io.h>  
2
#include <avr/interrupt.h>
3
#include <stdint.h>
4
5
volatile uint8_t Sekunde;
6
7
void Start_Timer( void )
8
{
9
  TIMSK |= (1 << OCIE1A);      // CTC-Interrupt zulassen
10
  TCCR1B = (1 << WGM12) | (1 << CS12);  // CSC Modus; PSC = 256
11
  OCR1A = 62499;        // 16 MHz / 256 - 1
12
}
13
14
// Timer-Interrupt
15
ISR( TIMER1_COMPA_vect )
16
{
17
  ++Sekunde;
18
}
19
20
int main(void)
21
{
22
  DDRD = 0xFF;      // Port D als Ausgang
23
  
24
  Start_Timer();
25
  sei();
26
  
27
  for( ;; ){
28
    PORTD = Sekunde;
29
  }
30
}

Das ganze klappt auch ganz gut, nur leider um den Faktor ~10 zu langsam. 
Und ich find den Fehler nicht! Kann mir vielleicht jemand helfen?

Danke!

von (prx) A. K. (prx)


Lesenswert?

Wird der überhaupt mit 16MHz getaktet? Ab Werk sind es interne 1MHz oder 
so.

von Tom (Gast)


Lesenswert?

Sry, hab ich vergessen. Aber ja, ist ein 16.000 MHz Quarz dran. Und ich 
hab heut schon mind. dreimal nachgeschaut ;-)

von Tom (Gast)


Lesenswert?

Wobei mir grad einfällt, dass ich noch keine Fuses gesetzt hab...

von Tom (Gast)


Lesenswert?

Ach ja... mit richtigen Fuses klappt's auf einmal... Sachen gibt's^^
Und dafür zerbricht man sich Stundenlang den Kopf -.-

Vielen Dank für die Hilfe!

Hätt mir ruhig eher jemand sagen können, dass ich gestern nen neune µC 
eingebaut hab ;-)

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.