ATmega328p - Input Capture - Flanke wird übersehen

OP #4923509
Lesenswert?

Hallo!

Ich versuche mich gerade an einer Frequenzmessung mit der Input Capture 
Funktion des Timer1 an einem ATmega328p.

In nachfolgendem kurzen Programm habe ich den Kern meines Problems 
zusammengefasst, bei 70 Hz Rechtecksignal am ICP1-Pin funktioniert noch 
alles, bei einer Frequenz von 100 Hz werden schon (reproduzierbar) 
Flanken ausgelassen (siehe Oszibilder) und ab 200-300 Hz, wird die ISR 
gar nicht mehr aufgerufen.

Ich kann mir dieses Verhalten wirklich nicht erklären, weiß jemand Rat?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/pgmspace.h>
4

5
//Ueberlaufzaehler
6
volatile uint8_t ovf_t1 = 0;
7

8
//Initialize timer
9
void InitTimer1(void)
10
{
11
    //cnt init
12
    TCNT1=0;
13
    //steigende Flanke, noise canceler und kein Vorteiler
14
    TCCR1B|=(1<<ICES1)|(1<<ICNC1)|(1<<CS10);
15
    //Input Capture und Overflow Interrupt enable
16
    TIMSK1|=(1<<ICIE1)|(1<<TOIE1);
17
    //Bereits akt. Interrupts loeschen
18
    TIFR1 |= (1<<TOIE1)|(1<<ICIE1);
19
}
20

21
//capture ISR
22
ISR(TIMER1_CAPT_vect)
23
{
24
    PORTB ^= (1 << PB5);
25
}
26

27
//Overflow ISR
28
ISR(TIMER1_OVF_vect)
29
{
30
  ovf_t1++;
31
}
32

33
void io_init()
34
{
35
  DDRB |= (1 << PB5);
36
}
37

38
int main(void)
39
{
40
  io_init();
41
  //Frequenzmessung mit Timer1 an D8 initialisieren und starten
42
  InitTimer1();
43
  
44
  //globale Interruptfreigabe
45
  sei();
46
  
47
  while(1)
48
  {  
49
  }
50
}
Angehängte Dateien:
Gast #4923661
Lesenswert?

Stefan H. schrieb:
> bei 70 Hz Rechtecksignal am ICP1-Pin funktioniert noch
> alles, bei einer Frequenz von 100 Hz werden schon (reproduzierbar)

Ja, bei 70 und 100 Hz sprechen wir noch nicht von Highspeed :-)

Uwe D. schrieb:
> Es gibt hier einen hilfreichen Artikel der Dir sicher weiter hilft, denn
> Deine genannten Probleme werden auch besprochen:
>
> https://www.mikrocontroller.net/articles/High-Speed_capture_mit_ATmega_Timer
#4923785
Lesenswert?

Naja, in dem Artikel werden sehr klar die Gründe für die möglichen 
Lösungswege beschrieben, warum das eine oder andere so seine Grenzen 
hat.
Selbst bei 100 Hz kann es ein Thema sein, wenn der Prozessor mit < 1MHz 
läuft usw.

Wer Highspeed baut, beherrscht vermutlich schon den "normalen Weg"...

Auf jeden Fall staune ich immer wieder, wie viele und vor allem 
umfassende Beiträge hier zu finden sind.

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