Forum: Mikrocontroller und Digitale Elektronik Tiny25/Timer1/CTC


von H.Joachim S. (crazyhorse)


Lesenswert?

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...

von Alex S. (thor368)


Lesenswert?

JA

von Norbert S. (norberts)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

Auch moin :-)

An einen Bug im Chip glaube ich nicht, das wäre schon bekannt. 
AVR-Studio schon eher - aber er tut es ja auch in echt nicht.

von Alex S. (thor368)


Lesenswert?

um mich mal ähnlich freundlich und ausführlich zu halten: fuses -> 
tiny15 compatibillity mode -> OCR1A statt OCR1C wird als COM Register 
genutzt -> OCR1A ist = 0 -> TCNT1 läuft nicht hoch

von H.Joachim S. (crazyhorse)


Lesenswert?

Hm, das könnte gut möglich sein (habe mit dem Tiny25 noch nie was 
gemacht).
Jetzt habe ich meinen verstaubten Dragon rausgekramt, um mal mit 
debugwire reinzuschauen (fuse gelöscht)- muss erst mal sehen, wie ich 
den Tiny25 wiederbelebe :-)

von Cyblord -. (cyblord)


Lesenswert?

hast du am ende eine endlosschleife? sonst gehts auch nicht.

von Hannes L. (hannes)


Lesenswert?

H.joachim Seifert schrieb:
> muss erst mal sehen, wie ich
> den Tiny25 wiederbelebe :-)

Bei aktivem Debugger über das Menü den Punkt zum Beenden des DW-Modus 
anklicken.

Zum Timer-Problem fällt mir auch nix ein, Timer1 nutze ich (im Tiny85) 
meist mit PLL als DAC, Timer0 läuft frei durch mit beiden 
Compare-Interrupts.

...

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von der alte Hanns (Gast)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

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 :-(

von H.Joachim S. (crazyhorse)


Lesenswert?

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!

von Stefan E. (sternst)


Lesenswert?

H.joachim Seifert schrieb:
> Allerdings passiert genau dieses NICHT!

Allerdings steht dieser Satz auch unter "Timer/Counter1 in PWM Mode".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.