Forum: Mikrocontroller und Digitale Elektronik Problem mit Timer *** verzweifel


von Niko (Gast)


Lesenswert?

hallo leute

doppelposting ich weis sorry hierfür aber auf den anderen betreff
wollte keiner antworten.
also nochmals zu meinem problem.
ich stelle meinen timer 1 auf CK/1 also laut DB TCCR1B=0x01;
dann stelle ich den überlauf ein einmal im reset und einmal im
interrupt.wie folgt

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{

TCNT1H=0xff;
TCNT1L=0xcd;

led6=!led6;

}// Timer 1


und die zeit stimmt nur manchmal kommt ganz drauf an welchen wert ich
bei tcnt1l nehme.
wenn ich zb. 0x00 nehme stimmt die zeit nehme ich 0xf5 stimmt sie
überhaupt nicht. ich habe bisher noch keine zeit unter 10µs gehabt kann
der controller evtl. nicht schneller ???

ohja zur hardware µC ist AT90S8535 und einen externen 8mhz quarz.

kann mir vileicht jemand helfen ??

von ...HanneS... (Gast)


Lesenswert?

Hi...

Kannst du das mal in AVR-Studio durchsimulieren?

Trotzdem:
Welcher AVR?
Welcher Takt?
Kann es sein, dass du einen neuen Int aufrufen willst, bevor die
aktuelle ISR fertig ist?

Bei 0xf5 bleiben dir 11 Takte bis zum Überlauf.
Sehen wir es mal in Assembler (effektiver wird C kaum sein).
4...5 Takte zum Erkennen des Interrupts
3     Takte für RJMP ISR (am Int-Vektor)
1...5 Takte für SREG sichern (1 bei Exclusiv-Register + 2 x PUSH)
2...4 Takte für Timer-Reload (2 x OUT mit Excl. Register + 2 x LDI)
4     Takte zum LED toggeln (IN r16,ledport, LDI r17,6, EOR r16,r17,
      OUT ledport,r16
1...5 Takte für SREG wiederherstellen
4     Takte für RETI
------
19..30 Takte...

Und ich denke mal, dass ein C-Compiler noch einige andere
Vorbereitungen trifft, wenn eine ISR aufgerufen bzw. beendet wird, z.B.
einige Register PUSHer/POPen, um sich "Bewegungsfreiheit" zu
schaffen... Mit deinen 11 zur Verfügung gestellten Takten wird das also
nix, nichtmal in Assembler...

...HanneS...

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.