"Die genaue Sekunde" - funktioniert nicht?

Gast #735825
Hallo, hab mir den Artikel "die genaue Sekunde" durchgelesen, aber 
irgendwie zählt der Controller nicht richtig, viel zu langsam:
ich kann OCR1B auch auskommentieren, dann zählt er genausoschnell. was 
ist da los? Controller ist nen atmega8.
1
#include <avr/io.h>
2
#include "lcd.h"
3
#include <avr/interrupt.h>
4

5

6
uint8_t s;
7
char sek[3];
8

9
void timer_init() {
10
  TCCR1B |= (1<<CS12);    // /256er Zähler 
11
  //OCR1B = 8000000/256 -1; //8MHz
12
  TIMSK|=1<<OCIE1B;      //Timer Interrupt enable
13

14
}
15

16
ISR(TIMER1_COMPB_vect) { 
17
    
18
  s++;
19
  lcd_clrscr();
20
  lcd_puts("Sek.");  //Displayausgabe
21
  itoa(s,sek,10);
22
  lcd_puts(sek);
23
  
24
}
25

26

27
int main(void) {
28

29
DDRB=0xff;
30
PORTB=0;
31
lcd_init(LCD_DISP_ON);
32
timer_init();
33
lcd_puts("Sek.");
34
sei();
35

36

37

38

39
//mainloop
40
for(;;) {}
41

42

43
}
#735973
@ STK500-Besitzer (Gast)

>Wenn mal die LCD-Ausgabe die ISR nicht auch noch ausbremst...

Nun. der OP will 256 Ticks pro Sekunde, macht ~ 3,9ms Periodendauer. 
Innerhalb dieser Zeit soll
1
  lcd_clrscr();

Das dauert ofiziell mind. 1,64ms.

1
  lcd_puts("Sek.");  //Displayausgabe


Mind 40us/Zeichen + Overhead, ich schätze mal 300.500us gesamt.

1
  itoa(s,sek,10);

Hier stecken einige Divisionen drin, die dauern auch einige hundert us. 
Geschätzt 500us.

1
  lcd_puts(sek);

Dito, 500us.

Macht in Summe etwa 3,irgendwas ms. Wird eng. Und vor allem, wer braucht 
ein LCD-Update mit 256 Hz? 5 Hz reichen dicke.

MFG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.