Attiny 85 Timer 1 startet nicht

Gast #6602851
Lesenswert?
• ▲
▼
Moin Leute,

bin gerade im AVR-Studio im Simulator am testen.
Könnt ihr mir sagen wieso der nicht in den Interrupt springt?
Hab schon einiges getestet aber nichts hat funktioniert.
Hatte mir da einen Breakpoint gesetzt. Auch nach 100.000 Zyklen ist der 
noch nicht in den Interrupt reingesprungen.
1
#define    F_CPU      8000000L
2
#include  <avr\io.h>
3
#include  <stdlib.h>
4
#include   <avr/interrupt.h>
5

6
volatile   int32_t zahl=0;
7

8
ISR(TIMER1_OVF_vect)
9
{
10
    TCNT1 = 128;
11
    zahl++;
12
}
13

14
void timer1_init(void)
15
{
16
  TCCR1 |= (1<<CS10);        // Prescaler=1
17
  TIMSK |= (1<<TOIE1);      // Timeroverflow Interrupt aktiv
18
  TCNT1 = 128;
19
  sei();
20
}
21

22
int main(void)
23
{
24
  timer1_init();
25

26
  while(1)
27
  {
28
    zahl++;
29
  }
30
}
#6602886
Lesenswert?
• ▲
▼
Peter schrieb:
> Wenn ich den Simulator anhalte, ist der Cycle Counter hochgezählt, aber
> der TCNT1 steht auf den initialisierten 128.

Ich weiß nicht, wie gut der Simulator den Timer nachbildet, und wo/wann 
du TCNT1 anschaust.
Hast du ein Oszilloskop? Dann könntest du in der Interruptroutine ein 
I/O-Pin toggeln und schauen, ob sich was bewegt. Dann siehst du, was die 
Hardware wirklich macht.
Gast #6602904
Lesenswert?
• ▲
▼
Moin,
bei dem Tiny musst du TIM1_OVF_vect nutzen. Außerdem solltest du den CTC 
Modus nutzen wenn du nur 128 zählen willst. Das zurücksetzen auf 127 ist 
nicht so schön, da bis zum zurücksetzen auch Zeit vergangen ist und ggf. 
durch andere Interrupts noch ne größere Verzögerung eintritt.

Viele Grüße
#6602907
Lesenswert?
• ▲
▼
Stefan ⛄ F. schrieb:
> Ich denke, du musst die ISR "TIM1_OVF_vect" nennen.
Sollte beides gehen. Auszug (wenn das noch einigermaßen aktuell ist):
1
/* $Id: iotnx5.h 2269 2011-12-29 08:07:25Z joerg_wunsch $ */
2

3
/* Timer/Counter1 Overflow */
4
#define TIM1_OVF_vect_num    4
5
#define TIM1_OVF_vect      _VECTOR(4)
6
#define TIMER1_OVF_vect_num    4
7
#define TIMER1_OVF_vect      _VECTOR(4)
8
#define SIG_OVERFLOW1      _VECTOR(4)
Gast #6602945
Lesenswert?
• ▲
▼
Also am lebenden Objekt habe ich es noch nicht getestet. Auch mit 
TIM1_OVF_vect ändert es nichts. Ob der Simulator so funktioniert wie ich 
mir das vorstelle ist natürlich die andere Frage.

Also mein eigentliches Ziel ist ein Taktgeber für einen Schrittmotor mit 
flexibler Frequenz. Am liebsten natürlich über den ganzen möglichen 
Frequenzbereich des MC, damit ich die kombi auch für andere Projekte 
verwenden kann.

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.