__delay_us(x)

Gast #2670287
Lesenswert?

Hallo,

ich habe nur eine ganz kleine Frage:
Bei meinem PIC12 möchte ich der __delay_us() Funktion eine unsigned int 
(16 bit)variable übergeben, aber es funktioniert nicht. Kann mir Jemand 
sagen, wie ich den Wert der Variablen übergeben kann?
Ich programmiere in MPLAB mit dem HIGH-TECH Compiler.

Viele Grüße
#2670299
Lesenswert?

Yasin schrieb:
> möchte ich der __delay_us() Funktion eine unsigned int
> (16 bit)variable übergeben, aber es funktioniert nicht.

/bloedelmodus_an

du mußt igned integer übergeben, damit man auch _delay_us(-100) eingeben 
kann. Damit wird der nächste Befehl schon xx mikrosekunden vor 
Abarbeitung des aktuellen Befehls ausgeführt. Vorsichtig anwenden, kann 
Effekte im aktuellen Zeit-Kontinuum verursachen!

/bloedelmodus_aus


nee, zeigt doch mal deinen Code, dann ist das alles einfacher zu 
bewerten was falsch sein könnte
Gast #2670352
Lesenswert?

Yasin schrieb:
> Der Compiler sagt: inline delay argument must be conastant.

Na dann ist doch alles klar. Du mußt eine Konstante übergeben, was du 
hier:

> unsigned int x;
> x = 100;
> __delay_us(x);

nicht tust, denn x ist keine Konstante, sondern eine Variable.

Wegstaben Verbuchsler schrieb:
> du mußt igned integer übergeben, damit man auch _delay_us(-100) eingeben
> kann. Damit wird der nächste Befehl schon xx mikrosekunden vor
> Abarbeitung des aktuellen Befehls ausgeführt. Vorsichtig anwenden, kann
> Effekte im aktuellen Zeit-Kontinuum verursachen!

Das erinnert mich an den COMEFROM-Befehl in Intercal. Der funktioniert 
quasi wie goto, nur umgekehrt.
#2670390
Lesenswert?

Yasin schrieb:
> Ist es denn irgendwie möglich meine Variable in eine Konstante
> umzuwandeln?
Für die Frage ziehst du dir jetzt ein Ohr lang. SELBSTVERSTÄNDLICH 
NICHT!

void Delay(unsigned char nDelay)
{
  for (unsigned char nInd = 0; nInd < nDelay; nInd++) _delay_ms(1);
}

Dauert zwar ein Taktchen länger, wegen der Schleife und dem 
Funktionsaufruf, aber wenn es 100 Pro sein muss, nimmt man einen Timer.

mfg.
Gast #2670415
Lesenswert?

Ok, eine Schleife ist keine schlechte Idee. Es ging mir eigentlich nur 
darum, Variablen so auszugeben, dass ich sie am Oszi auslesen kann. Mit 
dem Debugger wird das nichts, weil die Variablen vom Timer abhängen. 
Danke für die Hilfe!

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