kleines Problem,
habe etwas Software geschrieben unter Verwendung der FastLED LIB für
einen Arduino nano(V3) mit Nokia LCD 5110, einer eigenen I2C Tastatur
und DS1307new LIB.
Als der m328p zu eng wurde habe ich einen Arduino clone auf Basis des
m1284p mit mighty optiboot aufgebaut
http://adventuresinarduinoland.blogspot.de/2011/04/minimal-arduinoxbeepachube-sensor.html
1. Problem,
meine funktionierenden Timer Routinen vom m328p auf dem Timer1 schienen
am m1284p nicht mehr zu arbeiten, also auf Timer3 ausgewichen.
Bei Timer1 Nutzung versagte die LCD5110 Ansteuerung.
Anlage LIB: LCD5110_Basic.ZIP
2. Problem,
auf dem m328p arbeitet die FastLED Lib perfekt, eine WS2812b wird in
30µs bedient, entspricht dem Datenblatt mit 1,5µs pro Bit x 24, die LED
fühlt sich angesprochen. Auf dem m1284p wird genau dieses zu 33µs für 24
bit, die LED fühlt sich nicht mehr richtig angesprochen, es leuchtet
voll weiss!
Mit der WS28xx LIB von Tim CPLD hier klappt das zwar wieder auf 30µs
aber es wären zu viele Änderungen im Sourccode.
hat jemand ne Idee wie man nur den Bitbang Code in der FastLED LIB
tauscht oder die beiden LIBs kompatibel im Aufruf oder der
Initialisierung bekommt?
Anlage LIB: FastLED.ZIP, light_WS2812.ZIP
Mark Haber schrieb:> Wie hast du das Problem mit FastLED behoben?
mit
#ifdef F_CPU
#undef F_CPU
#define F_CPU 1440000
// statt 16MHz,
// sind die Impulse 10% zu lahm
// definiere die CPU 10% langsamer,
// dann passt es wieder,
// natürlich gibt es Seiteneffekte
// bei UART und anderswo,
// aber wo es stört kann man immer noch
// (F_CPU+1600000) setzen.
#endif
PS der Autor von fastLED wollte oder konnte nicht helfen Begründung
m1284p ist kein Arduino und er hat auch keinen, ich sollte ihm einen
schicken.
https://github.com/FastLED/FastLED/issues/121
Mark Haber schrieb:> Sehr interessante Loesung. Das fuegst du am Anfang des Arduino> Programmes ein, nehme ich an?
ja
> Zum PS: Hast oder wirst du ihm einen schicken?
nö, wer bin ich denn, habe weder die Zeit noch deswegen welche
aufzubauen und versandfertig zu machen und zur Post zu trappern, noch
übermäßig Geld diese zu versenden. Das Teil kann man bei ebay bestellen
wenn es den Autor interessiert. Es gibt Aufbauanleitungen das auf einem
Breadboard mit einem DIL40 zu bauen, also die Ausrede das der Autor das
nicht verifiziern kann ist dünne.
Joachim B. schrieb:> Mark Haber schrieb:>> Sehr interessante Loesung. Das fuegst du am Anfang des Arduino>> Programmes ein, nehme ich an?>> ja
Wie genau meinst du das mit dem temporaeren Ruecksetzten mit
"(F_CPU+1600000)"? Kannst du ein Minimalbeispiel bringen?
>> Zum PS: Hast oder wirst du ihm einen schicken?>> nö, wer bin ich denn, habe weder die Zeit noch deswegen welche> aufzubauen und versandfertig zu machen und zur Post zu trappern, noch> übermäßig Geld diese zu versenden. Das Teil kann man bei ebay bestellen> wenn es den Autor interessiert. Es gibt Aufbauanleitungen das auf einem> Breadboard mit einem DIL40 zu bauen, also die Ausrede das der Autor das> nicht verifiziern kann ist dünne.
Nur die Ruhe und fuer mich sind keine Rechtfertigungen noetig. Das war
eine einfache Frage.
Mark Haber schrieb:> Wie genau meinst du das mit dem temporaeren Ruecksetzten mit> "(F_CPU+1600000)"? Kannst du ein Minimalbeispiel bringen?
OK ich versuche es und habe noch einen anderen Weg im Kopf......
ich nutze winXP
öffne im Explorer das Fenster C:\Programme\Arduino\libraries
klicke auf SUCHEN
Dateien und Ordner
Dateiname *.*
Ein Wort oder Begriff innerhalb der Datei
F_CPU
suchen in "libraries"
weitere Optionen
Haken setzen bei:
Systemordner durchsuchen
versteckte Elemente durchsuchen
Unterordner durchsuchen
Groß-/Kleinschreibung beachten
SUCHEN
finde z.B. in
C:\Programme\Arduino\libraries\Wire\utility\twi.c
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
und möchte da korrigieren weil es vielleicht nicht mit der 10%
Abweichung klappt (ist bei mir noch kein Problem gewesen)
könnte da nun einfügen:
so könnte ich das an allen LIBs machen die ich nutzen will oder wo diese
"Korrektur" stört.
aber mir ist eingefallen das es eleganter wäre statt #undef nur in der
fastLED Lib zu ändern:
z.B. C:\Programme\Arduino\libraries\FastLED\delay.h
Naja, das ist nur eine Frickelloesung die nicht Zukunftsbestaendig ist.
Vermutlich sende ich dem Autor einen Controller, das dauert aber noch
einige Wochen.
Mark Haber schrieb:> Vermutlich sende ich dem Autor einen Controller, das dauert aber noch> einige Wochen.
welchen baust du denn?
SMD DIL mega1284p oder 644?
eigenes Layout?
Joachim B. schrieb:> PS der Autor von fastLED wollte oder konnte nicht helfen Begründung> m1284p ist kein Arduino und er hat auch keinen, ich sollte ihm einen> schicken.>> https://github.com/FastLED/FastLED/issues/121
hihi nun die Antwort:
Closing this thread as I am not going to be doing any more AVR platform
work for more platforms beyond the 32u4, mega328p, and mega 2560.
na ja, meine Frickellösung läuft
schon witzig die Arduino "Gemeinde" kommt das von gemeinsam oder
Gemeinheit?
Joachim B. schrieb:> noch ungetestet.
gilt nicht mehr:
"endgültige" Lösung gefunden,
welche nur AVR m1284p und fastled anspricht und alle anderen F_CPU
unangefasst lässt:
in delay.h in der fastLED LIB aus: