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!
Am genauesten wird's mit input capture gehen, sofern dein geheimer Prozessor sowas kann.
ah sorry! ich benutz einen atmega 168! der kann sowas, ja, aber ich hab die funktion noch nicht so ganz durchblickt. wenn du also dafür nen verständliches beispiel hast, wärs cool. die beispiele, die ich bisher zum input capture gefunden habe, haben mir noch nicht so geholfen, aber ich bin da noch dran.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.