Forum: Mikrocontroller und Digitale Elektronik Taktzyklus AtMega


von ARM_Takt (Gast)


Lesenswert?

Hi,

es geht um einen Mega328P (den ich von einem Arduino habe).

Ich habe Zeitkritische Portabfragen und im Worstcase Szenarion (dh Port 
ändert sich genau nachdem ich gerade abgefragt habe, vergehen zwischen 
zwei abfragen 10 Takte (laut Datenblatt - instructionen rjmp sbic subi 
brne add sbis). Das gute Stück läuft mit dem standard Arduino Takt = 16 
Mhz.
Das heißt doch nun das meine 10 Takte 625ns benötigen?!
Der abzufragende Port ändert sich aber höchstens alle 2us ... also genug 
Luft.

Es funktioniert allerdings bei weitem nicht bei dieser Frequenz, kann es 
sein das da doch ein Faktor noch drin steckt sowas wie instrction fetch 
& decode extra takte sind?

Oder gilt ein Prescaler für einen Timer für den gesamten Controller?

von Peter II (Gast)


Lesenswert?

ARM_Takt schrieb:
> Es funktioniert allerdings bei weitem nicht bei dieser Frequenz, kann es
> sein das da doch ein Faktor noch drin steckt sowas wie instrction fetch
> & decode extra takte sind?

nein, so etwas gibt es dort nicht.

Warum nimmst du nicht einfach den Simulator und schaust wie die Zeit 
vergeht?

von Lutz (Gast)


Lesenswert?

Ohne vollständigen Code kann das wohl keiner beantworten...
Zeile 42 erspare ich mir diesmal.

von H.Joachim S. (crazyhorse)


Lesenswert?

Ohne Software ist es tatsächlich nur Raterei...
Möglichkeiten:
CKDIV8?
Interrupts, die dir dazwischenhauen?

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.