Gast
#2150630
Hallo! Hoffe, ich bin hier richtig.
Ich habe ein Programm geschrieben, mit dem ich die Pulse und auch die
Periode eines PWM-Signals (von einem SMT160-Temperatursensor) messen
kann. Ich habe das mit einem Counter realisiert. Es funktioniert auch
ziemlich gut, nur frage ich mich, ob ich vielleicht einige wenige (viele
können es nicht sein, da die Temperatur schon recht genau ist) Takte
irgendwie verliere, z.B. beim Wechsel in die while-Schleife, oder ob das
wirklich alle sind, die ich da zähle.
if (atoi(argval[1]) == 1)
{
PORTC |= (1<<PC3);
cli();
loop_until_bit_is_clear(PIND,PD2);
loop_until_bit_is_set(PIND,PD2);
while( (PIND & (1<<PD2)) )
{
flankep++; //hochzählen so lange positive flanke
}
while( !(PIND & (1<<PD2)) )
{
flanken++; //hochzählen solange negative flanke
}
sei();
periode = flankep + flanken;
sprintf(zeichenpuffer, "%s: P %u N %u T %u", "\n\rAN", flankep,
flanken, periode);
} else {
PORTC &= ~(1<<PC3);
strcpy(zeichenpuffer, "\n\r AUS");
}
Hat jemand vielleicht noch eine bessere/genauere/schlauere Lösung dazu?
Würd mich freuen!