Hmm, naja, 400Hz und 1000 Schritte sind 400kHz, 100Hz dann 100kHz.
16MHz / 400kHz = 40
16MHz / 100kHz = 160
Haut also schonmal nicht mit dem Prescaler hin.
Die Prescaler in den AVR Timern sind ja ohnehin sehr grob.
16MHz / 8 = 2 MHz, 2MHz / 400Hz = 5000, 2MHz / 100Hz = 20000
Also ein Prescaler, unterschiedliche TOP Werte.
Und anders herum ergibt sich 2Mhz / 1000 = 2kHz Max, 2MHz/65500 = 30Hz
Min
PWM ist so kein Problem und die Auflösung ja schon recht fein mit
mindestens 0,1%.
Damit noch Input-Capture von 1Hz bis ca 7kHz gleichzeitig?
Nach unten geht das auch mit Variablem TOP Wert, der Timer läuft
ziemlich häufig über, was man berücksichtigen muss.
Bei 1Hz und TOP=5000 läuft der Zähler 500 Mal über...
Richtig wild wird es wenn man berücksichtigen muss, dass sich TOP
während der Erfassung ändern kann.
Bei 2MHz Timer-Takt sind 7kHz nur noch 286 Ticks, eine Periode sind nur
142µs, das sind nur 2290 Befehls-Zyklen.
Wenn dann noch PWM erfasst werden soll, also mit Flanken-Wechsel im ICP
Interrupt und bisschen was berechnen wird das richtig eng.
Vor allem wenn der Controller auch noch was anderes machen soll, so CAN
Botschaften empfangen, ADC einlesen etc.
Und die 90CANxx haben ja zwei 16-Bit Timer, den anderen willst Du wohl
auch noch benutzen?
Ich mag die AVR ja auch, aber die haben eben Ihre Grenzen, mehr Takt um
die zeitliche Auflösung zu verbessern wäre toll, genauso wie etwas
verbesserte Peripherie mit ein wenig mehr Möglichkeiten.
Das wäre vielleicht eine Gelegenheit, sich die AVR32UC3C genauer
anzusehen? :-)