mikrocontroller.net

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


Autor: Niko (Gast)
Datum:

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

Autor: ...HanneS... (Gast)
Datum:

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

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.