Hallo,
* Zefiro Zefiro@Zefiro.de wrote:
Ich erfuhr heute über das Chaosradio vom Fnordlicht. Da ich selber ein wenig in diese Richtung experimentierte - siehe http://www.zefiro.de/projekte/wodo/moodcluster.html - bin ich natürlich interessiert daran.
Leider wird nur für den Fotografen, nicht für den Autor (fd0) eine Mailadresse angegeben, so daß ich diese allgemeine verwende.
Und deshalb antworte ich dir einfach mal :) Blind raten haette dich auch eventuell auf "fd0@koeln.ccc.de" kommen lassen... ;)
Mich würde speziell das verwendete Programm interessieren. Ich habe den PWM ebenfalls in Software realisiert (alleine schon deshalb weil ich 15 LEDs unabhängig voneinander ansteuern wollte), jedoch mittels des Timers und in C. Das ist noch nicht schnell genug, bei 8MHz kriege ich gerade mal 5bit tauglich hin. Eure Lösung klingt aufwendiger, ich würde jedoch gerne einmal einen Blick auf die relevanten Codeteile werfen.
Dann wuerde ich dir vorschlagen, du kommst einfach mal bei uns im Club in Koeln oder direkt in Aachen (wo Lars und ich wohnen und studieren) vorbei, wenn wir auch da sind (Termin koennen wir machen). Die Software ist noch nicht freigegeben und auch noch nicht so weit, wie wir sie gerne haetten.
Mich wunderte auch etwas die Aussage darüber daß der 16bit-Timer nicht ausreichend sei. Wurde hier der Prescaler übersehen, oder ist er in diesem Fall nicht anwendbar?
Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw.
Das reicht kaum aus, den 16Bit Timer in einen Interrupt springen zu lassen, deshalb haben wir da was drumrum gebaut.
In der Anforderungsliste stand 'intelligent'. Welcher Teil der Beleuchtung hat dieses Attribut verdient?
Die Dinger sollen so intelligent sein, zb. autonom Game of Life zu spielen (http://de.wikipedia.org/wiki/Game_of_life). Wenn die dinger das koennen, finde ich das schon ziemlich intelligent. =)
Btw die Gammakorrektur ist nicht notwendig weil das Auge ein spezielles Problem mit gepulsten LEDs hat sondern ganz allgemein weil Helligkeit nichtlinear wahrgenommen wird und man Unterschiede im dunklen Bereich viel deutlicher wahrnimmt. Soweit aus dem Kopf. Nach etwas Googeln fand ich http://www.compuphase.com/cmetric.htm ("Within a certain range, the non-linearity of the human eye matches a power function.") und http://www.w3.org/TR/PNG-GammaAppendix ("Gamma-encoded samples are good") als Beleg :)
Nett, die Seiten kannte ich auch noch nicht.
Aber ganz allgemein kann ich nur sagen: cooles Projekt! Weiter so. Und die Deponierung im Blumentopf hat mich gleich für mein nächstes Projekt inspiriert :)
Die Idee stammt von meinem Vater, und mir hat sie auch sehr gut gefallen. Ist halt billig, lichtdicht und gut aufzuhaengen...
PS: Euer Projekt Schnucki klingt sehr interessant. Habt ihr auch eine Statusseite anhand derer man erkennen kann wie intelligent die Spambots mittlerweile geworden sind?
Nein, das steht auch noch auf meiner Todo-Liste ;)
Danke fuer dein Feedback, ich hab die Antwort auch mal an die fnordlicht Mailingliste geschickt.
- fd0
* fd0@koeln.ccc.de fd0@koeln.ccc.de [2005-09-01 14:03]:
Mich würde speziell das verwendete Programm interessieren. Ich habe den PWM ebenfalls in Software realisiert (alleine schon deshalb weil ich 15 LEDs unabhängig voneinander ansteuern wollte), jedoch mittels des Timers und in C. Das ist noch nicht schnell genug, bei 8MHz kriege ich gerade mal 5bit tauglich hin. Eure Lösung klingt aufwendiger, ich würde jedoch gerne einmal einen Blick auf die relevanten Codeteile werfen.
[...]
Mich wunderte auch etwas die Aussage darüber daß der 16bit-Timer nicht ausreichend sei. Wurde hier der Prescaler übersehen, oder ist er in diesem Fall nicht anwendbar?
Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw.
Wir haben einen PWM-Zyklus in 255 nicht-lineare Zeitschlitze aufgeteilt und verwenden den 16bit-Timer, um jeweils pünktlich zum Beginn des nächsten Zeitschlitzes (evtl.) die Output-Pins umzuschalten.
Das Problem der sehr kurzem Abstände im unteren Helligkeitsbereich umgehen wir dadurch, dass diese alle in einem einzigen Interruptaufruf abgearbeitet werden.
Nebenbei hat der Atmega8, wie anscheinend auch der 8535, nur zwei 16bit-PWM-Kanäle, das reicht gerade für RG, RB oder BG, nicht aber für RGB ;)
Hey, fd0...
fkcd> Blind raten haette dich auch eventuell auf "fd0@koeln.ccc.de" kommen lassen... ;) Hat es sogar :) Allerdings, da ich nur mutmaßen, jedoch nicht sicher sein konnte daß diese Adresse gültig ist und abgerufen wird - und ich sie auch sonst nirgends auf eurer Seite fand - habe ich halt die andere genommen. Schien ja auch sehr schnell zu dir zu führen :)
ich würde jedoch gerne einmal einen Blick auf die relevanten Codeteile werfen.
die sind auch geheim?
fkcd> Dann wuerde ich dir vorschlagen, du kommst einfach mal bei uns im Club in fkcd> Koeln oder direkt in Aachen (wo Lars und ich wohnen und studieren) vorbei, Bei den aktuellen Spritpreisen wäre das gut zu überlegen. Ich habe in Karlsruhe studiert und bin noch am WE dort, unter der Woche mache ich meine Diplomarbeit in Böblingen. Ist also ein Stückchen Weg bis Köln oder Aachen.
fkcd> Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer fkcd> Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen fkcd> zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw. Wir reden von Taktzyklen? In dem Fall würde mich wirklich sehr interessieren wie ihr in <10 Taktzyklen drei Farben separat setzt, inklusive einem Fading-Effekt. Ich gehe davon aus Kommunikation über I2C und RS232 findet im Interrupt statt, verfälscht also das Timing entsprechend (minimal).
Für meinen Bedarf wird das wohl zu eng werden - mein MoodCluster steuert 15 Kanäle (5 Würfel à 3 Farben) voneinander unabhängig an. Ich gebe allerdings zu daß ich bisher nur ein C-Programm verwendet habe und bei 8MHz gerade eben so 5Bit Auflösung hinkriegte.
Was verwendet ihr als Spannungsversorgung? die zwei dicken TS7812 lassen >12V Eingangsspannung bei einiger Verlustleistung vermuten.
In der Anforderungsliste stand 'intelligent'. Welcher Teil der Beleuchtung hat dieses Attribut verdient?
fkcd> Die Dinger sollen so intelligent sein, zb. autonom Game of Life zu spielen Coool! Ok, _das_ ist wirklich eine nette Sache. Wobei für GoL ja 5x5 ziemlich Mindestfeldgröße wäre, besser 10x10. Ihr wollt mit den Fnordlichtern in die Serienproduktion gehen?
PS: Euer Projekt Schnucki klingt sehr interessant. Habt ihr auch eine Statusseite anhand derer man erkennen kann wie intelligent die Spambots mittlerweile geworden sind?
fkcd> Nein, das steht auch noch auf meiner Todo-Liste ;) Mach mal :)
Ich habe mich schon häufiger gefragt was die Spambots denn schon alles können und ob das Verstecken hinter (AT) nicht bereits hinfällig wurde. Oder die HTML-Entities, die ich selber verwende. Du kannst ja vermutlich schon abschätzen, anhand des erhaltenen Spams, wie der Trend sein wird.
fkcd> Danke fuer dein Feedback, ich hab die Antwort auch mal an die fnordlicht fkcd> Mailingliste geschickt. Was besprecht ihr dort alles und wieviel Traffic hat sie? Evtl. hätte ich Interesse zu joinen.
:Zefiro: www.Zefiro.de
Hi,
* Zefiro Zefiro@Zefiro.de wrote:
fkcd> Blind raten haette dich auch eventuell auf "fd0@koeln.ccc.de" kommen lassen... ;) Hat es sogar :) Allerdings, da ich nur mutmaßen, jedoch nicht sicher sein konnte daß diese Adresse gültig ist und abgerufen wird - und ich sie auch sonst nirgends auf eurer Seite fand - habe ich halt die andere genommen. Schien ja auch sehr schnell zu dir zu führen :)
Zufall, weil ich diese Mailingliste auch lese ;)
ich würde jedoch gerne einmal einen Blick auf die relevanten Codeteile werfen.
die sind auch geheim?
Nein, aber noch nicht fertig. Deshalb...
fkcd> Dann wuerde ich dir vorschlagen, du kommst einfach mal bei uns im Club in fkcd> Koeln oder direkt in Aachen (wo Lars und ich wohnen und studieren) vorbei, Bei den aktuellen Spritpreisen wäre das gut zu überlegen. Ich habe in Karlsruhe studiert und bin noch am WE dort, unter der Woche mache ich meine Diplomarbeit in Böblingen. Ist also ein Stückchen Weg bis Köln oder Aachen.
Allerdings.
fkcd> Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer fkcd> Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen fkcd> zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw. Wir reden von Taktzyklen? In dem Fall würde mich wirklich sehr interessieren wie ihr in <10 Taktzyklen drei Farben separat setzt, inklusive einem Fading-Effekt. Ich gehe davon aus Kommunikation über I2C und RS232 findet im Interrupt statt, verfälscht also das Timing entsprechend (minimal).
Für meinen Bedarf wird das wohl zu eng werden - mein MoodCluster steuert 15 Kanäle (5 Würfel à 3 Farben) voneinander unabhängig an. Ich gebe allerdings zu daß ich bisher nur ein C-Programm verwendet habe und bei 8MHz gerade eben so 5Bit Auflösung hinkriegte.
Hm. Ist ein bischen schwer zu erklaeren. Wir haben die ersten 16 Zeitschlitze zu einem Interrupt zusammengefasst und verbrennen da fuer die Zwischentakte einfach Zeit mit NOPs. Die Bytes fuer das Ausgaberegister werden nachher (wenn mehr Zeit ist) vorberechnet (also fuer den jeweils naechsten PWM-Zyklus). Damit reduziert sich die Anzahl der Instruktion um einen RGB-Wert auszugeben auf 2 (ld + out). Die anderen Interrupts werden erst in den spaeteren Zeitschlitzen aktiviert, wo genug Zeit fuer einen Interrupt ist.
Was verwendet ihr als Spannungsversorgung? die zwei dicken TS7812 lassen >12V Eingangsspannung bei einiger Verlustleistung vermuten.
Schon, wir hatten so mit 13,5-14V Spannung geplant. Eigentlich ist dieser Spannungsregler eh nicht mehr notwendig, weil ich mittlerweile die Leds ueber eine Konstantstromquelle mit 20mA ansteuere. Da ist die Spannung die oben anliegt dann egal...
Wobei für GoL ja 5x5 ziemlich Mindestfeldgröße wäre, besser 10x10. Ihr wollt mit den Fnordlichtern in die Serienproduktion gehen?
Aehm. Hm. Nunja. Sind wir schon. Fast. ;)
fkcd> Danke fuer dein Feedback, ich hab die Antwort auch mal an die fnordlicht fkcd> Mailingliste geschickt. Was besprecht ihr dort alles und wieviel Traffic hat sie? Evtl. hätte ich Interesse zu joinen.
Garnicht so viel, vielleicht ~5 Mails im Monat und alles nur so Infos, weil Lars und ich eigentlich alles Per Real-Life machen %)
- fd0
Hey, Alexander...
AN> Wir haben die ersten 16 Zeitschlitze zu einem Interrupt zusammengefasst und verbrennen AN> da fuer die Zwischentakte einfach Zeit mit NOPs. Hmmm. Ich kann erahnen was du meinst. Müsste jedoch den Code sehen oder selber eine Weile herumprobieren wie man das komplett hinkriegt. Es ist dann ja eine Mischung zwischen vorberechneten festen Werten (für die ersten Zeitschlitze) und Countern (für die weiter hinten liegenden).
Die Idee am Anfang den Interrupt zu sperren ist sehr interessant. Werden anliegende Interrupts solange aufbewahrt bis sie erlaubt sind? Ich kenne es eher so daß IRQs dann verfallen, was bei der Kommunikation nicht so schön ist.
Ich verwende übrigens zwei 32-Byte Tabellen mit den jeweils auf PORTA+B auszugebenden Werten. Dadurch ist die Zeit welche in meiner Interruptroutine verbraucht wird konstant, jedoch muss ich jede Millisekunde diese Tabelle updaten während das Farbwechseln aktiv ist.
Was verwendet ihr als Entwicklungsumgebung? Ich habe den winavr-gcc und TwinAVR als prommer (ja, unter Windows)
AN> Schon, wir hatten so mit 13,5-14V Spannung geplant. Eigentlich ist dieser AN> Spannungsregler eh nicht mehr notwendig, weil ich mittlerweile die Leds AN> ueber eine Konstantstromquelle mit 20mA ansteuere. Da ist die Spannung die AN> oben anliegt dann egal... na, dem Atmel nicht ganz :) Konstantstromquelle klingt gut. Leider bin ich in Elektronik nicht sehr bewandert, ich konnte nur das zusammenlöten was ich im Internet als fertige Schaltpläne gefunden habe.
Eine anfängliche Idee, die ich hatte, jedoch mangels ausreichender Kenntnis wieder verwarf, war, die LEDs gar nicht über PWM, sondern über variable Konstantstromquellen anzusteuern. Eine Quelle besagte ihre Helligkeit sei linear zum durchflossenen Strom. (eine andere jedoch daß sich die Farbe leicht ändern würde dabei)
Wobei für GoL ja 5x5 ziemlich Mindestfeldgröße wäre, besser 10x10. Ihr wollt mit den Fnordlichtern in die Serienproduktion gehen?
AN> Aehm. Hm. Nunja. Sind wir schon. Fast. ;) Wie viele habt ihr schon? :)
[Fnordlicht-ML] AN> Garnicht so viel, vielleicht ~5 Mails im Monat und alles nur so Infos, weil AN> Lars und ich eigentlich alles Per Real-Life machen %) Ok. Bist du so nett und setzt 'Trickser@gmx.net' (mein Mailinglistenaccount) mit drauf?
:Zefiro: www.Zefiro.de
Hi,
* Zefiro Zefiro@Zefiro.de wrote:
Was verwendet ihr als Entwicklungsumgebung? Ich habe den winavr-gcc und TwinAVR als prommer (ja, unter Windows)
Der Code ist Assembler, die Entwicklungsumgebung hauptsaechlich [g]vim ;)
Prommen tun wir mit avrdude (per seriell mit bootloader) oder uisp (zum setzen der Lockbits und zum installieren des bootloaders)
Konstantstromquelle klingt gut. Leider bin ich in Elektronik nicht sehr bewandert, ich konnte nur das zusammenlöten was ich im Internet als fertige Schaltpläne gefunden habe.
Jo, dafuer hab ich jemanden gefragt, der sich damit auskennt[tm]
Die Konstantstromquelle kannst du btw. von uns uebernehmen, wenn du magst...
Wobei für GoL ja 5x5 ziemlich Mindestfeldgröße wäre, besser 10x10. Ihr wollt mit den Fnordlichtern in die Serienproduktion gehen?
AN> Aehm. Hm. Nunja. Sind wir schon. Fast. ;) Wie viele habt ihr schon? :)
Zur Zeit fliegen hier 5 Stueck rum: * 1x Prototyp auf Lochraster * 3x Prototyp selbstgeaetzt * 1x Prototyp Profiplatine
Dann hab ich noch eine weitere Profiplatine die bestueckt werden will, aber das wollte ich komplett als Fotos dokumentieren, sobald der Fotograf meiner Wahl mal wieder ein wenig Zeit dafuer hat :)
[Fnordlicht-ML] AN> Garnicht so viel, vielleicht ~5 Mails im Monat und alles nur so Infos, weil AN> Lars und ich eigentlich alles Per Real-Life machen %) Ok. Bist du so nett und setzt 'Trickser@gmx.net' (mein Mailinglistenaccount) mit drauf?
Kannst du eigentlich auch selber machen, https://continuity.koeln.ccc.de/cgi-bin/mailman/listinfo/fnordlicht
- fd0
* Zefiro Zefiro@Zefiro.de [2005-09-02 11:53]:
fkcd> Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer fkcd> Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen fkcd> zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw. Wir reden von Taktzyklen? In dem Fall würde mich wirklich sehr interessieren wie ihr in <10 Taktzyklen drei Farben separat setzt, inklusive einem Fading-Effekt.
movw XH:XL, tpH:tpL ldd output X+ out PortB, output
wobei tp auf einen Tabelleneintrag zeigt, der die Bitmaske der in diesem Zeitschlitz aktiven LEDs enthält. Diese Tabelle wird im Hauptprogramm für jeden Zyklus vorberechnet (also hundertmal pro Sekunde), wenn genug Zeit da ist.
Der nächste Zeitschlitz wird danach unabhängig davon ausgewählt, ob in diesem überhaupt eine Veränderung stattfindet.
Der Trick ist im Prinzip, dass im Timer-Interrupt nur noch die Ausgänge gesetzt werden, die eigentliche Arbeit aber außerhalb stattfindet.
Ich gehe davon aus Kommunikation über I2C und RS232 findet im Interrupt statt, verfälscht also das Timing entsprechend (minimal).
Ja, allerdings nur für den jeweils nächsten Zeitschlitz. Deshalb sind die Kommunikationsinterrupts im zeitkritischen Abschnitt deaktiviert (unschöne Lichtblitze).
Für meinen Bedarf wird das wohl zu eng werden - mein MoodCluster steuert 15 Kanäle (5 Würfel à 3 Farben) voneinander unabhängig an. Ich gebe allerdings zu daß ich bisher nur ein C-Programm verwendet habe und bei 8MHz gerade eben so 5Bit Auflösung hinkriegte.
Unser derzeitiger PWM-Code könnte ohne Änderung 8 LEDs mit 8 Bit Farbauflösung ansteuern. 16 LEDs sollten sich auch realisieren lassen, wird dann allerdings etwas eng im RAM.