Wurkkos Taschenlampen

Skilhunt Taschenlampen

Treiber Programmierhilfe gesucht

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Ich bräuchte bitte mal Eure Hilfe... :)

Ich finde den BLF A6-Treiber recht gut, würde die Firmware aber gerne ein wenig ändern. Konkret eigentlich nur die 7 Stufen in der ersten Gruppe auf 5 reduzieren.

Der Quellcode dafür ist ja öffentlich.

Leider kenne mich mit der Programmierung überhaupt nicht aus. In der Datei sind so viele Kommentare, die ich nicht verstehe und Variablen die definiert werden müssen, dass ich es nicht schaffe, daraus einen hexfile zu erzeugen.

Kann mir jemand den Quellcode so reduzieren/anpassen, dass ich nur noch die Werte für Modusanzahl und deren PWM-Level ändern muss?

Vielen Dank schon mal!
 

mash.m

Flashaholic*
8 Juli 2011
858
1.163
93
Kronau / Baden
Hi,

das wird so nicht gehen. Du brauchst schon den ganzen Quellcode um daraus ein Hex-File zu erzeugen welches Du dann auf den Bausteins schiebst.
Schau Dir mal ab Zeile 116 an:

Code:
// Mode group 1
#define NUM_MODES1          [B][COLOR="Red"]7[/COLOR][/B]
// PWM levels for the big circuit (FET or Nx7135)
#define MODESNx1            [B][COLOR="red"]0,0,0,7,56,137,255[/COLOR][/B]
// PWM levels for the small circuit (1x7135)
#define MODES1x1            [B][COLOR="red"]3,20,110,255,255,255,0[/COLOR][/B]
// My sample:     6=0..6,  7=2..11,  8=8..21(15..32)
// Krono sample:  6=5..21, 7=17..32, 8=33..96(50..78)
// Manker2:       2=21, 3=39, 4=47, ... 6?=68
// PWM speed for each mode
#define MODES_PWM1          PHASE,FAST,FAST,FAST,FAST,FAST,PHASE

Gruß Markus
 
  • Danke
Reaktionen: prisma

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Genau das sind die Werte, die ich anpassen will. Das habe ich schon verstanden, das der Quellcode komplett sein muss ist mir ebenfalls klar.

Wenn ich den aber z.B. komplett kopiere, die Werte ändere und dann den hexfile erzeugen will, bekomme ich immer eine Fehlermeldung im AVRSTUDIO.

Wie gesagt, ich kenne mich damit überhaupt nicht aus. Ich habe das Gefühl, da ist zu viel unnötiger Ballast drin, den man gar nicht braucht. Ich suche also den kompletten/fertigen Quellcode, möchte meine Werte ändern und dann in ein hexfile schreiben. Ist das soweit richtig und verständlich?
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Fehlermeldung bekomme ich keine, aber die hex ist bei mir am Ende minimal zu groß, dann kommt eine Fehlermeldung beim flashen.8|
Ist aber nur bei der A6 Firmware so.

Gruß, Gerd
 
  • Danke
Reaktionen: prisma

Stone

Flashaholic*
5 Oktober 2010
469
329
63
Es könnte sein das es einfach so Optimiert wurde das es genau passt.
Manchmal kann eine kleine Änderung dann mehr Programmcode erzeugen.

Gruß Matthias
 
  • Danke
Reaktionen: prisma

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
Die Modes zu ändern ist leicht, die gleichmäßige Abstufung ist das Problem. Versuche gerade level_calc.py von tk dafür zu benutzen.
 
  • Danke
Reaktionen: prisma

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
das mit level_calc funktioniert ganz gut, allerdings braucht man dazu Infos, die man nur durch testen herausfinden kann.

Man benötigt:

- niedrigster PWM-Wert für FET-Channel der noch leuchtet
- daraus resultierende Lumen
- Lumen für FET-Channel auf Maximum
- niedrigster PWM-Wert für 7135-Channel der noch leuchtet
- daraus resultierende Lumen
- Lumen für 7135-Channel auf Maximum

Das kommt eben auf das Setup an, single-emitter/triple, welche emitter, usw...

Man kann natürlich auch schätzen, aber auch dafür wären ein paar Details nicht schlecht.

Wieviele LEDs? Welche? Moonmode so niedrig wie möglich?
 
  • Danke
Reaktionen: prisma

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Die Modes zu ändern ist leicht, die gleichmäßige Abstufung ist das Problem. Versuche gerade level_calc.py von tk dafür zu benutzen.

Die Abstufung werde ich dann schon finden, soweit bin ich leider noch lange nicht... :peinlich:

Hi,

die Fehlermeldung wäre hilfreich...

Gruß Markus

Die erste Fehlermeldung bekomme ich schon bei Zeile 73:

Error 1 ../tk-attiny.h: No such file or directory

Hallo,

sieh dir mal diese Seite an:
Optimization - - Atmel Studio

Falls dein Code zu groß ist kannst du eventuell eine andere Option zur Optimierung des Quelltextes wählen. Ich glaube ich habe immer -Os verwendet.

MfG

Danke, auch das übersteigt schon wieder weit meine Kenntnisse... :rolleyes:

Ich bräuchte erstmal einen "lauffähigen" Quellcode, den ich auch in einen hexfile verwandeln kann :peinlich:
 

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
das mit level_calc funktioniert ganz gut, allerdings braucht man dazu Infos, die man nur durch testen herausfinden kann.

Man benötigt:

- niedrigster PWM-Wert für FET-Channel der noch leuchtet
- daraus resultierende Lumen
- Lumen für FET-Channel auf Maximum
- niedrigster PWM-Wert für 7135-Channel der noch leuchtet
- daraus resultierende Lumen
- Lumen für 7135-Channel auf Maximum

Das kommt eben auf das Setup an, single-emitter/triple, welche emitter, usw...

Man kann natürlich auch schätzen, aber auch dafür wären ein paar Details nicht schlecht.

Wieviele LEDs? Welche? Moonmode so niedrig wie möglich?

Mir geht es um die originale BLF A6 aus dem GB. Sonst keine Änderung, also eine XP-L. Moonmode möchte ich so lassen, eine Low-Stufe zwischen den Stufen 2 und 3, eine Mid-Stufe zwischen 3 und 4, eine High-Stufe wie 5 (unverändert) und Turbo wie 7 (unverändert FET DD).
 

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
Die erste Fehlermeldung bekomme ich schon bei Zeile 73:

Error 1 ../tk-attiny.h: No such file or directory

Du benutzt die neue Version des Codes mit header files die du einbinden musst.
Die header files sind hier ganz unten. Diese herunterladen.

Dann in deinem BLF-A6 Projekt in Atmel Studio (ich benutze noch 6.2), rechts im Solution Manager: rechtklick auf das Projekt->add->existing file->pfad suchen->add. Das mit allen tk-xxx.h files machen.

EDIT: oder du nimmst die ältere Version ohne die tk-header, das müsste diese sein. Hier einfach aus Zeile 68 "//#define ATTINY 13" die zwei Schrägstriche löschen um ATtiny13 zu definieren.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: prisma

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Build: 1 succeeded or up-to-date, 0 failed, 0 skipped :thumbsup::thumbsup::thumbsup:

Vielen Dank!

Ich werde weiter berichten oder um Hilfe rufen, wenn es wieder hängt...
 
  • Danke
Reaktionen: chouster

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
... und schon ist es soweit :peinlich:

Es klappt alles bis auf das flashen :mad: Die erzeugten hexfiles sind zu groß für den Chip trotz verwendeter size-optimierung.

Hat jemand noch eine Idee? :confused:
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Genau so erging es mir auch :confused: selbst ohne Veränderung des original Codes, nur beim erzeugen des hex war dieser zu groß. Ich brauche jetzt erst mal Abstand, den Kopf wieder frei bekommen. ;)
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
hatten wir uns glaube ich schon mal drüber unterhalten (unterschrieben) :D ich nutzte bis jetzt immer den extreme Burner und der bringt schon wenn ich die hex Datei ins Programm lade diese Fehlermeldung. Es lässt sich jetzt zwar trotzdem flashen, aber kommt nur Müll zustande.

Gruß, Gerd
 

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
hatten wir uns glaube ich schon mal drüber unterhalten (unterschrieben) :D ich nutzte bis jetzt immer den extreme Burner und der bringt schon wenn ich die hex Datei ins Programm lade diese Fehlermeldung. Es lässt sich jetzt zwar trotzdem flashen, aber kommt nur Müll zustande.

Gruß, Gerd

Ja, hatten wir. Der extreme Burner kann dein hexfile natürlich nicht kleiner machen.

Da ihr von AVR Studio redet, ist es wohl so, dass ihr nicht die aktuellste Version installiert habt, denn die würde sich Atmel Studio nennen, wenn mich nicht alles täuscht. Ich kann nur empfehlen eine möglichst aktuelle Version zu nutzen, mit Atmel Studio 6.2 hat die Größe bei mir bis jetzt immer noch gepasst und Atmel Studio 7 soll wohl noch etwas kompakter arbeiten.

Am Beispiel von Atmel Studio 6.2 mal wie es vom Code schnell zum hexfile geht:

AS öffnen
file->new project->GCC C executable->attiny13A->bestehendes geschribbsel löschen->code einfügen->project (ganz oben)-> [projektname] properties-> configuration: all configurations->toolchain->unter AVR/GNU C compiler, optimization->optimization level: optimization for size (-Os), dann abschließend auf build(ganz oben)->build solution und schwupps müsste ein nicht zu großes hexfile im entsprechenden debug ordner sein (auch im solution manager unter output files)
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Ach du Gott, ich nutze das AVR Studio 5.1. :D wusste garnicht daß es schon so viele neue Versionen gibt. Bei meiner habe ich schon vergebens einen Optimizer gesucht. :p Werde die 6.2. auf jeden Fall über die Feiertage mal antesten.

Gruß, Gerd
 

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Da ihr von AVR Studio redet, ist es wohl so, dass ihr nicht die aktuellste Version installiert habt, denn die würde sich Atmel Studio nennen, wenn mich nicht alles täuscht. Ich kann nur empfehlen eine möglichst aktuelle Version zu nutzen, mit Atmel Studio 6.2 hat die Größe bei mir bis jetzt immer noch gepasst und Atmel Studio 7 soll wohl noch etwas kompakter arbeiten.

Ich nutze ebenfalls 5.1 :D
Da werde ich wohl mal ein update machen...


Am Beispiel von Atmel Studio 6.2 mal wie es vom Code schnell zum hexfile geht:

AS öffnen
file->new project->GCC C executable->attiny13A->bestehendes geschribbsel löschen->code einfügen->project (ganz oben)-> [projektname] properties-> configuration: all configurations->toolchain->unter AVR/GNU C compiler, optimization->optimization level: optimization for size (-Os), dann abschließend auf build(ganz oben)->build solution und schwupps müsste ein nicht zu großes hexfile im entsprechenden debug ordner sein (auch im solution manager unter output files)

Das ist in 5.1 exakt gleich, der erzeugte hexfile hat 2,86kb. Der extremeBurner meckert gleich wegen der Größe und mit avrdude geht es auch nicht - out of range...

Es bleibt spannend... ;)
 

Stone

Flashaholic*
5 Oktober 2010
469
329
63
Naja, man könnte ja testweise Passagen rauswerfen, wie die Batteriespannungsüberwachung oder Memory...

Gruß Matthias
 
  • Danke
Reaktionen: prisma

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Läuft! :thumbsup:

Mit AtmelStudio 7 hat der hexfile 2791 bytes, passt auf den Atiny und läuft :D

Das mit dem level_calc checke ich nicht, ich habe jetzt mal aus dem Bauch heraus

// Mode group 1
#define NUM_MODES1 4
// PWM levels for the big circuit (FET or Nx7135)
#define MODESNx1 0,0,0,56
// PWM levels for the small circuit (1x7135)
#define MODES1x1 3,30,130,255

verwendet, möglicherweise brauchts da aber noch ein wenig feintuning.

Ich habe dann 4 Stufen, ML-L-M-H. Das reicht mir meistens und ich kann die Lampe auch mal schneller aus der Hand geben. Wenn ICH sie benutze, weiß ich ja wo der Turbomodus ist :thumbup:

(Edit: ergibt an der Tailcap 4ma-36mA-170mA-1,15A (Turbo 4.93A). Noch nicht optimal aber akzeptabel. Lasse ich erstmal so bis ich wieder Zeit und Muße habe)

Danke für Eure Hilfe!!! :thumbsup:

Naja, man könnte ja testweise Passagen rauswerfen, wie die Batteriespannungsüberwachung oder Memory...

Gruß Matthias

Hatte ich probiert, das ganze Blinkie Zeug brauche ich eigentlich nicht, aber ich habe echt absolut keine Ahnung welche Passage dann wo anfängt und endet und möglicherweise noch mit anderen Befehlen verknüpft ist...

Hat dann leider auch nicht funktioniert
 
Zuletzt bearbeitet:

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
Hi prisma,

freut mich, dass es geklappt hat.

level_calc ist ganz einfach, man muss nur python 2.7 installieren und dann kann man die level_calc.py Datei per Doppelklick ausführen. Dann gibt man seine Werte ein und bekommt die PWM-Werte für die gewünschten Modes.

Bei meinen Lampen mache ich die Modes meistens so, dass es einen Mode gibt der den zweiten Kanal mit einem oder mehreren AMC7135 voll ausreizt, sprich Kanal 1: 0; Kanal 2:255. So hat man einen recht hellen und effizienten mittleren Mode, die maximale Helligkeit des effizienteren Kanals voll ausgenutzt sozusagen, bei einem AMC7135 also 0,35/0,38A.

Gruß
 
  • Danke
Reaktionen: prisma

elexx

Flashaholic*
11 Juni 2013
392
224
43
Werdau / Westsachsen / JO60ER
bit.ly
Wir haben vor >25 Jahren in der DDR Melodieklingeln gebaut - die waren in Assembler programmiert.

Wenn das damals jemand geweissagt hätte, dass ein Vierteljahrhundert später TASCHENLAMPEN einen Computer mit CPU, RAM, ROM enthalten und dieser dann auch noch in einer HOCHSPRACHE programmiert wird ... :eek:
cmb85jft.gif
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Wir haben vor >25 Jahren in der DDR Melodieklingeln gebaut - die waren in Assembler programmiert.

Wenn das damals jemand geweissagt hätte, dass ein Vierteljahrhundert später TASCHENLAMPEN einen Computer mit CPU, RAM, ROM enthalten und dieser dann auch noch in einer HOCHSPRACHE programmiert wird ... :eek:
cmb85jft.gif

genau, den hätte man wahrscheinlich in eine Gummizelle gesperrt :D

hehe, DDR Melodiklingeln :thumbup:
 

prisma

Flashaholic**
7 Februar 2010
1.091
1.003
113
Frankenland
Freut mich, dass es auch bei Dir geklappt hat!

Ist halt wirklich ein super Forum hier. Mach echt Spaß, wenn man kurz vorm verzweifeln ist und nach einem Hinweis läuft es plötzlich :thumbsup:
 

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Ich hatte wirklich das AVR Studio 5.1, ich dachte immer ich hätte das Atmel Studio 6 :rolleyes: bis jetzt hatte das auch immer gefunzt, aber bei dem C File von der A6 hatte ich mir die Zähne ausgebissen.

Aber jetzt ist alles gut, werde die Tage noch bissl experimentieren...

Und danke noch mal an chouster, für den Tip mit dem Atmel Studio 7 ;)

Gruß, Gerd
 
  • Danke
Reaktionen: chouster

heba

Flashaholic
5 August 2015
103
31
28
Raum Nürnberg
Hi,

ich habe das auch mal ausprobiert, kann mit dem AVR Studio keine neuen Projekte erstellen. Es sind scheinbar keine Project Templates installiert.

Habt ihr irgendwo eine fertige Solution gezogen? Wie schaut bei euch dieser Dialog aus?

Gruß,
Heiko
 

Anhänge

  • ateml.jpg
    ateml.jpg
    28,6 KB · Aufrufe: 11

muellihenry

Flashaholic**
12 Oktober 2014
4.021
3.304
113
Hi,

ich habe das auch mal ausprobiert, kann mit dem AVR Studio keine neuen Projekte erstellen. Es sind scheinbar keine Project Templates installiert.

Habt ihr irgendwo eine fertige Solution gezogen? Wie schaut bei euch dieser Dialog aus?

Gruß,
Heiko

Moin's,

geh mal genau nach der Anleitung von chouster aus Beitrag Nr. 19 vor so sollte es funktionieren.
Wenn es nicht klappt ist eventuell bei der Installation was schief gelaufen.

Gruß, Gerd
 

chouster

Flashaholic**
22 Dezember 2010
1.528
904
113
Ich kenne mich wie gesagt mit Atmel Studio 7 noch nicht aus. Ich habe mich auf AS 6.2 bezogen, aber mir ist gerade aufgefallen, dass in meiner Beschreibung mindestens ein Pfeil fehlt um mich klarer auszudrücken. Dás sähe dann so aus:



AS öffnen
file->new-> project->GCC C executable->attiny13A->bestehendes geschribbsel löschen->code einfügen->project (ganz oben)-> [projektname] properties-> configuration: all configurations->toolchain->unter AVR/GNU C compiler, optimization->optimization level: optimization for size (-Os), dann abschließend auf build(ganz oben)->build solution und schwupps müsste ein nicht zu großes hexfile im entsprechenden debug ordner sein (auch im solution manager unter output files)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: heba

heba

Flashaholic
5 August 2015
103
31
28
Raum Nürnberg
Danke, das von Dir ausgewählte "GCC C executable" ist ein Project Template und das fehlt bei mir.

Falls es jemanden interessiert: Das Atmel Studio kommt mit dem Visual Studio 2015 Update 1 nicht klar. Falls beides auf dem gleichen System installiert ist, darf man das VS Update (noch) nicht einspielen.