ATTiny durchlaufzeit -> Takt?

Gast #2531793
Hallo

Wie mache ich es, das ich einen halbwegs vernünftigen Takt 
zusammenbekomme?

Ich habe ein Programm, das unterschiedlich oft unterscheidlich lange 
braucht je nach dem halt.

Nun möchte ich aber gerne eben eine LED blinken lassen, je nach zusatnd 
des programmes, mal schnell - langsam usw.

Wie komme ich nun auf einen Halbwegs stablien Takt dafür?

Es geht hier nicht um µs, sonder eine genauigkeit von ein+- 100 ms ist 
total ausreichend.

Wie macht man das?

Timer1 ist definitiv schon in Verwednung für eine Soft Uart.

Sollte man dann den Timer2/Timer0 verwenden oder einfach Takte zählen?

verwendet wird ein ATTiny2313
#2531806
sn00py schrieb:

> Sollte man dann den Timer2/Timer0 verwenden oder einfach Takte zählen?

Wenn du einen Timer frei hast, dann benutz ihn doch!
Wenn du keinen Timer frei hast: Man kann durchaus einer Timer-ISR auch 
mehrere Aufgaben überantworten. Es ist nicht so, dass eine Timer-ISR nur 
eine Sache machen darf.

Für nicht benutzte Timer kriegst du von Atmel kein Geld zurück.

Timer-ISR aufsetzen, so dass sie zb alle 10 Millisekunden aufgerufen 
wird (oder was sich dann eben sonst bei dir einfach ausgeht).
Abhängig von einer globalen Variable 'Speed' wird einmal ein Zähler bis 
10 und ein anderes mal bis 20 gezählt, ehe in der Timer-ISR die LED 
umgeschaltet wird.

Eine simple Möglichkeit ist zb
1
#define BLINK_FAST   1
2
#define BLINK_SLOW   0
3

4
volatile uint8_t Speed;
5
uint8_t blinkCnt;
6

7
ISR( ... )
8
{
9
  blinkCnt++;
10

11
  if( ( Speed && blinkCnt > 10 ) ||
12
      ( !Speed && blinkCnt > 20 ) )
13
  {
14
    LED_PORT ^= ( 1 << LED_PIN );
15
    blinkCnt = 0;
16
  }
17
}

Im Hauptprogramm weißt du der variablen Speed einfach BLINK_FAST oder 
BLINK_SLOW zu, je nachdem was du haben willst.
#2531849
1
#define BLINK_FAST   10
2
#define BLINK_SLOW   20
3

4
volatile uint8_t Speed;
5
uint8_t blinkCnt;
6

7
ISR( ... )
8
{
9
  blinkCnt++;
10

11
  if( blinkCnt > Speed )
12
  {
13
    LED_PORT ^= ( 1 << LED_PIN );
14
    blinkCnt = 0;
15
  }
16
}
warum dann nicht gleich so, da können belibige Speedwerte definiert 
werden

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.