» fire » Reparație, modernizare »Cum se aprinde o lanternă pentru a schimba modul de operare

Cum să flash o lanternă pentru a schimba modurile de operare


Autorului acestui material nu i-au plăcut modurile normale de funcționare a lanternei BLF A6. Apoi a decis să blocheze partea software a lanternei, setându-i modul. După cum s-a dovedit, acest lucru nu este atât de simplu, există un minim de informații pe firmware și pinouts și el a trebuit să le colecteze pic cu pic. Și pentru a nu se pierde, el a decis să îi ajute pe ceilalți și să aranjeze totul într-un articol.

Deci, pentru muncă, veți avea nevoie de următoarele:
Lanterna BLF A6 (probabil că aceasta va funcționa cu alte lanterne bazate pe ATtiny).
Tăietoare / clește subțiri / foarfece mici.
Un computer pentru firmware, de preferință cu distribuție Linux.
USB ASP / Programator Arduino / ceva ce poate face programarea AVR (evident, programatorul USB ASP este mai bun, dar vrăjitorul a folosit Arduino).
Amplificator Rail-to-Rail de mare viteză [SOIC-8] (puteți face fără el, dar este foarte incomod).
Cabluri de bord și cablu de conectare pentru conectare.

Firmware.
Firmware-ul pentru BLF A6 (și multe alte lanterne) este disponibil aici. Un forum de discuții este disponibil în acest sens legătura.
Puteți descărca firmware-ul rulând căutarea "bzr branch lp: flashlight-firmware". Aveți nevoie de folderul cu lanternă / folderul ToyKeeper / blf-a6. Conține un fișier compilat. hex, gata pentru firmware (blf-a6.hex) și codul C, care poate fi modificat și (blf-a6.c). Dacă doriți să flash flash firmware, puteți săriți pasul următor și utilizați doar blf-a6.hex. Un alt firmware din acest depozit va funcționa probabil și el.

Schimbați firmware-ul.
Atenție simbolurile, pentru a nu denatura sensul, sunt date fără traducere.
Deschideți blf-a6.c în editorul de text preferat sau IDE. Cele mai interesante linii sunt grupurile de moduri între liniile 94 și 109. Acestea arată astfel:
// Grup de moduri 1
#define NUM_MODES1 7
// Niveluri PWM pentru circuitul mare (FET sau Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// Niveluri PWM pentru circuitul mic (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Proba mea: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Proba Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// Viteza PWM pentru fiecare mod
#define MODES_PWM1 FASE, FAST, FAST, FAST, FAST, FAST, FAST, FASE
// Grupul de mod 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20.230.255,0
#define MODES_PWM2 FAST, FAST, FAST, FASE, FASE

Pentru fiecare grup, MODESN este valoarea PWM folosită pentru FET, iar MODES1 este valoarea PWM folosită pentru 7135 în fiecare mod. Numărul este cuprins între 0 și 255 și corespunde luminozității luminii. Mai multe informații
aici. (derulați în jos la „Modul de control:”) Maestrul nu este sigur care este viteza PWM.Dacă știe cineva, spuneți-mi în comentarii. Un tranzistor cu efect de câmp poate produce mai multă lumină decât 7135, dar 7135 păstrează nivelul de lumină mai mult sau mai puțin același pe toată durata de viață a bateriei, în timp ce se folosește un tranzistor cu efect de câmp, lumina se estompează atunci când bateria se termină.

Aici putem ajusta valorile PWM pentru a crea moduri după bunul nostru plac. Puteți modifica, de asemenea, numărul de moduri, dar maestrul nu a făcut acest lucru pentru că are nevoie de patru moduri, iar acesta este numărul din cel de-al doilea grup. El dorea un regim mai întunecat al luminii lunii și, prin urmare, a stabilit primul pe 0/1. De asemenea, consideră modul turbo puțin inutil, așa că l-am înlocuit cu 137/255, ceea ce este echivalent cu cel de-al șaselea mod într-un grup de șapte moduri.

Când aveți codul de care aveți nevoie, trebuie să îl compilați într-un fișier .hex. Cel puțin ai nevoie de gcc-avr și avr-libc. Dacă aveți probleme, uitați-vă la alte dependențe din fișierul readme. Depozitul include un script de construire, deci tot ce trebuie să faceți este să rulați:
../../bin/build.sh 13 blf-a6
în folderul blf-a6. ../../Bin/build.sh este scriptul. 13 indică faptul că este pentru ATtiny13, iar blf-a6 indică faptul că este pentru BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -fshort -enumele -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-Warnings -O ihex blf-a6.elf blf-a6.hex
Program: 1022 octeți (99,8% complet)
date: 13 octeți (20,3% complet)
Echipele sunt deja ca dimensiuni optimizate, așa că, dacă se scrie că au mai mult de 100%, încercați să ștergeți
#define FULL_BIKING_STROBE

Linia 125 vrăji mici ciclu lumina stroboscopică. Dacă acest lucru nu este suficient, atunci altceva va trebui tăiat.
Când compilarea este completă, dosarul trebuie să conțină un fișier numit blf-a6.hex. Acesta este codul compilat, pregătit pentru firmware.

Demontarea lanternei.
Deșurubați farul lanternei. Există două conexiuni cu șuruburi. Cel care este mai aproape de corpul lanternei fixează reflectorul și ledul, iar cel care este mai aproape de mijloc fixează placa. Avem nevoie de o medie.

În interior veți vedea un inel de prindere cu un arc și două găuri de-a lungul marginilor. Introduceți penseta / cleștele subțiri / foarfeca în găuri și rotiți-le în sens invers acelor de ceasornic.

Odată ce inelul este eliminat, veți avea acces la placă. Este încă atașat cu două fire, așa că aveți grijă. Sunt răsucite între ele, astfel încât rotiți placa până când firele sunt slăbite. Apoi întoarceți placa. Este necesar ca cipul cu inscripția „TINY13A” să fie mai accesibil.

Dacă firele sunt scurte și nu funcționează, atunci trebuie să eliminați placa.






Conexiune.
Acum trebuie să pregătiți placa pentru firmware.
Expertul folosește SOIC8 pentru a conecta cipul ATtiny13 și programatorul.
Cum să flash o lanternă pentru a schimba modurile de operare



Vedeți fotografia în timp ce vrăjitorul face conexiunea. Observați linia roșie din a doua figură.

Dacă utilizați programatorul USB ASP V2.0, trebuie să îl conectați astfel:
Pin 1 pe ATtiny13 - Pin 5 pe USB ASP (resetare)
Pin 4 pe ATtiny13 - Pin 10 pe USB ASP (la sol)
Pin 5 pe ATtiny13 - Pin 1 pe USB ASP (MOSI)
Pin 6 pe ATtiny13 - Pin 9 pe USB ASP (MISO)
Pin 7 pe ATtiny13 - Pin 7 pe USB ASP (SCK)
Pin 8 pe ATtiny13 - Pin 2 pe USB ASP (VCC)

Dacă utilizați Arduino, precum vrăjitorul, atunci urmați acești pași:
Deschideți Arduino IDE și asigurați-vă că Arduino este conectat la computer. Găsiți schița ISP în Fișier> Exemple> 11.ArduinoISP> ArduinoISP și încărcați-o în Arduino. Apoi conectați ATtiny13 la acesta după cum urmează:
Pin 1 pe ATtiny13 - Pin 10 pe Arduino (resetat)
Pin 4 pe ATtiny13 - GND pe Arduino (la sol)
Pin 5 pe ATtiny13 - Pin 11 pe Arduino (MOSI)
Pinul 6 pe ATtiny13 - Pinul 12 pe Arduino (MISO)
Pin 7 pe ATtiny13 - Pin 13 pe Arduino (SCK)
Pin 8 pe ATtiny13 - VCC / 5V sau 3.3V pe Arduino (preferință 5V)

Firmware.
Pasul 5: blițează-l
Pentru firmware, trebuie să instalați AVRDUDE. Pentru a verifica dacă acest lucru funcționează cu Arduino, expertul scrie o comandă:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Dacă acest lucru funcționează, accesați folderul gol și înregistrați-vă:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Realizați o copie de rezervă a firmware-ului existent. Pentru a clipi, din folderul cu blf-a6.hex modificat începe:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ufuză: w: 0x75: m -Ufuză: w: 0xFF: m
Trebuie să specificați stk500v1 ca programator și să specificați portul și viteza de transfer de date. Dacă folosiți Arduino și aveți îndoieli, încercați să deconectați ATtiny13 de la Arduino și încărcați schița în IDE Arduino folosind aceste setări. Acest lucru nu va funcționa, dar veți afla ce comandă este folosită în fereastra consolei. În continuare, puteți copia atributele în comanda AVRDUDE.

Dacă utilizați un programator USB ASP, rulați:
avrdude -v -p attiny13 -c usbasp -n
Pentru a vedea dacă funcționează:
avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Ufuse: r: hfuse-dump.hex: i
Efectuați o copie de rezervă:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ufuse: w: 0x75: m -Ufuse: w: 0xFF: m
Pentru a aprinde:
-Uflash: w: blf-a6.hex. Înlocuiți blf-a6.hex cu numele fișierului dvs. dacă acesta este diferit.
-Utilizare: w: 0x75: m și -Ufuză: w: 0xFF: m
Dacă apare o eroare, acest lucru înseamnă că fișierul imagine este prea mare pentru a se încadra pe cip și va trebui să ștergeți o parte din cod. Dacă totul este normal, ar trebui să se afișeze câțiva indicatori de progres, apoi cuvintele „avrdude done. Mulțumesc”.
După ce ați aprins cipul, asamblați lanterna și vedeți dacă funcționează.
Întrebarea \ topic este publicată automat în social. rețea de site - rămâneți la curent cu răspunsurile acolo:

Potrivit pentru subiect

Subiecte conexe

Adaugă un comentariu

    • zâmbetzâmbetexaxabinedontknowYahooNea
      șefzgârieturăpăcălidada-daagresivsecret
      scuzedansdance2dance3iertareajutorbăuturi
      oprireprietenibungoodgoodfluiersincopălimbă
      fumaplauzeCrayvestimbatjocoritorDon-t_mentiondescărcare
      căldurămânioslaugh1mdaîntâlniremoskingnegativ
      not_ifloricele de porumbpedepsicititsperiasperiecăutare
      batjocurăthank_youacestto_clueUmnikacutconveni
      răubeeeblack_eyeblum3roșilăudăroșenieplictiseală
      cenzuratpleasantrysecret2amenințavictorieyusun_bespectacled
      ShokRespektlolprevedbun venitKrutoyya_za
      ya_dobryiajutorne_huliganne_othodifludinterdicțieînchide

Vă sfătuim să citiți:

Înmânează-l pentru smartphone ...