Atmega8 Timer in C

Gast #3507327
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
Gast #3507367
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.
Gast #3507376
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.
Gast #3507514
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!
Gast #3507516
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

Antwort schreiben

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