Forum: Mikrocontroller und Digitale Elektronik maximale Schaltfrequenz - ATMEGA8 - nur ca. 7 kHz?


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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

von troll (Gast)


Lesenswert?

> 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.

von Floh (Gast)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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"?

von troll (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Ein Gast (Gast)


Lesenswert?

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.

von troll (Gast)


Lesenswert?

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.

von meckerziege (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.