<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.181.157.145</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.181.157.145"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/85.181.157.145"/>
	<updated>2026-04-10T21:36:49Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LED-Fading&amp;diff=41541</id>
		<title>LED-Fading</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LED-Fading&amp;diff=41541"/>
		<updated>2009-12-19T21:51:36Z</updated>

		<summary type="html">&lt;p&gt;85.181.157.145: /* Das Demoprogramm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Das Problem ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe klingt eigentlich recht einfach. Eine [[LED]] soll mittels [[PWM]] in ihrer Helligkeit gesteuert werden. Und weils so schön ist, möchte man sie geheimnisvoll aufleuchten lassen, sprich langsam heller und dunkler werden lassen. Der Fachmann nennt das Fading. Das Problem zeigt sich allerdings recht schnell. Wenn man eine 8-Bit PWM linear zwischen 0..255 laufen lässt, dann scheint die LED nicht linear gedimmt zu werden. Sie wird relativ schnell hell und bleibt lange hell.&lt;br /&gt;
&lt;br /&gt;
== Die Erklärung ==&lt;br /&gt;
&lt;br /&gt;
Des Rätsels Lösung liegt in der Kennline des menschlichen Auges. Diese ist nichtlinear, genauer gesagt: sie ist nahezu logarithmisch. Das ermöglicht die Wahrnehmung eines sehr großen Helligkeitsbereichs, angefangen von Vollmond mit ~1/4 [http://de.wikipedia.org/wiki/Lux_%28Einheit%29 Lux] über eine normale Schreibtischbeleuchtung mit ca. 750 Lux bis zu einem hellen Sommertag mit bis zu 100.000 Lux. Solche hochdynamischen Signale sind nur mit einer logarithmischen Kennline in den Griff zu kriegen, auch von Mutter Natur und Erfinder Papa.&lt;br /&gt;
&lt;br /&gt;
=== Die Kennlinie des Auges genau betrachtet ===&lt;br /&gt;
&lt;br /&gt;
Die Kennlinie des menschlichen Auges ist annähernd logarithmisch. Das wurde vor langer Zeit duch das [http://de.wikipedia.org/wiki/Weber-Fechner-Gesetz Weber-Fechner-Gesetz] beschrieben. Genauere Untersuchungen zur [http://de.wikipedia.org/wiki/Gamma-Korrektur Gammakorrektur] führten jedoch zur [http://de.wikipedia.org/wiki/Stevenssche_Potenzfunktion Stevenschen Potenzfunktion]. Diese beschreibt das menschliche Auge etwas besser. Die Unterschiede sind jedoch marginal. Vorsicht! Der Artikel Gamma-Korrektur in Wikipedia verweist fälschlicherweise auf das Weber-Fechner Gesetz.&lt;br /&gt;
&lt;br /&gt;
Praktisch heißt das, daß wir unserem Auge große physikalische Helligkeitsunterschiede präsentieren müssen, damit es das als lineare Helligkeitsteigerung erkennt. Etwas wissenschaftlicher formuliert heißt das, wir müssen durch Verkettung der logarithmischen Kennlinie des Auges mit einer exponentiellen Kennlinie eine physiologisch lineare Helligkeitsverteilung erzielen.&lt;br /&gt;
&lt;br /&gt;
Berechnet werden kann eine passende Tabelle beispielsweise mit folgender Funktion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;y=\frac{b^{\frac{x}{r_x}}-1}{b-1}\cdot r_y&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei sind x und y die Ein-, bzw. Ausgabewerte der Funktion, jeweils im Bereich von 0 bis r-1. b ist die Basis der Exponentialfunktion und bestimmt, wann und wie stark die Kurve ansteigen soll. Hier ist etwas ausprobieren erforderlich, gute Ergebnisse liefern Werte im Bereich 10-100.&lt;br /&gt;
&lt;br /&gt;
== Das Demoprogramm ==&lt;br /&gt;
&lt;br /&gt;
Das wird in dem unten gezeigten Beispielprogramm gemacht. Dabei wird die Wirkung verschiedener PWM-Auflösungen demonstriert. Eine 8-Bit PWM wird mit 4/8/16 und 32 nichtlinearen Stufen betrieben, welche über eine Exponentialfunktion berechnet wurden. Dazu dient die [[media:pwm_table.zip|Exceltabelle]] (Anmerkung: Bitte die Exceltabelle nochmal erklären, die Werte in der Tabelle stimmen nicht mit denen im Programm überein). Die einzelnen benachbarten Werte haben zueinander ein konstantes Verhältnis, das in der Exceltabelle als &#039;Factor&#039; berechnet wird. Ausserdem werden eine 10-Bit PWM mit 64 Stufen sowie, als die Königsklasse, eine 16-Bit PWM mit 256 Stufen betrieben.&lt;br /&gt;
&lt;br /&gt;
Das Programm ist ursprünglich auf einem [[AVR]] vom Typ &#039;&#039;&#039;ATmega32&#039;&#039;&#039; entwickelt und getestet. Aber es ist leicht auf jeden AVR portierbar, welcher eine PWM zur Verfügung hat. Der AVR muss mit etwa 8 MHz getaktet werden, egal ob mit internem Oszillator oder von aussen mit Quarz. Man muss nur noch eine LED mittels Vorwiderstand von ca. 1 kOhm an Pin PD5 anschliessen und los gehts. Es sollte hier noch erwähnt werden, dass das Programm mit eingeschalteter Optimierung compiliert werden muss, sonst stimmen die Zeiten der Warteschleifen nicht.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung der LEDs auf dem STK500 bzw. bei der Verwendung von invertierenden Treiberstufen ist das &amp;quot;#define STK500 false&amp;quot; durch &amp;quot;#define STK500 true&amp;quot; zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Das Programm durchläuft alle 6 PWMs und lässt dabei die LED jeweils 3 mal glimmen. Mit 4 Schritten Auflösung ist das natürlich ruckelig, mit 8 schon wesentlich besser. Mit 16 Stufen sieht man bei langsamen Änderungen noch Stufen, dreht man die Ein- und Ausblendzeiten runter ist der Übergang schon recht flüssig. Die 8-Bit PWM mit 32 Stufen unterscheidet sich praktisch nicht von der 10-Bit PWM mit 64 Stufen, es sei denn, man macht extrem langsame Einblendungen. Hier schlägt die Stunde der 16-Bit PWM. Diese wird bewußt sehr langsam ausgeführt um zu demonstrieren, daß hiermit praktisch keine Stufen mehr sichtbar sind, egal wie langsam gedimmt wird. Wie man auch sieht sind die drei höherauflösenden PWMs im unteren Bereich an ihrer Auflösungsgrenze, da einige PWM-Werte mehrfach vorkommen. Da heißt gleichzeitig, daß eine Steigerung der Stufenanzahl relativ sinnlos ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
//*****************************************************************************&lt;br /&gt;
//*&lt;br /&gt;
//*  LED fading test&lt;br /&gt;
//*  uses exponential PWM settings to achive visual linear brightness&lt;br /&gt;
//*&lt;br /&gt;
//*  ATmega32 @ 8 MHz&lt;br /&gt;
//*  &lt;br /&gt;
//*                  &lt;br /&gt;
//*****************************************************************************&lt;br /&gt;
&lt;br /&gt;
#define F_CPU 8000000L&lt;br /&gt;
&lt;br /&gt;
#define true 1&lt;br /&gt;
#define false 0&lt;br /&gt;
&lt;br /&gt;
#define STK500 false&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// global variables&lt;br /&gt;
&lt;br /&gt;
uint16_t pwmtable_8A[4]   PROGMEM = {0, 16, 64, 255};&lt;br /&gt;
uint16_t pwmtable_8B[8]   PROGMEM = {0, 4,  8, 16, 32, 64,  128, 255};&lt;br /&gt;
uint16_t pwmtable_8C[16]  PROGMEM = {0, 2, 3, 4, 6, 8, 11, 16, 23, 32, 45, 64,&lt;br /&gt;
                                    90, 128, 181, 255};&lt;br /&gt;
uint16_t pwmtable_8D[32]  PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11,&lt;br /&gt;
                                    13, 16, 19, 23, 27, 32, 38, 45, 54, 64, 76,&lt;br /&gt;
                                    91, 108, 128, 152, 181, 215, 255};&lt;br /&gt;
&lt;br /&gt;
uint16_t pwmtable_10[64]  PROGMEM = {0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5,&lt;br /&gt;
                                    5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17,&lt;br /&gt;
                                    19, 21, 23, 26, 29, 32, 36, 40, 44, 49, 55,&lt;br /&gt;
                                    61, 68, 76, 85, 94, 105, 117, 131, 146, 162,&lt;br /&gt;
                                    181, 202, 225, 250, 279, 311, 346, 386, 430,&lt;br /&gt;
                                    479, 534, 595, 663, 739, 824, 918, 1023};&lt;br /&gt;
&lt;br /&gt;
uint16_t pwmtable_16[256] PROGMEM = {0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,&lt;br /&gt;
                                     2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,&lt;br /&gt;
                                     4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6,&lt;br /&gt;
                                     6, 7, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11,&lt;br /&gt;
                                     11, 12, 12, 13, 13, 14, 15, 15, 16, 17, 17,&lt;br /&gt;
                                     18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,&lt;br /&gt;
                                     29, 31, 32, 33, 35, 36, 38, 40, 41, 43, 45,&lt;br /&gt;
                                     47, 49, 52, 54, 56, 59, 61, 64, 67, 70, 73,&lt;br /&gt;
                                     76, 79, 83, 87, 91, 95, 99, 103, 108, 112,&lt;br /&gt;
                                     117, 123, 128, 134, 140, 146, 152, 159, 166,&lt;br /&gt;
                                     173, 181, 189, 197, 206, 215, 225, 235, 245,&lt;br /&gt;
                                     256, 267, 279, 292, 304, 318, 332, 347, 362,&lt;br /&gt;
                                     378, 395, 412, 431, 450, 470, 490, 512, 535,&lt;br /&gt;
                                     558, 583, 609, 636, 664, 693, 724, 756, 790,&lt;br /&gt;
                                     825, 861, 899, 939, 981, 1024, 1069, 1117,&lt;br /&gt;
                                     1166, 1218, 1272, 1328, 1387, 1448, 1512,&lt;br /&gt;
                                     1579, 1649, 1722, 1798, 1878, 1961, 2048,&lt;br /&gt;
                                     2139, 2233, 2332, 2435, 2543, 2656, 2773,&lt;br /&gt;
                                     2896, 3025, 3158, 3298, 3444, 3597, 3756,&lt;br /&gt;
                                     3922, 4096, 4277, 4467, 4664, 4871, 5087,&lt;br /&gt;
                                     5312, 5547, 5793, 6049, 6317, 6596, 6889,&lt;br /&gt;
                                     7194, 7512, 7845, 8192, 8555, 8933, 9329,&lt;br /&gt;
                                     9742, 10173, 10624, 11094, 11585, 12098,&lt;br /&gt;
                                     12634, 13193, 13777, 14387, 15024, 15689,&lt;br /&gt;
                                     16384, 17109, 17867, 18658, 19484, 20346,&lt;br /&gt;
                                     21247, 22188, 23170, 24196, 25267, 26386,&lt;br /&gt;
                                     27554, 28774, 30048, 31378, 32768, 34218,&lt;br /&gt;
                                     35733, 37315, 38967, 40693, 42494, 44376,&lt;br /&gt;
                                     46340, 48392, 50534, 52772, 55108, 57548,&lt;br /&gt;
                                     60096, 62757, 65535};&lt;br /&gt;
&lt;br /&gt;
// long delays&lt;br /&gt;
&lt;br /&gt;
void my_delay(uint16_t milliseconds) {&lt;br /&gt;
    for(; milliseconds&amp;gt;0; milliseconds--) _delay_ms(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 8-Bit PWM with only 4 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_8_4(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC1;          // inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x81;          // non-inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x08;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 4;            // precaler 256 -&amp;gt; ~122 Hz PWM frequency&lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=3; tmp++){&lt;br /&gt;
      OCR1A =  pgm_read_word(pwmtable_8A+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(tmp=3; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8A+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 8-Bit PWM with 8 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_8_8(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC1;          // inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x81;          // non-inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x08;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 4;            // precaler 256 -&amp;gt; ~122 Hz PWM frequency&lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=7; tmp++){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8B+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    for(tmp=7; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8B+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 8-Bit PWM with 16 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_8_16(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC1;          // inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x81;          // non-inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x08;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 4;            // precaler 256 -&amp;gt; ~122 Hz PWM frequency&lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=15; tmp++){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8C+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(tmp=15; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8C+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 8-Bit PWM with 32 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_8_32(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC1;          // inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x81;          // non-inverted PWM on OC1A, 8 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x08;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 4;            // precaler 256 -&amp;gt; ~122 Hz PWM frequency &lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=31; tmp++){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8D+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(tmp=31; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_8D+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 10-Bit PWM with 64 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_10_64(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC3;          // inverted PWM on OC1A, 10 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x83;          // non-inverted PWM on OC1A, 10 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x08;&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 3;            // precaler 64 -&amp;gt; ~122 Hz PWM frequency&lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=63; tmp++){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_10+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(tmp=63; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_10+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 16-Bit PWM with 256 different settings&lt;br /&gt;
&lt;br /&gt;
void pwm_16_256(uint16_t delay){&lt;br /&gt;
&lt;br /&gt;
    int16_t tmp;&lt;br /&gt;
&lt;br /&gt;
#if STK500&lt;br /&gt;
    TCCR1A = 0xC2;          // inverted PWM on OC1A, 16 Bit Fast PWM&lt;br /&gt;
#else&lt;br /&gt;
    TCCR1A = 0x82;          // non-inverted PWM on OC1A, 16 Bit Fast PWM&lt;br /&gt;
#endif&lt;br /&gt;
    TCCR1B = 0x18;&lt;br /&gt;
    ICR1 = 0xFFFF;          // TOP for PWM, full 16 Bit&lt;br /&gt;
&lt;br /&gt;
    TCCR1B &amp;amp;= ~0x7;         // clear clk setting&lt;br /&gt;
    TCCR1B |= 1;            // precaler 1 -&amp;gt; ~122 Hz PWM frequency&lt;br /&gt;
&lt;br /&gt;
    for(tmp=0; tmp&amp;lt;=255; tmp++){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_16+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for(tmp=255; tmp&amp;gt;=0; tmp--){&lt;br /&gt;
      OCR1A = pgm_read_word(pwmtable_16+tmp);&lt;br /&gt;
      my_delay(delay);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    int16_t i;&lt;br /&gt;
    int16_t step_time=400;      // delay in millisecond for one fading step&lt;br /&gt;
&lt;br /&gt;
    DDRD |= (1&amp;lt;&amp;lt;PD5);           // LED uses OC1A&lt;br /&gt;
&lt;br /&gt;
    // test all fading routines&lt;br /&gt;
&lt;br /&gt;
    while(1) {&lt;br /&gt;
&lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_8_4(step_time);&lt;br /&gt;
      my_delay(1000);&lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_8_8(step_time/2);&lt;br /&gt;
      my_delay(1000);    &lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_8_16(step_time/4);&lt;br /&gt;
      my_delay(1000);&lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_8_32(step_time/8);&lt;br /&gt;
      my_delay(1000);&lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_10_64(step_time/16);&lt;br /&gt;
      my_delay(1000);&lt;br /&gt;
      for(i=0; i&amp;lt;3; i++) pwm_16_256(step_time/16);&lt;br /&gt;
      my_delay(1000);&lt;br /&gt;
&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
[[Category:AVR-Projekte]]&lt;br /&gt;
[[Category:Displays und Anzeigen]]&lt;/div&gt;</summary>
		<author><name>85.181.157.145</name></author>
	</entry>
</feed>