Da ich so was schon länger mal machen wollte, und der Tiny2313 einer meiner "Lieblings-µC" ist, habe ich mal nen RGB-Controller mit IR-Fernbedienung dafür programmiert... klar, sowas gibt's schon öfter, aber das Teil hier füllt doch irgendwie eine Nische, diese billig-Controller haben ja nur recht wenig Programme (wird immer wieder gefragt, ob die sich erweitern lassen), und größere Controller mit mehr Funktionen kosten dann gleich ziemlich viel...
der Controller hier kann eine handvoll Programme, Feste Farben aussuchen, der beliebte "Rainbowfader", "Blob" (auf- und abfaden von Zufallsfarben), Feuersimulation, DMX-Empfang... das ist schon mehr, als diese billigen kleinen China-Controller können. Ausserdem lässt sich der Funktionsumfang leicht erweitern, da die SW modular und übersichtlich aufgebaut ist. Also alles was man gerne hätte an Lichtprogrammen, kann man sich selbst erstellen dafür - und aufgebaut ist das Teil für unter 10 Euro.
ich hoffe irgendwie auch ein bisschen, damit mehr Leute für die schöne Sprache Assembler gewinnen zu können, und dass - hier im Forum schon gemachte - vorschnelle Aussagen wie "Auch in Assembler ist ein Tiny2313 alleine mit RC5-Empfang und SW-PWM schon fast voll" in Zukunft besser überlegt werden....
Habe also mal angefangen, Konfigurationen wie Timer, Usart, Ports etc., sind ja nur ein paar Byte - dann SW-PWM dazu, die braucht 60 Byte für 3 Kanäle...
Auch in ASM muss man nicht immer das Rad neu erfinden, also habe ich mal nach ner RC5-Routine gesucht - gefunden habe ich (natürlich! :D) was bei Mikrocontroller.net, war aber in C - das sind aber nur ein paar Zeilen, also habe ich das in asm übersetzt, macht dann genau 94 Byte...
die Routine (von Peter Danegger, der macht sehr überlegte/ausgefeilte Sachen, großes Lob!) ist recht genial, die läuft in ner Timer-ISR, ändert den Timer (im Gegensatz zu z.B. Bascom-Empfangsroutine) aber nicht - daher kann man den zusätzlich noch für andere Sachen benutzen, ich brauche also für RC5-Empfang und SW-PWM zusammen nur einen Timer (nicht zwei, wie schon mal vermutet wurde), und nehme den auch noch als Zeitbasis für den Fader etc.
weiterer Vorteil: die Routine ist nicht auf nen Interrupt angewiesen, also wieder eine ISR weniger, und man kann (anders als z.B. bei Bascom) einen beliebigen Pin für den RC5-Empfänger nehmen... da man die PWM-Ausgänge ja ebenfalls auf beliebige Pins routen kann, wäre es also auch möglich, die SW auf diesen "Mini-Fader", der hier im Forum verkauft wird, anzupassen (in der Datei "Definitions.inc") ...ohne an der HW was zu ändern
damit ich rausfinde, welche Codes meine Fernbedienung (habe die von der Glotze, SEG, genommen) sendet, habe ich noch ein Display ran - dieses belegt den kompletten PortB... wenn man das nicht braucht, kann man das auch deaktivieren (in der Datei "settings.inc" die entsprechende Zeile auskommentieren), dann spart man noch mal 436 Byte für das ganze Display-Gedöns (eigentliche Ansteuer-Routinen: 298 Byte), und kann entsprechend mehr Programme rein machen...
wichtig: wenn kein Display dran hängt, muss das auf jeden Fall deaktiviert werden, meine LCD-Routine fragt das "busy"-Flag ab, wenn kein Display "antwortet", dann hängt die SW ewig beim initialisieren fest.
dann halt noch ein paar Programme rein gehackt, bzw. mehr oder weniger aus den SEDU-Ambilight-Standalone-Programmen übernommen...
hier mal ein kleines Video von der SW auf meinem Tiny2313-Experimentierboard, da werden ein paar Sachen durchgeschaltet:
mit den Ziffern-Tasten wird das Programm ausgewählt, mit Vol+ und - kann man die Helligkeit (global) einstellen, PGM+/- stellt dann je nach Programm die Farbe oder Geschwindigkeit ein. Die Geschwindigkeit wird für jedes Programm extra gespeichert, extra Helligkeit pro Programm wäre auch noch zu machen, wenn's denn jemand braucht...
Mit "0" kann man auf Maximalgeschwindigkeit schalten... mit der Ein-/Ausschalttaste wird der aktuelle Status gespeichert, und "ausgeschaltet" (LEDs aus) - mit einer beliebigen anderen Taste kann man dann wieder einschalten, natürlich kann man dem Ding auch komplett den Saft abdrehen, beim wiedereinschalten kommt exakt der letzte gespeicherte Stand...
Die SW ist modular aufgebaut, es ist sehr einfach, da weitere Programme hinzu zu fügen, oder welche weg zu lassen, die man nicht braucht - wie gesagt, ohne Display (das ist eigentlich nur Spielerei, braucht man nicht mehr, wenn man die Codes raus gefunden hat) hat man 436 Byte mehr (also noch 476 Byte insg., Tiny ist ja noch nicht voll), da kann man in Assembler schon ne Menge machen...
z.B. auch zusätzlich Steuerung über Tasten/Encoder - es ist auch eine Empfangsroutine für NEC-Protokoll in Arbeit, damit kann man das Teil dann über diese billige flache kleine Chinesen-Controller-FB steuern.
Und wenn man dann auch kein DMX braucht, kann man den Quarz auch noch weg lassen (da muss man nur ein paar Parameter ändern) und das Ganze auf nen Tiny25 portieren, damit dann nen wirklich kleinen Controller bauen, der z.B. mit LED und Akku zusammen in ne Christbaumkugel rein passt... - mit nem Tiny45 oder 85 dann auch mit *wesentlich* mehr Programmen...
Eine Portierung für den Tiny25 und für das SEDU-Board (bzw., da wurde es ja drauf entwickelt OK, auf dem alten) mit mehr Funktionen, Tastensteuerung etc. folgt dann noch...
unten anbei die SW inkl. Hexfile (2008 Byte), ausführliche Erklärung, was die alles wie macht und wie die aufgebaut ist, folgt noch... ebenso Schaltplan und Layout zum leichten Nachbau auch für Anfänger. EDIT: Diese SW enthält ein paar kleinere Bugs, und auch größere (DMX-Empfang funktioniert nicht richtig, ist wohl noch keinem aufgefallen :D) - die wird aber nicht mehr geändert, wie gesagt, das Display braucht man eigentlich nicht, man kann ggfs. mit dieser SW die Tastenbelegung rausfinden, und dann die neue "Standard-SW" benutzen...
EDIT 22.12.2012: Schaltplan für die "Vollversion" (mit Display und DMX) ist nun hier zu finden, Lötmeister macht dann ein Layout daraus, vielen Dank schon mal!
EDIT 01.04.2012: Hier gibt es nun die neue "Standard-Version" für Tiny2313, ohne Display, dafür mit mehr Programmen.
EDIT 02.04.2012: Hier hat Lötmeister PDFs der Schaltpläne, Bestückungsplan, PDF zum selbst ätzen und Bauteileliste für die "Standard-Version" mit DMX und Tiny2313/4313 veröffentlicht.
Hier noch ein Hinweis: Ich bin kein Hersteller, man kann das also nicht bei mir fertig aufgebaut kaufen. Ebensowenig wie als Bausatz, ich ätze auch keine Platinen für andere. Das Ganze ist ein Hobby von mir, ich stelle hier aus reiner Freundlichkeit die komplette Doku zum nachbauen rein, kann aber keinerlei praktische Hilfe anbieten - ebensowenig wie irgendwie in irgendeiner Weise Verantwortung übernehmen, falls bei jemandem der Nachbau nicht klappen oder gar irgendwelche Schäden auftreten sollten!
Ebenso ist das hier zum privaten, nichtkommerziellen Nachbau für Bastler gedacht - wer vorhat, damit eine (Klein-)-Serie zu produzieren und zu verkaufen, möge sich doch bitte vorher an mich wenden!