-
-
Erfahrener Benutzer
Fleißiges Mitglied
hmm ... also .. ich glaub, das RC5 is komplizierter, als PWM
@1hdsquad
Hmm .. wie erklär ich dir das am besten ..
Also .. mal so versuchen ..:
Gegeben: Du hast 8 LEDs am Multiplexer ...
-Funktion-
Im AVR existiert eine schleife. Zusätzlich existiert ein Speicher für jede LED (z.B. ein Byte pro LED für 255 Helligkeitsstufen)
Auserdem ein Byte-Speicher für die Zeit (muss ein Byte sein, damit es mit der Helligkeitsausgabe kompatibel ist, sonst erhällt man zeitversetzungen)
Zuerst zählt man den Zeit-Speicher jeweils um 1 herauf. ( bei 255 zurück zu 0)
Danach wird in der Schleife zuerst eine LED gewählt (nacheinander von 1 bis 8, und dann wieder von vorne)
Nun überprüft man, ob der Zeitspeicher eine Wert besitzt, der kleiner oder gleich dem Wert des Helligkeits-Speichers für die LED besitzt (z.B. Zeit: 10 ... Helligkeit: 50) . Wenn dem der fall ist, dann kann die LED eingeschaltet werden. Wenn dem nicht so ist, wird kein High ausgegeben.
anschliessend durchläuft man diesen Vorgang mit allen weiteen 7 LEDs.
Wenn dies erfolgte, wird wieder von ganz vorne begonnen (Zeitzählen + 1)
Fertig.
Das ergebniss ist, Das die LEDs nur für eine bestimmtezeit Strom bekommen, udn für diese Zeit auch leuchten.
Das Problem jedoch ist, das durch die hohe geschwindigkeit des Ablaufs man evenentuellgarnicht sieht, das die LED dunkel ist. Das muss man dadurch kompensieren, das man z.B. entweder einen grösseren Speicher nutzt, als Byte, um die stufen zu erhöhen, und damit auch die zeit ( welcher auch erhöht werden muss), oder man baut eien kleine "Wartefunktion" ein, bis man den Zeitzähler um1 erhöht, um so auf ein angemessenes Mass an Taktung kommt. Das muss jedoch individuell für die anzahl der LEDs geschehen, um keinen Versatz zu bekommen.
Wenn man z.B. alle 50sek. TZakten mächte, und man hat 1MHz Taktfrequenz vom AVR, bei 10LEDs, dann sollte man pro Befehl ca. 1 bis 2 IPS rechnen diese durch die 1MHz teilen, und das ergebniss durch die anzhal der LEDs (10) .. dann erhält man den wert, welchen die Wartefunktion abwarten muss, bis er den Zähler um 1 erhöht, udn die LEDs noch einmal durchläuft.
Bedacht werden muss jedoch noch, das NUR der Zähler +1 erhöht erden muss, bei der wartefunktion, sonst bleiben alle LEDs für die wartezeit aus, ohne das sie Ihren aktuellen wert darstellen.
Hoffe, ichhabs verständlich rüber gebracht.
JimJim
XUN
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen