50ms Timer für AT89S8252

#449713
Lesenswert?

Welche Zeit kriegst du den hin?

Das Prinzip eines Timers ist es doch, dass in regelmässigen
Zeitabständen eine Interrupt Funktion aufgerufen wird.
Kriegst du die gewünschte Zeit nicht direkt hin, dann
musst du halt in der ISR die Anzahl der Aufrufe mitzählen.
Wenn die ISR zb alle 1 ms passiert, dann sind nach dem
50-ten Aufruf 50ms vergangen.
1
unsigned char NrCalls;
2

3
ISR( ... )
4
{
5
  NrCalls++;
6
  if( NrCalls == 50 ) {  // das war der 50 te Aufruf, also
7
                         // sind 50 ms vergangen
8
    NrCalls = 0;
9

10
    // was auch immer du in 50 ms Intervallen tun möchtest
11
  }
12
}

  
#449725
Lesenswert?

> Wie wären denn die Timereinstellungen für einen 1ms-Timer?

Versteif dich nicht auf die 1ms. Die waren nur ein Beispiel.
Setze einen Timer auf, der regelmässig einen Interrupt
auslöst und rechne dir aus, in welchen Zeitabständen
das der Fall ist. Danach dividierst du die 50 ms durch
diese Zahl und weist wie weit du zählen musst.
#449758
Lesenswert?

> Das mit dem Interrupt bzw. einem Software-Timer ist ja nicht das
> Problem.
>
> Ich bekomm nur für den Timer nie die richtigen Einstellungen zusammen.

Das versteh ich jetzt nicht.
Schaffst du es einen Interrupt auslösen zu lassen oder schaffst
du es nicht?

Das kann doch nicht so schwer sein, einen Timer so zu
initialisieren, dass er zb. bei einem Overflow auslöst.
Wenn ich bei Google "8051 timer interrupt" eingebe
kriege ich massenhaft Beispiele dafür. Die Details
sind vielleicht Compiler-spezifisch, aber die grundsätzliche
Vorgangsweise ist ja nicht vom Compiler abhängig. Man schreibt
Werte in Konfigurationsregister des µC und dann zählt der
Timer schon munter vor sich hin. Die Interrupts noch freigeben
und das wars dann auch schon.

Und um das auch klar zu sagen:
Ich werd dir das Ding nicht schreiben.
Die 5 Initialisierungen wirst du ja wohl noch alleine
hinkriegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren