mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATTiny85 Timer1 zaehlt nicht


Autor: verstehgarnixmehr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert es im Simulator nicht oder in Hardware?

Autor: verstehgarnixmehr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: verstehgarnixmehr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: verstehgarnixmehr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Benutze mal den Simulator2. Der andere scheint Probleme mit dem ATTiny85 
zu haben.

MfG Spess

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: verstehgarnixmehr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kein_Name (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.