Grüße *, fasziniert von den WS2812 frage ich mich noch immer, warum es dafür keine High-Power Varianten gibt. Gesehen hab ich schon, daß jemand fettere Stromtreiber direkt am WS2811 Chip anschließt, dank fehlender Gamma-Korrektur der WS281? ist das aber keine Option. Hätte ich einen PIC mit CLC, wäre das sehr einfach: Ich müßte "nur" den Client-Teil implementieren, und maskiere das Signal im CLC, solange ich bei den ersten drei Bytes bin. Danach würde IN=OUT und die Hardware piped die Bytes einfach durch. Wie aber mache ich das auf so einer kleinen Kiste? Ich kann zwar senden per Bit-Bang, aber hat hier schon mal jemand erfolgreich empfangen? Bei 125ns minimaler Instruction-Cycle muß ich sowas wie 2 Instructions zählen und alleine das Kopieren eines Zählerwertes dauert schon länger. Hätte jemand eine Idee?
:
Bearbeitet durch User
Christoph S. schrieb: > Hätte jemand eine Idee? Wie wäre es wenn du mal erklärst, was du überhaupt machen willst und warum ?
Ein PIC12F1572 hat m.E. keine CLC. Meinst Du einen PIC12F1501? Gamma-Korrektur ist keine schlechte Idee. Das WS2812-Timing zu nutzen, macht z.B. dann Sinn, wenn man vorhandene Controller (ArtNet, sACN, DMX, …) mit '1-wire' nutzen will. Christoph, ich nehme an, dass Du in etwa darauf hinaus willst. Allerdings finde ich 70ct pro 'RGB-Knoten' ohne Stromregler und ohne LEDs im Vergleich zum WS2811 ziemlich teuer, um z.B. längere Streifen oder gar Matrizen damit zu bauen. Bei 20mA nimmt man Längsregler. Bei HighPower-Leds (350/700mA) kann man schon fast über Buck-Regler nachdenken, dann stehen auch die Kosten für den PIC12F1501 nicht mehr so im Vordergrund.
:
Bearbeitet durch User
Hi, Torsten C. schrieb: > Ein PIC12F1572 hat m.E. keine CLC. Meinst Du einen PIC12F1501? Ich denke er meint schon den 1572, denn er schreibt er Sinngemäß "Wenn ich einen PIC mit CLC HÄTTE, dann... Habe ich aber nicht" Aber zur Frage: Christoph S. schrieb: > Wie aber mache ich das auf so einer kleinen Kiste? Ich kann zwar senden > per Bit-Bang, aber hat hier schon mal jemand erfolgreich empfangen? Bei > 125ns minimaler Instruction-Cycle muß ich sowas wie 2 Instructions > zählen und alleine das Kopieren eines Zählerwertes dauert schon länger. > > Hätte jemand eine Idee? Vorweg: Es gibt gerade bei den Pics nicht DEN EINEN FÜR ALLES. Im Gegenteil - gerade bei den PICs gibt es viele hochspezielle Bausteine. Wenn dir die lösung mit dem einen Typ nicht so recht gelingen will, warum dann noch auf einen geeigneteren Ausweichen -> Beispielsweise den von Thorsten genannten 12F1501? Das gilt aber unabhängig vom konkreten Projekt für ALLE Anwendunen wo µC drin vorkommen... Zumindst sollte man immer abklären ob das eine Sinnvolle Option ist oder ob estwas dagegenspricht (nicht beeinflussbare Vorgaben, Preis usw.) Ansonsten: Ich selber habe mit dem WS2812 noch nichts gemacht (Mit den beiden hier genannten Pics aber schon), jetzt nur schnell das Datenblatt überflogen: Kann also sein das ich auf die schnelle etwas übersehen habe! Auch habe ich jetzt nicht überprüft ob sich etwas gegenseitig ausschließt, z.b. wegen mehrfachbelegung der Timer... Zuerst einmal: Du musst ha nicht gleichzeitig Senden und Empfangene Bits auswerten, sondern nur entweder Empfangen und Auswerten, oder Empfangen und ungesehen weiterreichen mit der Prüfung auf ein SEHR SEHR langes Low. Ansosonsten würde ich,wenn das mein Projekt wäre, die folgende Idee auf Machbarkeit prüfen. Unter der Annahme das die drei PWM Module ja schon für die LED Ansteuerung verbraten sind! Das ganze wird über das ESUART im Syncronen Modus abgewickelt. Zum Senden von vergleichbaren Telegrammen oder PWM ähnlichen Signalen mit einer Auflösung von 8 (9) Bit oder weniger ist das durchaus gängige Praxis. Man sendet ein SPI Telegram das elektrisch dem auszugebenden Puls entspricht. Die CLK-Leitung ignoriert man einfach. Das ganze kann man natürlich noch etwas weiter treiben und versuchen auch den Empfang über dieses Modul abzuwickeln. Dann muss man nur noch den empfangenen Wert mit einem Schwellenwert vergleichen und kann dann daraus schließen was gesendet wurde. Dafür hat man viel Zeit (10µs), denn der Empfang des nächsten Bytes läuft ja über die Hardware normal weiter. Für die ersten drei Bytes werden die Daten in ein Array geschrieben. Danach werden die Daten einfach um ein Bit zeitversetzt wieder ausgesendet. (ggf. nach Korrektur). Ausserdem muss noch eine Prüfung erfolgen wie oft 00h ohne Unterbrechung empfangen wurde. Ist ein bestimmter Schwellenwert erreicht wird das als Reset betrachtet und die Daten werden ins PWM Register übernommen. Das wirkliche Problem bei der ganzen Sache ist aber das gerade für den Empfang die Abweichungen zwischen der Clock des Senders und des Empfängers nicht zu groß sein dürfen. Dafür muss man sich ebenfalls etwas einfallen lassen - das wird vielleicht sogar am meisten Gehirnschmalz verbraten. Eine Möglichkeit wäre evtl. dabei das DIN Signal noch an einen weiteren Pin zu legen und den Datenempfang bei jedem LOW-TO-HIGH Wechsel neu zu starten. So das die Gangabweichung jedesmal zurückgesetzt wird. Aber vielleicht geht es mit ein wenig Nachdenken noch eleganter... Soll ja nur eine Anregung sein. Aber wie gesagt: Ich kann gerade auch völlig danebenliegen. Ist ne Idee ins Blaue hinein! Gruß Carsten
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.