zuweisung einer variable

Gast #3028023
Lesenswert?

Hallo

Ich möchte über eine tastenkombination meine Laufzeit für ein Blinklicht 
bestimmen, bloß weise ich meiner variable "laufzeit" die _delay_ms(xy) 
zu
und dies geht leider nicht weil sie ja keine Rückgabewerte liefern hat 
jmd eine lösung?:

#include <avr/io.h>
#include <util/delay.h>


int main(void)
{
  int  laufzeit;              //variable für die Veränderung der 
Laufzeit

  DDRD=0xFF;
  PORTD= 0xFF;              //Alle LEDS ausschalten

    PORTC=0x0F;                //Aktivierung der Pull-up Widerstände


  switch(PINC)
  {
    case 0xFF: laufzeit= _delay_ms(50);
          break;

    case 0xFB: laufzeit= _delay_ms(100);
          break;

    case 0xF7:  laufzeit= _delay_ms(200);
          break;

    case 0xF3: laufzeit= _delay_ms(500);
          break;

    default:  PORTD= 0x00;

    }

    while(1)
    {
      laufzeit;
      PORTD=0x00;
      laufzeit;
      PORTD=0xFF;

    }



  }
#3028028
Lesenswert?

Du gibst hier der Variable Laufzeit nur den Rückgabewert einer Funktion.

Und _delay_ms ist void also hat keinen Rückgabewert 
(http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html)

Das müsste eher unabhängig von allem anderen so aussehen:
1
case 0xFF: laufzeit= 50
2
          break;
3
....

und
1
hile(1)
2
    {
3
      _delay_ms(laufzeit);
4
      PORTD=0x00;
5
      _delay_ms(laufzeit);
6
      PORTD=0xFF;
7

8
    }
Gast #3028034
Lesenswert?

Azubi schrieb:
>       laufzeit;
warning: useless statement. Ich glaub du brauchst ein C-Buch.

Ok, Tipp:
1
void mydelayms(int delay)
2
{
3
  while(delay--)
4
    _delay_ms(1);
5
}
6
//...
7
int laufzeit=725;
8
//...
9
mydelayms(laufzeit);

Nein, delay_ms direkt mit Variable aufrufen geht nicht, Standardfehler, 
siehe libc-Doku oder FOrensuche.
Gast #3028040
Lesenswert?

Phil J. schrieb:
>http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html
>       _delay_ms(laufzeit);
Zwar verlinkt aber selber nicht gelesen?
>In order for these functions to work as intended, compiler optimizations
>must be enabled, and the delay time must be an expression that is a known
>constant at compile-time.

>saugeil
Nein, falsch. Ich warte schon auf den nächsten Thread "delay geht nicht" 
:-(

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