Forum: Mikrocontroller und Digitale Elektronik Atmega8 Timer in C


von Racer443 (Gast)


Lesenswert?

Hey, habe vor ca. einem Jahr schon mal einen atmega8 in Assembler 
probiert, nachdem ich mich gestern und heute wieder ein bisschen 
reingearbeitet habe, wollte ich mal in C programmieren.
Ich habe das AVR-GCC Tutorial mal angefangen und bisher hat auch alles 
geklappt, nun bin ich beim Thema Timer (habe nicht alles chronologisch 
abgearbeitet)

Unter Overflow Interrupt steht folgender Code:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
 
4
int main(void)
5
{
6
  // Timer 0 konfigurieren
7
  TCCR0 = (1<<CS01); // Prescaler 8
8
 
9
  // Overflow Interrupt erlauben
10
  TIMSK |= (1<<TOIE0);
11
 
12
  // Global Interrupts aktivieren
13
  sei();
14
 
15
  while(1)
16
  {
17
    /* Sonstige Aktionen */
18
  }
19
}
20
 
21
/*
22
Der Overflow Interrupt Handler
23
wird aufgerufen, wenn TCNT0 von
24
255 auf 0 wechselt (256 Schritte),
25
d.h. ca. alle 2 ms
26
*/
27
#ifndef TIMER0_OVF_vect
28
// Für ältere WinAVR Versionen z.B. WinAVR-20071221 
29
#define TIMER0_OVF_vect TIMER0_OVF0_vect
30
#endif
31
 
32
ISR (TIMER0_OVF_vect)
33
{
34
  /* Interrupt Aktion alle
35
  (1000000/8)/256 Hz = 488,28125 Hz
36
  bzw.
37
  1/488,28125 s = 2,048 ms  
38
  */
39
}

Der Compiler sagt aber, dass er TCCR0 gar nicht kennt.
Muss ich das irgendwie noch extra deklarieren?

Ich nutze übrigens AVR Studio.


Gruß
Racer443

von Mirki (Gast)


Lesenswert?

Zwei Sachen ..... Schau ob du das richtige device im avr Studio 
angegeben hast und  schau ins Datenblatt vom atmega8 ob du die richtigen 
Register verwendest.

von Mike (Gast)


Lesenswert?

Racer443 schrieb:

> Muss ich das irgendwie noch extra deklarieren?
Du mußt dem Compiler irgendwie verraten, welchen Prozessor du benutzt. 
Die Registerdefinition für den ATmega8 steht in iom8.h, die bei 
richtiger Prozessordefinition durch io.h eingebunden wird.

> Ich nutze übrigens AVR Studio.
AVR Studio (Version) ist die Entwicklungsumgebung. Dein Compiler könnte 
dann eine Version vom AVR GCC sein.

von Racer443 (Gast)


Lesenswert?

Mirki schrieb:
> Schau ob du das richtige device im avr Studio
> angegeben hast und  schau ins Datenblatt vom atmega8 ob du die richtigen
> Register verwendest.
>

Hm ja da hätte ich auch selber draufkommen können...war tatsächlich der 
ATtiny2313 eingestellt, weil ich auf dem davor was getestet hatte.

Danke an euch!

von Racer443 (Gast)


Lesenswert?

Racer443 schrieb:
> Mirki schrieb:
>> Schau ob du das richtige device im avr Studio
>> angegeben hast und  schau ins Datenblatt vom atmega8 ob du die richtigen
>> Register verwendest.
>>
>
> Hm ja da hätte ich auch selber draufkommen können...war tatsächlich der
> ATtiny2313 eingestellt, weil ich auf dem davor was getestet hatte.
>
> Danke an euch!

Manchmal sieht man eben den Wald vor lauter Bäumen nicht mehr :D

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.