ATMega32 CTC Mode ?

Gast #2379304
Lesenswert?
• ▲
▼
Hey,

Da der selbst geschrieben Code einfach nich compillierbar war, hab ich 
mal probiert ein Fertigen Code vom AVR Totorial zu kompillieren.
ABER: Wir bekommen nur ein Fehlercode. Hat jemand einen Tipp für uns,
was wir übersehen haben ?
AVR: Atmega32
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
 
4
int main(void)
5
{
6
  // Timer 0 konfigurieren
7
  TCCR0A = (1<<WGM01); // CTC Modus
8
  TCCR0B |= (1<<CS01); // Prescaler 8
9
  // ((1000000/8)/1000) = 125
10
  OCR0A = 125-1;
11
 
12
  // Compare Interrupt erlauben
13
  TIMSK |= (1<<OCIE0A);
14
 
15
  // Global Interrupts aktivieren
16
  sei();
17
 
18
  while(1)
19
  {
20
    /*Hier kann die aktuelle Zeit
21
      ausgeben werden*/
22
  }
23
}
24
 
25

26

27
ISR (TIMER0_COMPA_vect)
28
{
29
 
30
}

Der Errorcode:
1
Compiling C: main.c
2
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o 
3
main.c: In function 'main':
4
main.c:7: error: 'TCCR0A' undeclared (first use in this function)
5
main.c:7: error: (Each undeclared identifier is reported only once
6
main.c:7: error: for each function it appears in.)
7
main.c:8: error: 'TCCR0B' undeclared (first use in this function)
8
main.c:10: error: 'OCR0A' undeclared (first use in this function)
9
main.c:13: error: 'OCIE0A' undeclared (first use in this function)
10
main.c: At top level:
11
main.c:27: warning: 'TIMER0_COMPA_vect' appears to be a misspelled signal handler
12
make.exe: *** [main.o] Error 1
13

14
> Process Exit Code: 2
15
> Time Taken: 00:01

Irgendwelche Tipps oder Lösungsvorschläge??? Wäre echt dankbar bin 
nähmlich schon halber am verzweifeln :)

Greetings :]
Gast #2379333
Lesenswert?
• ▲
▼
Uwe S. schrieb:
> Ok?

Nee leider nicht,
hab mich heute morgen schon mit dem Datenblatt beschäftigt und die 
Register vergliechen. Ich glaub dass könne was mit TCCR0A/B zu tun 
haben, denn die Register/Registerunterteilung findet sich weit und breit 
nicht im Datenblatt. Oder muss man anstatt TCCR TCNT benutzen? Hab 
leider noch nie mit dem Controllertyp gearbeitet.
Gast #2379365
Lesenswert?
• ▲
▼
Marv schrieb:
> Irgendwelche Tipps oder Lösungsvorschläge??? Wäre echt dankbar bin
> nähmlich schon halber am verzweifeln :)

Nimm als Arbeitshypthese: Code ok, Registernamen falsch
Die Namen, die der Compiler für den ATmega32 kennt, stehen in iom32.h

Dann anhand des Datenblattes oder iom32.h gucken, in welchem Register 
die Bits liegen. Der Sprungvektor dürfte TIMER0_COMP_vect heißen.
Gast #2379368
Lesenswert?
• ▲
▼
Jap da hab ich geschaut aber da gibts trzd. kein Programmbeispiel xD. So 
lässts sichs zumindest schonmal kompillieren:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
 
4
int main(void)
5
{
6
  // Timer 0 konfigurieren
7
  TCCR0 = (1<<WGM01), (1<<CS01); // CTC Modus
8
    // ((1000000/8)/1000) = 125
9
  OCR0 = 125-1;
10
 
11
  // Compare Interrupt erlauben
12
  TIMSK |= (1<<OCIE0);
13
 
14
  // Global Interrupts aktivieren
15
  sei();
16
 
17
  while(1)
18
  {
19
    /*Hier kann die aktuelle Zeit
20
      ausgeben werden*/
21
  }
22
}
23
 
24

25

26
ISR (TIMER0_COMP_vect)
27
{
28
 
29
}
Obs funktioniert bleibt noch dahingestellt xD

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.