Hallo zusammen,
ich bin am testen der maximalen Schaltfrequenz meines µC (ATMEGA8) mit
einem externen Quarz (3,686 MHz). Leider messe ich mit dem Oszi nur eine
maximale Schaltfrequenz von ca. 7,2 kHz (siehe Anhang). Folgender Code
wird dabei verwendet. Müsste die maximale Schaltfrequenz nicht auch
3,686 MHz wie beim Quarz sein?
#include <avr\io.h>
unsigned char bitmuster=0xfe;
int main()
{
DDRB=0xff;
do
{
bitmuster=~bitmuster;
PORTB=bitmuster;
}
while(1);
}
Ist das normal, dass dies die maximale Schaltfrequenz ist oder kann man
diese noch weiter erhöhen? Fall ja, wie würde das gehen?
Vielen Dank.
Gruß Thomas
> Müsste die maximale Schaltfrequenz nicht auch> 3,686 MHz wie beim Quarz sein?
Nein, es sei denn das Programm wird in einem Takt abgearbeitet. (Bei
einer Samplerate von 200kSps deines Oszis würdest du sowieso nur Mist
messen.)
>Fall ja, wie würde das gehen?
Optimierung eingeschaltet? Wenn ja musst du wohl Assembler nehmen um
schneller zu sein. Oder einen Timer programmieren.
Die 200kSps deines "Oszis" sind zu gering.
Durch die Unterabtastastung tritt ein Aliaseffekt auf, der das
Oszillogramm vollkommen nutzlos macht.
http://de.wikipedia.org/wiki/Alias-Effekt
Hi
>Müsste die maximale Schaltfrequenz nicht auch>3,686 MHz wie beim Quarz sein?
Nein, da der Controller dazu eine Reihe von Befehlen ausführen muss.
Allerdings würde deine Messung etwas über 300 Assemblerbefehle bedeuten.
Das stimmt etwas nicht.
MfG spess
troll schrieb:> Nein, es sei denn das Programm wird in einem Takt abgearbeitet. (Bei> einer Samplerate von 200kSps deines Oszis würdest du sowieso nur Mist> messen.)
Ja, ab 100 kHz würde ich nen Mist messen, aber bis zu 100 kHz sollte ich
die Frequenz noch messen können. Den Signalverlauf kann ich dann
natürlich den Hasen geben. Aber ich würde halt gerne bis mindesten 20
kHz schalten können, so dass ich das Brummen einer induktiven Last dann
nicht mehr höhr.
troll schrieb:> Optimierung eingeschaltet? Wenn ja musst du wohl Assembler nehmen um> schneller zu sein. Oder einen Timer programmieren.
Optimierung ist auf Os eingestellt. Oder was meinst du genau mit
"Optimierung eingeschaltet"?
Thomas schrieb:> troll schrieb:>> Nein, es sei denn das Programm wird in einem Takt abgearbeitet. (Bei>> einer Samplerate von 200kSps deines Oszis würdest du sowieso nur Mist>> messen.)>> Ja, ab 100 kHz würde ich nen Mist messen, aber bis zu 100 kHz sollte ich> die Frequenz noch messen können.
Wer sagt dir denn das die Frequenz unter 100kHz liegt?
> natürlich den Hasen geben. Aber ich würde halt gerne bis mindesten 20> kHz schalten können, so dass ich das Brummen einer induktiven Last dann> nicht mehr höhr.
Das klingt sowieso merkwürdig. Mit deiner Methode kann der µP ja nichts
anderes mehr machen. Ich würde sagen du brauchst einen Timer, der
"schaltet" auch schnell genug.
> Optimierung ist auf Os eingestellt. Oder was meinst du genau mit> "Optimierung eingeschaltet"?
Genau das. Wobei wenn ich recht überlege 7kHz sind auch ohne Optimierung
zu mickrig, wahrscheinlich wirklich ein Messproblem.
Spess53 schrieb:> Allerdings würde deine Messung etwas über 300 Assemblerbefehle bedeuten.> Das stimmt etwas nicht.
Ja, das vermute ich eben auch. Blos ich weiß eben nicht an was es liegt
:-o
troll schrieb:> Wer sagt dir denn das die Frequenz unter 100kHz liegt?
Hab das getestet über optische LED-Anzeige und Summer. Hab mich von sehr
niedrigen Frequenzen zu immer schnelleren Frequenzen hoch getastet. Der
Summer mit 7,2 kHz kann man eben sehr deutlich auch höhren. Somit gehe
ich davon aus, dass die Frequenz stimmt.
troll schrieb:> Das klingt sowieso merkwürdig. Mit deiner Methode kann der µP ja nichts> anderes mehr machen. Ich würde sagen du brauchst einen Timer, der> "schaltet" auch schnell genug.
Wie kann ich das mit einem Timer am besten realisieren, bin noch recht
unerfahren in dieser Hinsicht.
Vielen Dank.
Thomas schrieb:> Leider messe ich mit dem Oszi nur eine> maximale Schaltfrequenz von ca. 7,2 kHz (siehe Anhang).
Das liegt aber daran, dass du nicht mit deinem Oszi umgehen kannst. Wenn
du dir das Programm im Simulator ansiehst, erkennst du sofort, dass die
Schleift 4 Takte lang ist, also eine Ausgangsfrequenz von 460kHz
erzeugt. Was meinst du, was du davon bei einer Abtastfrequenz von 200kHz
zu sehen bekommst: fettes Aliasing.
Ohne brauchbares Oszi ist das ein Ratespiel...
Thomas schrieb:> Wie kann ich das mit einem Timer am besten realisieren, bin noch recht> unerfahren in dieser Hinsicht.
Erzähl erstmal genau was du vorhast.
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.