Autoru ovog materijala nisu se svidjeli normalni načini rada svjetiljke BLF A6. Tada je odlučio upaliti softverski dio svjetiljke, namjestivši njegove moduse. Kako se ispostavilo, ovo nije tako jednostavno, postoji najmanje informacija o firmveru i ispisima i on ga je morao skupljati po malo. A kako se ona ne bi izgubila, odlučio je pomoći drugima i sve srediti u članku.
Dakle, za rad će vam trebati sljedeće:
Svjetiljka BLF A6 (vjerojatno će ovo raditi s drugim svjetiljkama na temelju ATtiny).
Pinceta / tanke kliješta / male škare.
Računalo za firmver, po mogućnosti s distribucijom Linux.
USB ASP / programer Težak / nešto što AVR programiranje može učiniti (očito je USB ASP programer bolji, ali čarobnjak je koristio Arduino).
Brzo pojačalo Rail-to-Rail (SOIC-8) (bez njega možete, ali vrlo je nezgodno).
Razvojna ploča i žice za povezivanje za spajanje.
Firmware.
Dostupan je firmver za BLF A6 (i mnoge druge svjetiljke) ovdje, O tome je dostupan forum za raspravu veza.
Možete preuzeti firmver pokretanjem pretraživanja "bzr grana lp: flashlight-firmware". Trebate svjetiljku-firmware za svjetiljku / ToyKeeper / blf-a6. Sadrži sastavljenu datoteku. šesterokut, spreman za firmver (blf-a6.hex) i C kod, koji se također može promijeniti (blf-a6.c). Ako želite flash softver, možete preskočiti sljedeći korak i jednostavno koristiti blf-a6.hex. Vjerojatno će funkcionirati i neki drugi firmver u ovom spremištu.
Promijenite firmver.
Oprez simboli, kako ne bi iskrivili značenje, dani su bez prijevoda.
Otvorite blf-a6.c u željenom uređivaču teksta ili IDE-a. Najinteresantnije su modne skupine između linija 94 i 109. Izgledaju ovako:
// Način rada 1
#define NUM_MODES1 7
// PWM razine za veliki krug (FET ili Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// Razina PWM-a za mali krug (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Moj uzorak: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Krono uzorak: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// PWM brzina za svaki način rada
#define MODES_PWM1 FAZA, brzo, brzo, brzo, brzo, brzo, faza
// Način rada 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 FAST, FAST, FAST, FAZA
Za svaku grupu MODESN je PWM vrijednost koja se koristi za FET, a MODES1 je PWM vrijednost koja se koristi za 7135 u svakom načinu. Broj je u rasponu od 0 do 255 i odgovara jačini svjetla. Više informacija
ovdje, (pomaknite se prema dolje do "Kontrola načina rada:") Upravitelj nije siguran koja je brzina PWM-a.Ako netko zna, neka mi se javi u komentarima. Tranzistor s efektom polja može proizvesti više svjetla od 7135, ali 7135 održava razinu svjetlosti manje ili više jednaku tijekom cijelog životnog vijeka baterije, dok kod korištenja poljskog tranzistora s efektom polja svjetlost se smanjuje kada se baterija isprazni.
Ovdje možemo prilagoditi PWM vrijednosti za stvaranje modova po svojoj želji. Možete promijeniti i broj modova, ali majstor to nije učinio jer su mu potrebna četiri načina rada, a ovo je broj u drugoj grupi. Želio je tamniji režim mjesečine, pa je prvi postavio 0/1. Također smatra da je turbo mod malo besmislen, pa sam ga zamijenio sa 137/255, što je ekvivalentno šestom načinu u grupi od sedam modova.
Kad imate potreban kôd, morate ga sastaviti u .hex datoteku. Barem vam trebaju gcc-avr i avr-libc. Ako imate problema, pogledajte ostale ovisnosti u datoteci readme. Spremište uključuje skriptu gradnje, pa sve što morate učiniti je pokrenuti:
../../bin/build.sh 13 blf-a6
u mapi blf-a6. ../../Bin/build.sh je skripta. 13 označava da je to za ATtiny13, a blf-a6 znači da je to za BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -fshort -enumi -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 - upozorenja o promjeni -O ihex blf-a6.elf blf-a6.hex
Program: 1022 bajta (99,8% ukupno)
podaci: 13 bajtova (20,3% punih)
Timovi su već optimizirani u veličini, pa ako je napisano da su više od 100% puni, pokušajte ih izbrisati
#define FULL_BIKING_STROBE
Linija 125 čarolije mala ciklus stroboskopsko svjetlo. Ako to nije dovoljno, morat ćete smanjiti nešto drugo.
Kad je kompilacija gotova, mapa bi trebala sadržavati datoteku s imenom blf-a6.hex. Ovo je sastavljen kod, spreman za firmver.
Demontaža svjetiljke.
Odvijte prednje svjetlo svjetiljke. Postoje dva vijčana spoja. Ona koja je bliža tijelu svjetiljke popravlja reflektor i LED, a ona koja je bliža sredini popravlja ploču. Trebamo prosjek.
Unutra ćete vidjeti osigurač s oprugom i dvije rupe duž rubova. U rupice umetnite pincetu / tanke kliješta / škare i zakrenite ih u smjeru suprotnom od kazaljke na satu.
Nakon što uklonite prsten, imat ćete pristup ploči. Još je pričvršćen s dvije žice, zato budite oprezni. Oni su upleteni zajedno, pa okrenite ploču dok žice ne budu labave. Zatim okrenite ploču. Potrebno je da je čip s natpisom "TINY13A" bio pristupačniji.
Ako su žice kratke i ne uspije, morate ukloniti ploču.
Veza.
Sada morate pripremiti ploču za firmver.
Čarobnjak koristi SOIC8 za povezivanje ATtiny13 čipa i programera.
Pogledajte fotografiju dok čarobnjak uspostavlja vezu. Primijetite crvenu liniju na drugoj slici.
Ako koristite USB ASP V2.0 programera, morate ga povezati ovako:
Pin 1 na ATtiny13 - Pin 5 na USB ASP (resetiranje)
Pin 4 na ATtiny13 - Pin 10 na USB ASP-u (uzemljenje)
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)
Ako koristite Arduino, poput čarobnjaka, slijedite ove korake:
Otvorite Arduino IDE i provjerite je li Arduino spojen na računalo. Pronađite skicu davatelja internetskih usluga u datoteci> Primjeri> 11.ArduinoISP> ArduinoISP i prenesite je na Arduino. Zatim na njega povežite ATtiny13:
Pin 1 na ATtiny13 - Pin 10 na Arduinu (resetiranje)
Pin 4 na ATtiny13 - GND na Arduinu (terenu)
Pin 5 na ATtiny13 - Pin 11 na Arduinu (MOSI)
Pin 6 na ATtiny13 - Pin 12 na Arduinu (MISO)
Pin 7 na ATtiny13 - Pin 13 na Arduinu (SCK)
Pin 8 na ATtiny13 - VCC / 5V ili 3.3V na Arduinu (poželjno 5V)
Firmware.
5. korak: bljesnite
Za firmver morate instalirati AVRDUDE. Da provjeri radi li to s Arduinom, čarobnjak piše naredbu:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Ako to uspije, idite u praznu mapu i registrirajte se:
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
Napravite sigurnosnu kopiju postojećeg softvera. Da bljeska, iz mape s izmijenjenim blf-a6.hex započinje:
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
Trebate navesti stk500v1 kao programera te odrediti brzinu porta i podataka. Ako koristite Arduino i sumnjate, pokušajte isključiti ATtiny13 iz Arduinoa i prenesite skicu u Arduino IDE koristeći ove postavke, Ovo neće raditi, ali otkrit ćete koja se naredba koristi u prozoru konzole. Zatim možete kopirati atribute u naredbu AVRDUDE.
Ako koristite USB ASP programator, pokrenite:
avrdude -v -p attiny13 -c usbasp -n
Da biste vidjeli djeluje li ovo:
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 -Uhfuse: r: hfuse-dump.hex: i
Napravite sigurnosnu kopiju:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Upotreba: w: 0x75: m -Uhfuse: w: 0xFF: m
Za bljeskanje:
-Uflash: w: blf-a6.hex. Zamijenite blf-a6.hex imenom vaše datoteke ako je različito.
-Upotreba: w: 0x75: m i -Uhfuse: w: 0xFF: m
Ako dođe do pogreške, to znači da je slikovna datoteka prevelika da bi stala na čip, pa ćete morati izbrisati dio koda. Ako je sve normalno, trebali bi se prikazati neki pokazatelji napretka, a zatim riječi "avrdude učinjeno. Hvala vam."
Nakon što ste uključili čip, sastavite svjetiljku i provjerite radi li.