-
-
Moderator
Robotik Visionär
Hallo
Das wird nicht funktionieren. Selbst wenn du die Led (wenn die überhaupt so schnell blinken kann) hardwaremäßig am OCx-Pin togglest wirst du nicht auf 455kHz kommen, weil der Timer nur ganze Takte timen kann. 8MHz/910kHz ergibt 8,791... Wenn du alle 8 Takte umschaltest ergibt das 500kHz, bei 9 Takten sind es aber nur noch 444,4kHz. Auch eine Do... Loop-Schleife die nur den Ausgang umschaltet und die restlichen Takte mit nops verbummelt (wenn nach dem Umschalten und dem Schleifenrücksprung überhaupt noch welche übrig sind) oder eine Assembler-Sequenz die das selbe macht, scheitern hier. Problem ist mit 8MHz-Kontrollertakt so nicht lösbar.
Eine mögliche Lösung wäre vielleicht, den internen 8MHz-Takt durch die Trimmung so zu "verbiegen", dass er mit 8,190MHz läuft (910kHz*9). Das wären etwas mehr als 2% "Fehler", laut Datenblatt des Mega8 Seite 30 unter "Calibrated Internal RC Oscillator" sind ca. 1-3% Korrektur möglich (Wenn ich das auf die Schnelle richtig interpretiere. Ich habe damit noch nicht experimentiert). Das wäre aber zusätzlich noch von der Versorgungsspannung, der Temperatur und der Bauteilestreuung des Mega8 abhängig. Keine Ahnung, ob das machbar ist.
btw. ergeben die von deinem Tool errechneten 247 bei einem Overflow-Interrupt genau 8 (255-247) Takte. Der Rundungsfehler läßt sich eben nicht austricksen;)
Wie genau müssen die 455kHz sein und wozu braucht man sowas überhaupt?
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen