ATTiny85 Timer1 zaehlt nicht

Gast #1046361
Lesenswert?

Hallo,
bin kurz vorm verzweifeln...
Brauche in meinem Programm 2 Timer, Timer0 bekomme ich auch schoen 
initialisiert und er laeuft normal, aber bei Timer1 klemmts irgendwie.
Bekomme ihn zwar auch initialisiert, aber er zaehlt das TCNT1 nicht hoch 
und somit bekomme ich natuerlich auch nie meinen ersehnten Ueberlauf...

Hab die Vermutung irgendein Bit in einem Register setzen zu muessen, 
aber trotz mehrmaliger Datenblattsitzung hab ich den Haken nicht 
gefunden. Hoffe mir kann hier jemand auf die Spruenge helfen.

Initialiesere die Timer wie folgt...
...
TCCR1 = 1;            // no prescaler
TCNT1=0x00;     // reset TCNT1

TCNT0 = 0;          //  TCNT0 Timer auf 64*256 einstellen
TCCR0A = 0;    // Timer 0 normal mode
TCCR0B = 3;          // clock/64

TIMSK |= (1<<TOIE1);
TIMSK |= (1<<TOIE0);
....

Danke vorab
PS nutze AVR Studio, Win AVR, und will nen ATTiny85 zum zaehlen bringen
Gast #1046462
Lesenswert?

Im Simulator funktioniert es nicht.
Der Prescaler wird eingestellt, ich kann auch den TCNT1 Wert manuell 
aendern, aber er wird nicht hochgezaehlt...
Koennte es denn sein, das der Simulator nur spinnt und ich garnix 
uebersehen habe? Werde es mal versuchen per Hardware zu testen indem ich 
im der ISR ein LED setze...
Meld mich dann nochmal
Gast #1046482
Lesenswert?

Hallo dann nochmal,
also habe in der ISR des Timer1_Overflow jetzt mal versucht ein LED 
einzuschalten, aber der PIN gibt nichts von sich.
Sieht also wirklich nach nem programmierfehler aus, bzw. einem 
uebersehenem Bit?
hatte denn schonmal jemand dieses Problem bzw. den Timer1 des ATTiny85 
genutzt und sieht meinen Fehler?
Danke fuer jeden Tip vorab!
Gast #1046510
Lesenswert?

Also, ich komm nicht dahinter.
Werd jetzt einfach mal abschalten und morgen mit frischem Kopf dran 
gehen. Vielleicht hilft das!?
Vielleicht hat ja jemand noch den passenden Hinweis, der mich morgen
dann gluecklich macht;)
Schoenen abend allen...
Gast #1046566
Lesenswert?

Ohne die Fuses verstellt zu haben bringt nachfolgendes Programm an PB4 
ein Rechtecksignal mit ca. 1950 Hz:


.def  tmp0  = r16

.cseg

.org  0
  rjmp  reset

.org  OVF1addr
  sbi    PINB,4    ; toggle
  reti

reset:
  sbi    DDRB,4
  ldi    tmp0,(1<<CS10)
  out    TCCR1,tmp0
  ldi    tmp0,(1<<TOIE1)
  out    TIMSK,tmp0
  sei
  rjmp  pc
Gast #1047085
Lesenswert?

Hallo,
also habe heute dann festgestellt, dass nur der Simulator nicht will, 
aber in der Hardware funktioniert der Timer normal. Hab beim testen 
gestern Quatsch gemacht, passiert schonmal.
Also fuer jeden mit aehnlichem Problem, der Simulator des AVR STudio mag 
den ATTiny85 nicht so gerne...

@Spess
Werde dem Tip mal nachgehen. Hab gerade auf der atmel-site darueber 
gelesen und muss sagen ich haette nicht gedacht, das die Simulatoren so 
viele Stolperdraehte bereithalten(auch der Simulator2).

Danke auf jeden Fall, dachte gestern schon ich sei total bekloppt.
Gast #1815015
Lesenswert?

Ich hab den Fehler gefunden.

Der Simulator löscht jedes mal nach einen Interruptsprung von Timer 1 
das Globale Interrupt Flag. einfach in den Interrup-Sub "sei" 
reinschreiben.

TIM1_OVF:  ;Timeroverflow 1
  sei     ; Globales Interrupt freigeben
  push r16 ;Sreg sichern....

  IN r16,SREG
  push r16
       ...
       ...
       ...

        pop r16
  OUT SREG,r16
  pop r16


reti

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren