Adafruit Neopixel Library und Timer

Hallo zusammen,

hat schon jemand sich intensiver mit der Adafruit Neopixel Library beschäftigt? Also die hier:

Ich kann mich mit C nicht wirklich aus, aber für mich sah es so aus, wie wenn diese Library nicht mit den Timern das ATMegas direkt arbeitet, sondern über micros(). Ich würde nämlich gerne diese Library zusammen mit der Tone Library (diese hier: Google Code Archive - Long-term storage for Google Code Project Hosting.) verwenden, und brauche zwei Töne. Die Tone Library würde meinem Verständnis nach Timer 2 und 1 verwenden, während micros() und millis() Timer 0 verwenden. Sehe ich das so richtig? Würde das also gehen?
Danke und Grüße,

Sven

Neopixel sind praktisch WS2811/WS2812 Controller. Die Bibliothek arbeitet nicht mit Timer, die wären zu langsam, die Datenübertragung erfolgt über einen Teil Assemblercode.

Grüße Uwe

Danke für die schnelle Antwort. Aber in diesem Assembler fand ich für mich nichts Erkkennbares, was auf eine Timer hinweist. Wie kann ich denn herausfinden, mit welchen Timern die Library arbeitet, damit ich evtl. noch die tonelibrary verwenden kann. Oder kennt jemand einen Weg zwei Töne (zwischen 400 und 440Hz) zu erzeugen? Würde es eventuell gehen einfach einen PIN über micros() zu blinken, um einen Ton in diesem Bereich zu erzeugen? Ein halbes Hz hin oder her wäre dabei nicht schlimm

Hast Du's probiert und es funktioniert nicht oder hast Du nur Zweifel?
Grüße Uwe

Ich habe nur Zweifel bisher, aber ich werde es auf jeden Fall ausprobieren. Ich wollte nur im Vorfeld herausfinden, ob schon jemand was dazu weiß. Ab morgen abend habe ich wieder ein Breadboard mit allem Zubehör, dann wird es ausprobiert.

Grüße,

Sven

Du kannst die jeweiligen Timer deaktivieren indem du die drei CSx0..2 Bits im TCCRxB Register auf 0 setzt, wobei "x" für die Nummer des Timers steht.

Dadurch kannst du vielleicht durch Ausprobieren rausfinden welcher benutzt wird wenn danach eine Lib nicht mehr funktioniert.

hi,

während die daten zum WS2811 geschickt werden, passiert nichts anderes. das timing ist so eng und muß so genau eingehalten werden, daß einfach sonst nicht ausgeführt werden kann. das mußte ich feststellen, als ich eine IR-fernbedienung mit einbeziehen wollte.
bei etwa 15 RGB-leds ist das datenschicken in etwa einer 1000stel sekunde erledigt, dann könntest Du auch Deine tonfrequenz mit micros erreichen.
oder Du müßtest den assembler-teil der fastspi_led umbauen, einige noop sind da schon drin, aber...

gruß stefan

hi,

Aber in diesem Assembler fand ich für mich nichts Erkkennbares, was auf eine Timer hinweist.

wenn sie arbeitet wie die fastspi_led, gibt's auch keine timer. da wird mitgezählt, welcher befehl wieviele prozessortakte braucht und dementsprechend gesendet, wo die ausführung zu schnell wäre, werden leertakte eingefügt (eben diese noop im code).

gruß stefan

Eisebaer:
hi,

Aber in diesem Assembler fand ich für mich nichts Erkkennbares, was auf eine Timer hinweist.

wenn sie arbeitet wie die fastspi_led, gibt's auch keine timer. da wird mitgezählt, welcher befehl wieviele prozessortakte braucht und dementsprechend gesendet, wo die ausführung zu schnell wäre, werden leertakte eingefügt (eben diese noop im code).

gruß stefan

Sie arbeitet sicher wie die fastspi_led.
Das wollte ich sagen; Hatte ich mich nicht klar ausgedrückt?

Neopixel sind praktisch WS2811/WS2812 Controller. Die Bibliothek arbeitet nicht mit Timer, die wären zu langsam, die Datenübertragung erfolgt über einen Teil Assemblercode.

Grüße Uwe

@uwefd: Die explizite Erwähnung der Prozesstakte die mitgezählt werden hat es mir verständlicher gemacht. Obwohl jetzt im Nachhinein eigentlich Dein Post klar erscheint. Mir war nicht klar wie man im Assembler auf ein genaues Timing kommt, ohne Timer. Aber jetzt wird mir klar, warum jede Taktfrequenz darin einen eigenen Bereich hat. Ich werde jetzt dann einfach mal mit der Tone Library arbeiten, und zusätzlich mit micros() experimentieren, da Teile des Codes irgendwann auch auf einem ATTiny laufen sollen, und da mag die Tone Library nicht. Danke für Eure Erklärungen, und eine schöne Woche,

Sven