Autorovi tohto materiálu sa nepáčili bežné režimy prevádzky baterky BLF A6. Potom sa rozhodol blikať softvérovou časťou baterky a nastaviť jej režimy. Ako sa ukázalo, nie je to také jednoduché, existuje minimálne množstvo informácií o firmvéri a pinoutoch a musel ich postupne zbierať. A aby sa nestratila, rozhodol sa pomôcť druhým a zariadiť všetko v jednom článku.
Takže pre prácu budete potrebovať:
Svietidlo BLF A6 (pravdepodobne to bude fungovať s inými baterkami založenými na ATtiny).
Pinzeta / kliešte / malé nožnice.
Počítač pre firmvér, najlepšie s distribúciou Linuxu.
USB ASP / Programátor Arduino / niečo, čo dokáže programovanie AVR (samozrejme, programátor USB ASP je lepší, ale sprievodca použil Arduino).
Vysokorýchlostný zosilňovač Rail-to-Rail [SOIC-8] (môžete to urobiť aj bez neho, ale je to veľmi nepohodlné).
Vývojové dosky a vodiče prepojok na pripojenie.
Firmware.
K dispozícii je firmvér pre BLF A6 (a mnoho ďalších bateriek) tu, K dispozícii je diskusné fórum odkaz.
Firmvér si môžete stiahnuť spustením vyhľadávania „bzr branch lp: flashlight-firmware“. Potrebujete priečinok s firmvérom / ToyKeeper / blf-a6. Obsahuje kompilovaný súbor. hex, pripravený na firmvér (blf-a6.hex) a C kód, ktorý je možné zmeniť (blf-a6.c). Ak chcete flash firmvér na sklade, môžete preskočiť ďalší krok a použiť iba blf-a6.hex. Pravdepodobne bude fungovať aj nejaký iný firmvér v tomto úložisku.
Zmena firmvéru.
pozor symboly, aby nedošlo k skresleniu významu, sú uvedené bez prekladu.
Otvorte blf-a6.c vo vašom preferovanom textovom editore alebo IDE. Najzaujímavejšie riadky sú skupiny režimov medzi riadkami 94 a 109. Vyzerajú takto:
// Skupina režimov 1
#definovať NUM_MODES1 7
// PWM úrovne pre veľký okruh (FET alebo Nx7135)
#definovať MODESNx1 0,0,0,7,56,137,255
// PWM úrovne pre malý obvod (1x7135)
#definovať MODES1x1 3,20,110,255,255,255,0
// Moja vzorka: 6 = 0,6, 7 = 2,11, 8 = 8,21 (15,32)
// Krono vzorka: 6 = 5,21, 7 = 17,32, 8 = 33,96 (50,78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// Rýchlosť PWM pre každý režim
#definovať MODES_PWM1 FÁZA, RÝCHLE, RÝCHLE, RÝCHLE, RÝCHLE, RÝCHLE, FÁZOVÉ
// Skupina režimov 2
#definovať NUM_MODES2 4
#definovať MODESNx2 0,0,90,255
#definovať MODES1x2 20 230 255,0
#define MODES_PWM2 RÝCHLE, RÝCHLE, RÝCHLE, FÁZOVÉ
Pre každú skupinu je MODESN hodnota PWM použitá pre FET a MODES1 je hodnota PWM použitá pre 7135 v každom režime. Číslo je v rozsahu od 0 do 255 a zodpovedá jasu svetla. Viac informácií
tu, (prejdite nadol na „Ovládanie režimu:“) Master nie je istý, aká je rýchlosť PWM.Ak niekto vie, povedzte mi v komentároch. Tranzistor s poľným efektom môže produkovať viac svetla ako 7135, ale 7135 udržiava úroveň svetla viac-menej rovnakú počas celej životnosti batérie, zatiaľ čo pri použití tranzistora s poľným efektom sa svetlo pri vybití batérie stlmí.
Tu môžeme upraviť hodnoty PWM a vytvoriť režimy podľa nášho vkusu. Môžete tiež zmeniť počet režimov, ale master to neurobil, pretože potrebuje štyri režimy, a to je počet v druhej skupine. Chcel tmavší režim mesačného svitu, a preto nastavil prvý na 0/1. Turbo režim tiež považuje za zbytočný, takže som ho nahradil 137/255, čo je ekvivalent šiesteho režimu v skupine siedmich režimov.
Ak potrebujete kód, musíte ho skompilovať do súboru .hex. Aspoň potrebujete gcc-avr a avr-libc. Ak máte problémy, pozrite sa na ďalšie závislosti v súbore readme. Úložisko obsahuje skript na zostavenie, takže všetko, čo musíte urobiť, je spustiť:
../../bin/build.sh 13 blf-a6
v priečinku blf-a6. ../../Bin/build.sh je skript. 13 ukazuje, že je to pre ATtiny13, a blf-a6 znamená, že je pre BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -fort -enum -o blf-a6.o -c blf-a6.c
avr-gcc -Wall -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy --set-section-flags = .eeprom = alloc, load --change-section-lma .eeprom = 0 - no-change-warning -O ihex blf-a6.elf blf-a6.hex
Program: 1022 bajtov (99,8% plný)
údaje: 13 bajtov (20,3% plné)
Tímy sú už optimalizované čo do veľkosti, takže ak je napísané, že sú viac ako 100% plné, skúste vymazať
#define FULL_BIKING_STROBE
Riadok 125 kúziel malý cyklus bleskové svetlo. Ak to nestačí, bude sa musieť rezať niečo iné.
Po dokončení kompilácie by priečinok mal obsahovať súbor s názvom blf-a6.hex. Toto je kompilovaný kód pripravený na firmvér.
Demontáž baterky.
Odskrutkujte svetlomet baterky. Existujú dva skrutkové spoje. Ten, ktorý je bližšie k telu baterky, pripevňuje reflektor a LED a ten, ktorý je bližšie k stredu, upevňuje dosku. Potrebujeme priemer.
Vo vnútri uvidíte poistný krúžok s pružinou a dvoma otvormi pozdĺž okrajov. Do otvorov vložte pinzetu / tenké kliešte / nožnice a otočte ich proti smeru hodinových ručičiek.
Po odstránení krúžku budete mať prístup k doske. Je stále pripevnená dvoma vodičmi, takže buďte opatrní. Sú skrútené dokopy, takže dosku otáčajte, až kým nie sú drôty uvoľnené. Potom dosku otočte. Je nevyhnutné, aby bol čip s nápisom „TINY13A“ prístupnejší.
Ak sú káble krátke a nefunguje to, musíte dosku odstrániť.
Spojenie.
Teraz musíte pripraviť dosku na firmvér.
Sprievodca používa program SOIC8 na pripojenie čipu ATtiny13 a programátora.
Pozrite sa na fotografiu, keď sa pomocou sprievodcu pripája. Všimnite si červenú čiaru na druhom obrázku.
Ak používate programátor USB ASP V2.0, musíte ho pripojiť takto:
Pin 1 na ATtiny13 - Pin 5 na USB ASP (reset)
Pin 4 na ATtiny13 - Pin 10 na USB ASP (zem)
Pin 5 na ATtiny13 - Pin 1 na USB ASP (MOSI)
Pin 6 na ATtiny13 - Pin 9 na USB ASP (MISO)
Pin 7 na ATtiny13 - Pin 7 na USB ASP (SCK)
Pin 8 na ATtiny13 - Pin 2 na USB ASP (VCC)
Ak používate Arduino, podobne ako sprievodca, postupujte takto:
Otvorte Arduino IDE a uistite sa, že je Arduino pripojené k počítaču. Nákres ISP nájdete v časti Súbor> Príklady> 11.ArduinoISP> ArduinoISP a nahrajte ho do Arduino. Potom k nemu pripojte ATtiny13 takto:
Pin 1 na ATtiny13 - Pin 10 na Arduino (reset)
Pin 4 na ATtiny13 - GND na Arduino (Ground)
Pin 5 na ATtiny13 - Pin 11 na Arduino (MOSI)
Pin 6 na ATtiny13 - Pin 12 na Arduino (MISO)
Pin 7 na ATtiny13 - Pin 13 na Arduino (SCK)
Pin 8 na ATtiny13 - VCC / 5V alebo 3,3 V na Arduino (prednostne 5 V)
Firmware.
Krok 5: blesk
Pre firmvér musíte nainštalovať AVRDUDE. Ak chcete skontrolovať, či to funguje s Arduino, sprievodca píše príkaz:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Ak to funguje, prejdite do prázdnej zložky a zaregistrujte sa:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Vytvorte si záložnú kópiu existujúceho firmvéru. Ak chcete zablikať, zo zložky s upraveným blf-a6.hex sa spustí:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Ako programátor musíte uviesť stk500v1 a určiť rýchlosť prenosu portov a dát. Ak používate Arduino a máte pochybnosti, skúste odpojiť ATtiny13 od Arduino a nahrať skicu do Arduino IDE pomocou tieto nastavenia, Toto nebude fungovať, ale v okne konzoly zistíte, ktorý príkaz sa použije. Ďalej môžete skopírovať atribúty do príkazu AVRDUDE.
Ak používate programátor USB ASP, spustite:
avrdude -v -p attiny13 -c usbasp -n
Ak chcete zistiť, či to funguje:
avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Vytvorte zálohu:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Blesk:
-Uflash: w: blf-a6.hex. Ak je názov súboru blf-a6.hex iný, nahraďte ho.
-Ulúzia: w: 0x75: ma -Uhfuse: w: 0xFF: m
Ak sa vyskytne chyba, znamená to, že obrazový súbor je príliš veľký na to, aby sa zmestil na čip, a budete musieť odstrániť časť kódu. Ak je všetko v poriadku, mali by sa zobraziť niektoré ukazovatele postupu a potom by sa mali zobraziť slová „avrdude hotovo. Ďakujem.“
Po vybití čipu zostavte baterku a skontrolujte, či funguje.