Forum: Mikrocontroller und Digitale Elektronik Atmega8 - Ausgangsport/Verständnisfrage?


von Stefan (Gast)


Lesenswert?

Hallo,

habe gerade folgenden Code auf den Atmega8 geflasht:

int main (void) {

   DDRB=0xFF;

   while(1)
   {
     PORTB ^= 1;
   }
}

Mit dem Oszi messe ich an dem Port ein Rechtecksignal mit 102kHz.
Jetzt ist die Frage warum das Signal nicht annähernd an die 16MHz 
Taktrate rankommt?

Danke

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Weil der Controller wahrscheinlich mit 1Mhz läuft und 10 Zyklen für die 
Schleife benötigt.

von Dussel (Gast)


Lesenswert?

Der Rücksprung braucht schonmal 3-4 Befehle, das xor und das Zuweisen 
nochmal zwei, und je nachdem wie der Compiler (nicht) optimiert, dauert 
das Testen der Bedingung und das Laden und Speicher nochmal jeweils 
einen Takt.

von Mika (Gast)


Lesenswert?

>Jetzt ist die Frage warum das Signal nicht annähernd an die 16MHz
>Taktrate rankommt?

Jetzt ist die Frage wie man auf so eine Frage kommt bzw. wie man darauf 
kommt da 16MHz zu erwarten?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die nächste Frage lautet dann: Ich kann meinen Controller nicht mehr 
programmieren, weil ich an den Clock-Fuses herumgespielt habe...? Also 
bitte genau gucken, was Du da einstellst.

von ftf (Gast)


Lesenswert?

mit dem CTC-Modus eines Timers kannst du auf bis zu 1/2*takt rankommen. 
mehr geht afaik nicht. eine schleife ist IMMER langsamer

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.