Gast
#4478383
Ich will mit 64 Samples pro 50-Hz-Periode den Effektivwert der Netzspannung ermitteln. - Wurzel aus dem Mittelwert der Quadrate. 1% Genauigkeit reicht. Das ist etwas Mathematik, aber nicht das Problem. Problem: Ich will es ohne Quarz machen! Wenn ich es mit dem internen Oszillator (CKDIV8: 1 MHz) machen will, muss ich in einem Kalibrierlauf die Samplerate auf 64 * 50 Hz = 3200 Hz justieren. Mein Kalibrierlauf erfasst die Anzahl der Interrupts bis sich 3 positive Nulldurchgänge zeigen. Sollwert = 3 * 64 = 192. Bei Abweichungen kann an an "2 Schrauben" drehen: A) Ich gleiche den CTC-Wert ab. Die Abgleichgenauigkeit ist ähnlich, wie mit OSCCAL, aber bei 928 kHz vom internen Oszillator habe ich nur 290 Takte zwischen zwei Sample-Interrupts. Mal sehen, ob das zum Quadrieren etc. reicht... B) Ich gleiche den RC-Oszillator mit OSCCAL auf ca. 1,024 MHz ab und erhalte die 3200 Hz mit Prescaler = 1/2 und CTC = 1/160. Vorteil: Ich kann fest mit 320 Takten pro Interrupt rechnen. Atmel rät: "that the MCU is kept in Reset during such changes". Sehr verwirrend! Ich kann den Wert doch nur im aktiven Lauf ändern! Hat jemand Erfahrungen mit einem OSCCAL-Abgleich beim Tiny25 im Betrieb???