Tiny25/Timer1/CTC

OP #2498868
hab ich was übersehen?

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: CTC top=OCR1C
// OC1A output: Disconnected
// OC1B output: Disconnected
// Timer1 Overflow Interrupt: On
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
PLLCSR=0x00;

TCCR1=(1<<CTC1)|(1<<CS12);   //CTC_Mode, clk/8
GTCCR=0x00;
TCNT1=0x00;
OCR1A=0x00;
OCR1B=0x00;
OCR1C=0x63;          //10kHz/100µS

Der Timer bewegt sich weder in der Simulation noch in echt...
Moinsen,

nach Datenblatt müsste das tun, so wie ich das sehe.
Wenn ich alle Register in Bascom so setze klappert da auch nix im 
Simulator.
Hab ich wohl das selbe übersehen oder das ist ein Bug im Tiny25.
Der Simulator von Bascom ist bei sowas allerdings auch mit Vorsicht zu 
geniessen...

Gruß,
Norbert
OP
Chip lebt wieder, Timer0 läuft auch problemlos.
Aber der Timer1 ist durch nichts zum Leben zu erwecken, rührt sich kein 
Stück.
Mehrere prescaler ausprobiert - nichts.
CTC-Modus rausgenommen - nichts.
Tiny15-Kompatibiltät ist es auch nicht, gestern dachte ich noch, das 
wäre eine extra-fuse. Ist es ja aber gar nicht. Clk stand und steht auf 
int. 8MHz.
Endlosschleife ist natürlich auch drin.
Das gibts doch gar nicht, TCNT1 bleibt stur auf 0.
Gast
Vielleicht habe ich das Problem nicht verstanden, aber folgendes 
Programm lässt eine LED an B4 blinken:


.include "tn85def.inc"

  sbi  DDRB,4
  ldi  r16,(1<<CS13)+(1<<CS12)
  out  TCCR1,r16

loop:
  in  r16,TIFR
  sbrs  r16,TOV1
  rjmp  loop
  out  TIFR,r16
  sbi  PINB,4
  rjmp  loop
OP
So, langsam lichtet es sich...
AVR-Studio ist nicht gewillt, den Timer1 laufen zu lassen (hatte noch 
4.14 drauf, update auf 4.19 hat auch nichts daran geändert)
In der Realität sieht es so aus, als ob es funktioniert. Böse Falle: es 
gibt gar keinen Interrupt für den CTC-mode?? Bin deshalb stillschweigend 
davon ausgegangen, dass T1OV ausgelöst wird bei TCNT1=OCR1C, dem ist 
wohl nicht so...
Habe jetzt OCR1C=0x80 und OCR1A=0 und benutze den OCR1A-Interrupt, 
klappt.
Böser Doppelfehler, so kann man auch viel Zeit vertrödeln :-(
OP
Hm, jetzt wirds komisch:

"Timer/Counter1 acts as an up-counter, counting from $00 up to the value 
specified in the output compare register OCR1C, and starting from $00 up 
again. A compare match with OC1C will set
an overflow interrupt flag (TOV1) after a synchronization delay 
following the compare event."

War meine Vermutung doch richtig....
Allerdings passiert genau dieses NICHT!

Antwort schreiben

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