maximale Schaltfrequenz - ATMEGA8 - nur ca. 7 kHz?

Gast #2809272
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
Angehängte Dateien:
Gast #2809282
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.
Gast #2809289
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
Gast #2809300
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"?
Gast #2809303
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.
Gast #2809310
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.
Gast #2809313
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren