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

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.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.