Archiv verlassen und diese Seite im Standarddesign anzeigen : ATTiny25 _delay_ms mit Variable als Parameter
Hallo,
ich habe ein Problem bei der Programmierung eines ATTiny25. Ich möchte der _delay_ms Funktion gerne eine U8 Variable übergeben:
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
Besserwessi
19.07.2012, 17:59
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.
Hallo Besserwessi,
das ist ein sehr guter Denkanstoss, so werde ich das machen. Vielen Dank!
Viele Grüße
Andreas
oberallgeier
19.07.2012, 23:37
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) (http://www.rn-wissen.de/index.php/RN-Control_Demoprogramm_in_C) :
/* ================================================== ============================ */
/* ================================================== ============================ */
/*### 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)
);
}
}
/* ================================================== ============================ */
Uuuuuups - nun ist der Fünftausender voll . . .
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.