Forum: Compiler & IDEs ARM7 Cortex M3 NOP-Befehl?!


von Benny (Gast)


Lesenswert?

Hallo, ich habe eigentlich eine sehr einfache Frage:

Ich bin z.Z. dabei für einen Cortex M3 eine softwaregebaute I2 
nachzubilden und benötige da bei zwischen meinen Ansteuerungen der Pins 
eine möglichst kleine Delay Zeit.

Bei anderen Controllern habe ich NOP genommen, ist dies auch beim Cortex 
M3 möglich?!
Wenn ja wie?

Vielen Dank.
Vg. Benny

von (prx) A. K. (prx)


Lesenswert?

Um welche Zeiten geht es hier? Möglichst kurzes Delay ist ja 0. I2 sagt 
mir nichts.

von Benny (Gast)


Lesenswert?

Hallo,

sorry habe ein C vergesen (I2C) aber es ist im Prinzip einen Abwandlung 
also kein I2C konformes Protokoll, deswegen auch das nutzen von I/O 
Pins, aber es gibt eine Daten und eine Clock Leitung das Delay sollte so 
10ns sein.
Im Beispielcode (8051 mit 11 Mhz) wird ein einfaches NOP() verwendet...

Vg
Benny

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

ARM-Prozessoren haben keinen expliziten NOP-Befehl. Stattdessen 
verwendet man im Allgemeinen einen reinen Registerbefehl, der auch die 
Flags unangetastet lässt, z.B. MOV R0, R0.

Einige Assembler haben einen NOP-Befehl, der aber auf solch einen 
unschädlichen Befehl abgebildet wird.

von (prx) A. K. (prx)


Lesenswert?

Benny schrieb:

> Pins, aber es gibt eine Daten und eine Clock Leitung das Delay sollte so
> 10ns sein.

10ns ist doch etwas sportlich, vor allem auf einem 11 MHz 8051 mit dem 
üblichen 12er Teiler. ;-)

I2C bewegt sich mit 100 oder 400KHz, das sind Delays im 
Mikrosekundenbereich. Die einzige mir bekannte ähnliche aber 
inkompatible Variante sind die SHT1x/7x Sensoren, für die es hier 
bereits funktionsfähigen Code gibt, zumal es den Dinger ziemlich egal 
ist, ob sie mit 2MHz oder 20KHz angeprochen werden.

Also Butter bei die Fische: Worum geht es konkret?

von (prx) A. K. (prx)


Lesenswert?

Was kurze Delays angeht. Unterhalb von ein paarhundert Nanosekunden 
abhängig vom Controllertakt ist das Sache spezieller Hardware, nicht von 
Programmen.

Wer bei ARM7/CM3 nach einzelnen NOPs fragt, signalisiert damit, dass er 
sehr wahrscheinlich auf dem Holzweg ist und die falsche Frage stellt. 
Apropos ARM7: Wat denn nu? ARM7 und CM3 sind zwei recht verschiedene 
paar Stiefel.

Aber trotzdem: Ab diesen paarhundert Nanosekunden kann man sich bei den 
Cortexen einerseits direkt des Sysclock-Timers bedienen, d.h. ihn 
abfragen. Andererseits eine normale Delayloop verwenden, die man anfangs 
einmal anhand einer bekannten Zeit kalibriert. Letzteres Verfahren 
besitzt den Vorteil, dass es von exakten Architektur- und 
Implementierungsmerkmalen ziemlich unabhängig ist.

von Benny (Gast)


Lesenswert?

Hallo,

ja es geht um die SHT-Sensoren,

das hier keine 10 ns eingehalten werden müssen ist mir klar, jedoch ist 
das die minimale Zeit. Und die Frage bezog sich hier zum einen generell 
um einen leeren Maschinenbefehl und zum anderen um die SHT Ansteuerung. 
Wo gibt es denn Cortext M3 Code für die Ansteuerung der SHT15 Sensoren? 
Kenn nur 8051 Implementierungen mit NOP Code...

Vielen Dank schonmal.

Vg
Benny

von (prx) A. K. (prx)


Lesenswert?

Die 10ns für SHTs sind in diesem Zusammenhang Blödsinn.

Das Forum hat eine Suchfunktion. Ob du dabei Code für den CM3 finden 
wirst weiss ich nicht, nur ist es ziemlich schnurz für welchen 
Controller der Code ist, wenn du nicht grad in Assembler programmieren 
willst (wer einen CM3 komplett in Assembler programmiert, der hat das 
entweder als Aufgabe bekommen, oder ein Rad ab). Einzig die Bit-I/O und 
die Delays müssen angepasst werden.

Beispiel: Beitrag "Sensirion SHT11 Code"

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Andreas Schweigstill schrieb:
> ARM-Prozessoren haben keinen expliziten NOP-Befehl. Stattdessen
> verwendet man im Allgemeinen einen reinen Registerbefehl, der auch die
> Flags unangetastet lässt, z.B. MOV R0, R0.

Neuere ARM Architekturen haben einen echten NOP Befehl. Allerdings 
garantiert keine ARM Architektur, dass der Befehl auch Zeit verbraucht.

Benny kann beruhigt sein, der Cortex-M3 benötigt genau einen Taktzyklus 
um nichts zu tun. Zu empfehlen ist das natürlich trotzdem nicht.

--
Marcus

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.