- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 4 von 4

Thema: ATTiny25 _delay_ms mit Variable als Parameter

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716

    ATTiny25 _delay_ms mit Variable als Parameter

    Anzeige

    Powerstation Test
    Hallo,

    ich habe ein Problem bei der Programmierung eines ATTiny25. Ich möchte der _delay_ms Funktion gerne eine U8 Variable übergeben:

    Code:
    U8 MagnetTime = 10;
    _delay_ms (MagnetTime);
    Der Wert 10 dient nur als Beispiel und soll dann im Programm zur Laufzeit berechnet werden.

    Ich weiß, dass die Funktion _delay_ms Konstanten als Parameter erwartet. Gibt es eine Alternative oder muss ich diese selbst programmieren?

    Viele Grüße
    Andreas

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Mit dem Delay_ms geht es nicht - Das kann man aber relativ einfach selber programmieren:
    Einfach ein For Schleife die entsprechend oft ein Delay mit 1 ms Aufruft. Für mehr Auflösung kann man ggf. auch auf 100 µs runter gehen, ohne das die Fehler zu groß werden.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo Besserwessi,

    das ist ein sehr guter Denkanstoss, so werde ich das machen. Vielen Dank!

    Viele Grüße
    Andreas

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Hallo Andreas,

    mein selbstgezimmertes waitms() läuft ziemlich sauber eine Sekunde !wenn kein Interrupt stört! - wird allerdings in meinem interruptdurchseuchten controller nicht immer genau sein. Die Zahl 4000 ist natürlich sehr vom Controllertakt abhängig - ich habe fast immer 20 MHz. Dabei kann ich auch eine - dann aber doch eher fehlerhafte - Mikrosekunde warten.

    Hier der waitms() - Code, der ist aus dem Demoprogramm der RN-Control (klick mal) :
    Code:
    /* ============================================================================== */
    /* ============================================================================== */
    /*### Programm pausieren lassen  !! Der Pausenwert ist nur experimentell !*/ 
    void waitms(uint16_t ms) 
    { 
       for(; ms>0; ms--) 
       { 
          uint16_t __c = 4000; 
          __asm__ volatile ( 
             "1: sbiw %0,1" "\n\t" 
             "brne 1b" 
             : "=w" (__c) 
             : "0" (__c) 
          ); 
       } 
    } 
    /* ============================================================================== */
    [OT]Uuuuuups - nun ist der Fünftausender voll . . .[/OT]
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Variable als Parameter oder Return-Value
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.01.2011, 14:33
  2. Problem mit Avr Studio , Atmega 8 und _delay_ms...
    Von apfeldieb im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 15.03.2008, 22:11
  3. _delay_ms()???
    Von tholan im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 30.01.2006, 15:08
  4. _delay_ms() funzt nicht
    Von ebb im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 14.01.2006, 20:34
  5. _delay_ms()
    Von michaelb im Forum C - Programmierung (GCC u.a.)
    Antworten: 22
    Letzter Beitrag: 11.07.2005, 21:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test