Sofirn SC31 Pro Anduril Heckschalter Modding

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
So nachdem Leute es mir schmakhaft gemacht haben Anduril meiner SC31 Pro zu überarbeiten, benötige ich voraussichtlich einige Tipps.

Und damit im anderen Theard nicht weiter OffTopic betrieben wird, erstell ich schon mal dieses Theard.

Kurzeinleitung:
- Jemand hatte gefragt ob man die SC31 Pro nicht auch mit Heckschalter betreiben kann.
- Das geht natürlich nicht, damit kann man nur Stromlos schalten.
- @SammysHP hatte die Idee Anduril umzuschreiben, dass bei Spannungswiederkehr Anduril einfach die zuletzt verwendete Leuchtstufe wählt, und bei gedrückten Seitenschalter im Moon startet.

Das fand ich interessant und versuch mich mal an das Thema.
Bisher hatte ich noch keine Lampe umprogrammiert und werde mich in das Thema erstmal einlesen und hier Fragen stellen.
Und natürlich über Fortschritte berichten.


Gruß
pho

Es ist nicht so schwierig.
Ich mache meine Andúril-Versionen unter Windows und auch dort geht es völlig problemlos, auch ohne Atmel AVR Studio oder solchen Kram. Die nötige Software ist kostenlos zu haben und die Installation ist nicht so schwierig, wenn man ein paar Grundregeln beachtet.

Alles weitere dann bei Bedarf in deinem Thread.

Welche Software schlägst du den vor?
Und welche Grundregeln sollte ich beachten?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Welche Software schlägst du den vor?
Das kommt darauf an, wie tief du jetzt in die Materie einsteigen möchtest. Für den Anfang benötigt man aus meiner Sicht keine vollständige Entwicklungsumgebung wie Netbeans, Eclipse oder das Atmel Studio.

Um eigene Andúril-Versionen erstellen zu können, benötigt man eigentlich nur einen Compiler, der den Programmcode in eine MCU-kompabible Firmwaredatei übersetzt.
Den Programmcode kann man auch in einem höherwertigen Texteditor (z.B. Notepad++ oder ähnliche) noch gut bearbeiten.
Außerdem muss man Windows beibringen, so genannte Shell-Skripte zu verstehen (.sh-Dateien). Mit Bordmitteln geht das nicht automatisch von Haus aus.

Entweder kann man das "Windows Subsystem for Linux" aktivieren (habe ich nicht versucht) oder man installiert eine entsprechende Shell-Umgebung. Ich nutze "Git for Windows", das für diesen Zweck völlig ausreicht. Es gibt sicher noch mehr Möglichkeiten, aber ich beschränke mich auf diese.

Als Compiler habe ich mit der Windows Toolchain AVR-GCC 5.3.0 von SysProg gute Erfahrungen für die Kompilierung von Andúril unter Windows gemacht. Das ist zwar nicht topmodern, funktioniert aber zuverlässig.

Was muss man machen?
- "Git for Windows" herunterladen und installieren. Es werden während der Installation haufenweise Einstellungen abgefragt. Man kann überall die vorgeschlagenen Einstellungen übernehmen.

- Windows Toolchain AVR-GCC 5.3.0 herunterladen und installieren. Dafür einen möglichst einfachen Verzeichnispfad wählen, meine liegt unter D:\SysGCC.
Ich rate dringend von tief verschachtelten Verzeichnissen ab und ebenso von Leerzeichen oder exotischen Sonderzeichen im gesamten Verzeichnispfad!
Auch hier sonstige ggf. vorgeschlagene Voreinstellungen übernehmen.

- Andúril-Softwarepaket herunterladen ("download tarball" klicken) und zuerst die darin enthaltene Datei "fsm-r490.tgz" entpacken an einen Ort deiner Wahl.
Danach diese ebenfalls in einen möglichst einfachen Verzeichnispfad entpacken, so etwas wie D:\Taschenlampen oder D:\Anduril oder ähnlich. Leerzeichen oder exotische Sonderzeichen im gesamten Verzeichnispfad vermeiden!

Der Verzeichnispfad der Andúril-Software ist recht tief verschachtelt und sieht z.B. so aus:
D:\Anduril\fsm-r490\~toykeeper\flashlight-firmware\fsm\ToyKeeper\spaghetti-monster\anduril

Dorthin kannst du schon mal gehen und nachsehen, ob dort eine Datei namens "build-all.sh" zu finden ist.
Ist das der Fall?
Falls ja, bitte mal von "build-all.sh" das Kontektmenü öffnen (rechte Maustaste --> Eigenschaften).
Sieht das so aus?
Falls nicht, bitte auf "Ändern" klicken und dort "Git for Windows" als bevorzugte App auswählen.

Wenn alles passt, dann kannst du testweise mal auf "build-all.sh" doppelklicken.
Im besten Fall werden jetzt rund 35 .hex-Dateien für ~35 verschiedene Lampen erzeugt. Das dauert einige Sekunden. Die frisch erzeugten .hex-Dateien findest du nun im gleichen Verzeichnis wieder wie die Datei "build-all.sh".

Hat das funktioniert? Gut, dann kannst du ab jetzt eigene Firmware erzeugen.

Damit nicht immer 35 Firmwaredateien für gar nicht benutzte Lampen kompiliert werden, kann man die Datei "build-all.sh" noch bearbeiten.
In der Zeile
for TARGET in cfg-*.h ; do
kann man den Platzhalter-Namen "cfg-*.h" durch den vollständigen Namen ersetzen, z.B. "cfg-emisar-d4v2.h", um somit dann nur diese eine Datei zu kompilieren.

Alternativ kann man auch eigene Build-Skripte erstellen (build-all.sh als Vorlage kopieren) und diese entsprechend anpassen.

Zuviel zur Grundlage, damit das alles überhaupt grundsätzlich funktioniert.
Im nächsten Schritt kann man sich mal mit den verschiedenen Optionen vertraut machen.
Man kann schon viel erreichen, indem man nur in den cfg-*.h-Dateien bestimmte Dinge aktiviert/deaktiviert.

Und irgendwann muss das auch noch auf die Lampe, aber das kommt dann später, wenn die Hardware da ist.
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Herzlichen Dank für die ausführliche Antwort. Ich werde mich jetzt erstmal etwas damit beschäftigen und mich wieder melden. :thumbsup:
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Die Hardware ist noch nicht da.
Aktuell beschäftige ich mich damit ein klein Überblick über das Programm zu verschaffen. Und hoffe mal das ich alles soweit richtig verstehe.
Ich gehe trotzdem nicht von aus, dass es auf Anhieb funktioniert. Das muss es ja auch nicht und lernt. Deshalb möchte ich ein "Notfall-Plan" haben falls mein Gewerke nicht funktioniert.

Die Frage:
Ist "anduril.sofirn-sp36.hex" auch auf der SC31 Pro aufgespielt? Oder muss dort was geändert werden?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Die Frage:
Ist "anduril.sofirn-sp36.hex" auch auf der SC31 Pro aufgespielt? Oder muss dort was geändert werden?
Das ist bei allen Sofirn-Andúril-Lampen aufgespielt, auch bei der SC31Pro.

Du musst dir aber keine Sorgen machen.
Ich habe kleines CMD-Skript geschrieben, dass die Kommunikation mit der Lampe prüft, ein Backup der Original-Firmware erstellt, den Namen der zu schreibenden Firmware-Datei abfragt und schließlich die Firmware-Datei auf die MCU des Lampentreibers schreibt.

Das kannst du gerne haben, dann hättest du also auf jeden Fall ein Backup der vorhandenen Firmware.
 
  • Danke
Reaktionen: pho

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Darauf komme ich gerne zurück, wenn in laufe kommender Woche die Hardware am stehen hab.
Ich will es erst durch den Schalterloch versuchen eine Verbindung aufzubauen, so wie es SammysHP gemacht hat.
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Ich will es erst durch den Schalterloch versuchen eine Verbindung aufzubauen, so wie es SammysHP gemacht hat.
Das ist ja davon unabhängig.
Die mechanische Verbindung der Signalleitungen mit der MCU spielt für die Software-Seite keine Rolle.

P.S.: Was für einen Programmieradapter hast du dir bestellt? USBasp?
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: pho

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Ich hatte mir diesen bestellt, ich dachte das wäre nicht so wichtig und würde mehr auf das Programm ankommen? Oder geht das Programm nur mit ein bestimmten Adapter?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Ich hatte mir diesen bestellt, ich dachte das wäre nicht so wichtig und würde mehr auf das Programm ankommen?
Nein, nicht unbedingt.
Das Programm muss den Programmieradapter auch ansprechen können und der Adapter muss mit Atmel-Chips "sprechen" können.

Der Adapter, den du verlinkt hast, ist ein Adapter, um Flash-Speicherchips (BIOS) zu programmieren. Der ist leider nicht geeignet... :(
Oder geht das Programm nur mit ein bestimmten Adapter?
Der Adapter muss das Atmel-ISP-Protokoll beherrschen. Davon gibt es sehr viele verschiedene, von billig bis teuer.
Beispielsweise ist jeder einfache und günstige USBasp-Adapter geeignet. Solche benutze ich.
 
  • Danke
Reaktionen: DirkTripleD und pho

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Danke für den Hinweis, da hätte ich mich genauer informieren sollen.

Dann bestell ich mal schnell den richtigen, da hätte ich mich geärgert wenn ich soweit gewesen wäre. :facepalm:
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
So die Hradware ist nun da.

Wie muss ich nun weiter vorgehen um ein Programm auf der Lampe zu bekommen?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Für den USBasp-Stick musst du noch einen Treiber installieren, damit Windows das Ding richtig ansprechen kann.
Dafür solltest du dir erst einmal Zadig 2.5 herunterladen, ein kleines USB-Treiber-Installationswerkzeug.

Dann folgende Schritte durchführen:
- USBasp-Stick einstecken
- zadig-2.5.exe ausführen
- falls kein Gerät angezeigt wird, auf "Options" --> "List All Devices" klicken
- in der Auswahlliste "USBasp" auswählen
- als Treiber "libusb-win32 (v1.2.6.0)" auswählen und installieren
- im Gerätemanager überprüfen, ob der Stick richtig erkannt wird.

Danach geht es um die elektrische Verbindung zwischen dem Stick und der MCU der Lampe.
Bei ISP gibt es sechs Leitungen: MISO, MOSI, SCK, RST, GND und VCC.
Diese müssen wie hier abgebildet mit den Pins der MCU verbunden werden:

Bild_2021-01-05_203527.png

GND kann man alternativ auch über die Gehäuse-Masse sicherstellen, die anderen fünf Signalleitungen müssen aber die MCU-Pins berühren.
Der Pin 1 an der MCU ist entweder durch einen aufgedruckten hellen Punkt oder eine kleine Delle im Gehäuse markiert.

Die schematische Darstellung des 10-poligen ISP-Anschlusses oben im Bild zeigt die Sicht auf die Pin-Seite des Steckanschlusses.

Ab jetzt wäre man rein technisch in der Lage neue Firmware aufzuspielen.

Im nächsten Schritt geht es dann um die richtige Software und wie man das macht.
 
  • Danke
Reaktionen: DirkTripleD und pho

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Für das Aufspielen der Firmware auf eine Andúril-Lampe benötigt man ein Flash-Programm, welches das Atmel-ISP-Protokoll beherrscht.

Ich selbst verwende "avrdude", ein einfaches Kommandozeilen-Programm, das zwar wenig intuitiv oder gar schön ist, aber dafür sehr zuverlässig funktioniert.

Da viele Windows-Nutzer sich mit Kommandozeilen-Programmen etwas schwer tun, habe ich für dich zwei CMD-Dateien erstellt, die zunächst die Verbindung zur Lampe testen, dann (falls gewünscht) ein Backup der Original-Firmware erstellen, den Namen der zu schreibenden Firmware-Datei abfragen und schließlich die Firmware-Datei auf die MCU des Lampentreibers schreiben.

Mein Vorschlag:
Erstelle ein eigenes, leeres Verzeichnis, in welches du a) die zu schreibende Firmware-Datei für die Lampe (.hex-Datei) und b) alle Dateien aus dem angefügten .zip-Archiv kopierst.

Jetzt einfach nur noch die passende .cmd-Datei doppelklicken und der Flashvorgang inkl. diverser Abfragen startet.
Die Datei "flash85.cmd" ist für Lampen mit einer Attiny85-MCU geeignet (z.B. die Sofirn-Lampen oder Lumintop FWxx).
Die Datei "flash1634.cmd" ist dagegen für Lampen mit der Attiny1634-MCU (z.B. Noctigon K1 oder Emisar D4V2) vorgesehen.

HINWEIS:
Es gibt diverse Rückfragen und wenn du irgendwo Blödsinn eingibst oder dich vertippst, dann bricht das Programm ab, ohne das etwas passiert. Es besteht also nicht die Gefahr, dass du die Lampe "kaputtflashst".
 
  • Danke
Reaktionen: DirkTripleD

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Leider sagt mir das Programm, dass der den USB Device nicht finden kann oder hab ich keine richtige Verbindung zur Lampe?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
OK, dann stecke bitte mal nur den USBasp-Stick in den USB-Port ein (ohne verbundene Lampe) und starte die CMD-Datei, egal welche.

Mache dann bitte mal einen Screenshot von dem Fenster (Alt + Druck), nachdem "Die Kommunikation mit der Lampe wird getestet. Bitte warten..." abgelaufen ist.
 
  • Danke
Reaktionen: LightintheNight

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Ja, Verbindung hat er aufgebaut. Von der Lampe gelesen und ein Backup erstellt und anschließend meins aufgespielt.

Jetzt macht die Lampe gar nichts mehr :facepalm: ich versuch jetzt wieder das Backup aufzuspielen.
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Er macht eine Verbindung, lädt und schreibt das Backup (31.hex), beim schreiben blink einmal kurz die Lampe und danach passiert nichts mehr.

1609884320063.png
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Es gibt einen Fehler beim Datentransfer.
"verification error, first mismatch at byte 0x0000"

Offenbar werden die Daten beim Transfer auf die Lampe korrumpiert. Das ist meistens ein Zeichen für zu lange Kabel oder minderwertige elektrische Kontakte (Stecker, Kontaktpins auf die MCU o.ä.).

Kannst du bitte mal Fotos davon machen, wie das bei dir verkabelt ist und insgesamt aussieht?
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Kontaktfehler will ich nicht ausschließen schließlich muss ich von Hand die Kontakte draufdrücken, durch das Schalterloch.

Was ich mir vorstellen kann das beim Backup erstellen bereits ein Kontaktfehler vielleicht gab und das Backup fehlerhaft ist.

Um sicher zu gehen, kann ich einfach die fertige Datei für die SP36 nehmen? Also macht die Lampe dann irgendwas mit der Datei?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Kontaktfehler will ich nicht ausschließen schließlich muss ich von Hand die Kontakte draufdrücken, durch das Schalterloch.
Es ist aus der Ferne immer schwierig einzuschätzen, aber das ISP-Kabel vom USBasp-Stick zur Lampe ist vielleicht zu lang.
Meine ISP-Kabel für die Verwendung an USBasp-Sticks sind nie länger als max. 30 cm.

Bei längeren Kabeln hatte ich auch hin und wieder den Fehler, der aktuell bei dir auftritt.
Was ich mir vorstellen kann das beim Backup erstellen bereits ein Kontaktfehler vielleicht gab und das Backup fehlerhaft ist.
Das wäre zwar möglich, aber dagegen spricht, dass nach dem Rückspielen des Backups dennoch wieder der "verification error" auftritt.

Das Programm meldet auch 0x00 bei der Lampe und 0xA9 in der Backup-Datei. Und da 0xA9 korrekt klingt, spricht viel dafür, dass die Backup-Datei selbst auch OK ist.
Um sicher zu gehen, kann ich einfach die fertige Datei für die SP36 nehmen? Also macht die Lampe dann irgendwas mit der Datei?
Die kannst du verwenden, aber ich sage mal voraus, dass der gleiche Fehler erneut auftritt.

Du kannst es mal testweise auch mit dieser Firmware versuchen.
Die habe ich gerade auf die Schnelle erstellt.
Das ist die Software, wie ich sie auf meinen Anduril-Lampen benutze und die auch sicher funktioniert.
Es geht ja jetzt erstmal nur um einen Test.
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Ich habe gerade jede Leitung durchgemessen von USBasp an bis zu den Pinnen. Der Widerstand ist bei allen kleiner 1 Ohm.

IMG_4509.jpg

Den blauen ist der RST den muss ich immer einhacken und der halbe Stecker sind die restlichen Pinne. Und natürlich GND am Gehäuse.
 
  • Danke
Reaktionen: DirkTripleD

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Ich habe gerade jede Leitung durchgemessen von USBasp an bis zu den Pinnen. Der Widerstand ist bei allen kleiner 1 Ohm.
Ach, das hat kein Einfluss.
Es geht hier nicht um elektrischen Strom, sondern um die Signalintegrität und die Signalform. So etwas könnte man mit einem Oszilloskop nachmessen, aber nicht mit einem DMM.

Meiner Erfahrung nach ist das Kabelgewirr zu lang und es gibt zu viele Übergangspunkte (Steckverbinder)!
Wie schon erwähnt:
Meine ISP-Kabel für die Verwendung an USBasp-Sticks sind nie länger als max. 30 cm.
Bei längeren Kabeln hatte ich auch hin und wieder den Fehler, der aktuell bei dir auftritt.
Außerdem habe ich keine Stecker im Leitungsweg.
Die Kabel führen bei mir vom USBasp-Stick unmittelbar zu den Federkontakten, ohne Übergangsstelle dazwischen.

In der Regel ist der Anspruch beim Schreiben auch höher als beim Lesen.
Daher klappt das Lesen/Sichern in Grenzfällen oft noch problemlos, aber beim Schreiben gibt es dann eine Datenverstümmelung/Fehlermeldung.
 

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Alles klar, dann kürze ich die ein und verlöte die. Bis hierhin schon mal Danke. Es ist ja auch schon spät... Ich verlöte die jetzt noch und dann schauen wir morgen weiter. :thumbup:
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Alles klar!

Ich würde wie folgt vorgehen:
- die bunten Kabel weglassen
- das graue Kabel mit dem 2x5-Stecker kommt direkt in den USBasp-Stick
- am anderen Ende den Kontaktkamm abschneiden
- das graue Kabel auf max. 30 cm kürzen, kürzer ist besser
- die notwendigen Kabeladern für MOSI, MISO, SCK und VCC an die vier Kontakte des Kontaktkamms neu anlöten
- die Adern für RST und GND separieren und entsprechende Kontaktstifte (oder was auch immer du benutzt) neu anlöten

--> nächster Versuch

Viel Erfolg!

P.S.:
Manchmal sind die MCU-Pins mit Flussmittel vom Löten verschmutzt. Das kann auch die Verbindung stören.
Dann sollte man sie mit Alkohol (Wattestäbchen mit Spiritus) sehr gründlich reinigen.
 
  • Danke
Reaktionen: pho

SammysHP

Flashaholic**
6 Oktober 2019
3.893
6.093
113
Celle
www.sammyshp.de
Ich habe auch schon längere Kabel mit mehr Übergängen genutzt, sogar mit Breadboard. Hat immer funktioniert.
  • Kontakte sauber, keine Flussmittelreste?
  • MOSI und MISO sind nicht vertauscht?
  • USBasp auf 3,3 V einstellen mit dem Jumper. Bei 5V hatte ich schon häufiger Probleme, weil die Spannung durch zu hohe Ströme eingebrochen ist.
  • Die Firmware für die SP36 ist richtig.
 
  • Danke
Reaktionen: pho

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
So Leitungen sind eingekürzt auf ungefähr 20cm und Kontaktstellen mit Isopropanol gereinigt.
Als Leitungen habe ich aber die Bunten genommen, da das Graue nur ein 8 Pol Stecker hatte, jedoch habe ich noch eins mit 10 Pol. Das könnte ich noch gegen die bunten tauschen.

MOSI und MISO sind richtig, ich habe sie einmal absichtlich verdreht, dann kommt bei der Prüfung vor dem Schreiben bereits ein Fehler.

Spannung VCC - GND beträgt 3,15V den Jumper habe ich somit nicht versetzt.

Jedoch alles bleibt gleich, aber wieso kann er lesen und schreiben und sagt zum Schluss ein Fehler?
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Spannung VCC - GND beträgt 3,15V den Jumper habe ich somit nicht versetzt.
Das funktioniert bei mir nie!
Ich schreibe auf Atmel-AVR-Chip immer mit 5 V und schlage daher vor, dass du auf 5V-Versorgung umsteckst.
MOSI und MISO sind richtig, ich habe sie einmal absichtlich verdreht, dann kommt bei der Prüfung vor dem Schreiben bereits ein Fehler.
Ja, das ist logisch.
Das war bei dir auch definitiv nicht der Fall, sonst hätte schon die Kommunikationsprüfung ganz zu Beginn einen Fehler gemeldet.
 
  • Danke
Reaktionen: pho

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Ja an 5V hat es gelegen, jetzt funktioniert es wunderbar.
Nur das erste Backup funktioniert nicht, vielleicht ist das doch fehlerhaft.
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Nur das erste Backup funktioniert nicht, vielleicht ist das doch fehlerhaft.
Oh, schade, aber ist ja auch nicht schlimm, die Werkfirmware ist ja sowieso die von der SP36 und die kann man ja herunterladen.

Möchtest du denn jetzt noch etwas zu möglichen Software-Optionen wissen und was du noch alles machen könntest?

Tut mir leid, dass ich nicht gleich an die 5V-Versorgung gedacht habe. :facepalm:
Alle meine USB-Sticks laufen von Haus aus mit 5V-Versorgung und lassen sich nicht so banal auf 3.3 V umstellen.
 
Zuletzt bearbeitet:

pho

Moderator
Teammitglied
29 Oktober 2019
3.033
3.946
113
486xx
Ja gerne!

Was funktioniert, das er mit ein Heckschalter bei Spannungswiederkehr direkt in der letzten Stufe angeht. Und bei gedrückten Seitenschalter direkt in Moon.

Dafür habe ich nur den #define START_AT_MEMORIZED_LEVEL und #define USE_SOFT_FACTORY_RESET aktiviert und #define USE_FACTORY_RESET deaktiviert.

Jetzt möchte ich es noch schaffen, dass er die gespeicherte feste Stufe immer nimmt bei Spannungswiederkehr.
 

steidlmick

Flashaholic***
15 August 2012
6.316
5.439
113
Bielefeld, NRW
Dafür habe ich nur den #define START_AT_MEMORIZED_LEVEL und #define USE_SOFT_FACTORY_RESET aktiviert und #define USE_FACTORY_RESET deaktiviert.
Das ist ja schon mal gut.
Du machst das in der Konfigurationsdatei, also z.B. in cfg-sofirn-sp36.h, und nicht im Quellcode, oder?
Jetzt möchte ich es noch schaffen, dass er die gespeicherte feste Stufe immer nimmt bei Spannungswiederkehr.
Da ist wohl noch nicht klar, ob das funktioniert und wie.
Das wurde ab hier schon mal andiskutiert.

Es gibt aber natürlich noch weitere Möglichkeiten, ganz nach Geschmack. Manches ist nützlich, anderes ist Spielerei.

#define USE_TENCLICK_THERMAL_CONFIG
sorgt beispielsweise dafür, dass man von Off mit einem 10-fach-Klick direkt in das thermische Konfigurationsmenü gelangt.

Manche Leute stört der kurze Blitz beim Ramping in der Mitte und beim Erreichen der max. Ramping-Stufe.
#undef BLINK_AT_RAMP_MIDDLE
#undef BLINK_AT_RAMP_CEILING

deaktiviert dieses Verhalten.

Ich persönlich habe keinerlei Verwendung für diverse Blitz-/Blink-/Gewittermodi in dem Menü, in dem auch der Kerzenscheinmodus ist.
#undef USE_BIKE_FLASHER_MODE
#undef USE_PARTY_STROBE_MODE
#undef USE_TACTICAL_STROBE_MODE
#undef USE_LIGHTNING_MODE

deaktiviert diese Modi (bis auf den Kerzenscheinmodus).
 

SammysHP

Flashaholic**
6 Oktober 2019
3.893
6.093
113
Celle
www.sammyshp.de
Ich schreibe auf Atmel-AVR-Chip immer mit 5 V und schlage daher vor, dass du auf 5V-Versorgung umsteckst.
Ich werde bei mir heute Abend nochmal nachschauen. Dachte eigentlich, dass ich immer 3,3 V nehme. Aber vielleicht hatte ich das auch mal umgestellt und vergessen.

Da ist wohl noch nicht klar, ob das funktioniert und wie.
Das wurde ab hier schon mal andiskutiert.
Zum ob: Das geht. Ist halt nur die Frage, wie man es halbwegs elegant mit minimalen Änderungen einbaut. Das ganze Schreiben mit Wear Leveling kann wegfallen und so den EEPROM schonen.

Quick and dirty wäre beispielsweise, in load_config() den ganzen if-Block mit load_eeprom_wl() zu entfernen und im if-Block mit load_eeprom() noch ein "memorized_level = eeprom[manual_memory_e];" am Ende einzufügen.