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.
Was ist deine Taktquelle? Wirklich der Quarz? Poste mal deine Fuse-Einstellungen. Hast du -O2 probiert? Irgendwie passt das alles nicht so recht...
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.