Forum: Mikrocontroller und Digitale Elektronik "Die genaue Sekunde" - funktioniert nicht?


von Dieter Bohlen (Gast)


Lesenswert?

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
}

von RyouArashi (Gast)


Lesenswert?

Du müsstest den Timer in der ISR wieder auf Null setzen,
damit er wieder von vorne beginnt.

TCNT1 = 0;

von holger (Gast)


Lesenswert?

Dazu musst du den Timer auf CTC stellen

  TCCR1B |= (1<<WGM12) | (1<<CS12);    // /256er Zähler

Das geht aber nur mit OCR1A und TIMER1_COMPA_vect.

von STK500-Besitzer (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?


von Falk B. (falk)


Lesenswert?

@ 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

von STK500-Besitzer (Gast)


Lesenswert?

>Wird eng.

Und das, wo ich nur gesehen habe, dass in einer ISR etwas mit "LCD..." 
aufgerufen werden soll.
Danke fürs Rechnen, Falk.

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.