Šios medžiagos autoriui nepatiko įprasti žibintuvėlio BLF A6 veikimo režimai. Tada jis nusprendė sumaišyti programinės įrangos žibintuvėlio dalį, nustatydamas jos režimus. Kaip paaiškėjo, tai nėra taip paprasta, apie programinę-aparatinę ir programinę įrangą yra minimali informacija, ir jis turėjo ją rinkti po truputį. Ir kad ji nepasiklystų, jis nusprendė padėti kitiems ir viską sudėlioti į straipsnį.
Taigi darbui jums reikės:
Žibintuvėlis BLF A6 (tikriausiai tai veiks su kitais žibintuvėliais, remiantis ATtiny).
Pincetai / plonos replės / mažos žirklės.
Firmos aparatinės įrangos kompiuteris, geriausia su „Linux“ paskirstymu.
USB ASP / programuotojas Arduino / tai, ką gali padaryti AVR programavimas (aišku, USB ASP programuotojas yra geresnis, bet vedlys naudojo Arduino).
Didelės spartos bėgių-bėgių stiprintuvas [SOIC-8] (galite išsiversti be jo, tačiau tai labai nepatogu).
Plėtros plokštė ir jungiamieji laidai.
Firmware.
Yra programinė įranga „BLF A6“ (ir daugeliui kitų žibintuvėlių) čia. Čia yra diskusijų forumas nuorodą.
Atsisiųsti programinę-aparatinę įrangą galite vykdydami paiešką „bzr branch lp: flashlight-firmware“. Reikia aplanko su žibintuvėliu-firmware / „ToyKeeper“ / blf-a6. Jame yra sudarytas failas. šešioliktainis, paruoštas programinės aparatinės įrangos („blf-a6.hex“) ir C kodas, kurį taip pat galima pakeisti („blf-a6.c“). Jei norite mirksėti programinės įrangos atsarginę kopiją, galite praleisti kitą veiksmą ir tiesiog naudoti „blf-a6.hex“. Tikriausiai veiks ir kai kuri kita šioje saugykloje esanti programinė įranga.
Pakeiskite programinę-aparatinę įrangą.
Atsargiai simboliai, kad nebūtų iškraipyta prasmė, pateikiami be vertimo.
Savo norimame teksto rengyklėje arba IDE atidarykite blf-a6.c. Įdomiausios eilutės yra režimų grupės tarp 94 ir 109 eilučių. Jos atrodo taip:
// 1 režimo grupė
#define NUM_MODES1 7
// Didelės grandinės PWM lygiai (FET arba Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// Mažos grandinės PWM lygiai (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Mano pavyzdys: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// „Krono“ pavyzdys: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// „Manker2“: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// PWM greitis kiekvienam režimui
#define MODES_PWM1 FASE, FAST, FAST, FAST, FAST, FAST, FASE
// 2 režimo grupė
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 FAST, FAST, FAST, PHASE
Kiekvienai grupei MODESN yra PWM reikšmė, naudojama FET, o MODES1 yra PWM vertė, naudojama kiekvienam režimui 7135. Skaičius yra intervale nuo 0 iki 255 ir atitinka šviesos ryškumą. Daugiau informacijos
čia. (slinkite žemyn iki „Režimo valdymas:“). Meistras nėra tikras, koks yra PWM greitis.Jei kas žino, pasakyk man komentaruose. Lauko efekto tranzistorius gali skleisti daugiau šviesos nei 7135, tačiau 7135 palaiko šviesos lygį beveik vienodą tą patį baterijos gyvavimo laiką, o naudojant lauko efekto tranzistorių, šviesa pritemsta, kai baterija išsikrauna.
Čia galime pakoreguoti PWM reikšmes, norėdami sukurti režimus. Taip pat galite pakeisti režimų skaičių, tačiau meistras to nepadarė, nes jam reikia keturių režimų, o tai yra skaičius antroje grupėje. Jis norėjo tamsesnio mėnesienos režimo, todėl pirmąjį nustatė iki 0/1. Jis taip pat mano, kad turbo režimas yra šiek tiek beprasmis, todėl aš jį pakeičiau į 137/255, o tai prilygsta šeštajam režimui septynių režimų grupėje.
Kai turite reikiamą kodą, turite jį sukompiliuoti į .hex failą. Bent jau jums reikia gcc-avr ir avr-libc. Jei kyla problemų, pažiūrėkite į kitas „readme“ failo priklausomybes. Saugykloje yra „build“ scenarijus, todėl viskas, ką turite padaryti, yra paleisti:
../../bin/build.sh 13 blf-a6
aplanke „blf-a6“. ../../Bin/build.sh yra scenarijus. 13 rodo, kad jis skirtas ATtiny13, o blf-a6 rodo, kad jis skirtas BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -short -enumai -o blf-a6.o -c blf-a6.c
avr-gcc -Sienas -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy - pradinės sekcijos-vėliavos = .eeprom = paskirstymas, apkrova - main-section-lma .eeprom = 0 - nekeisti-perspėjimai -O ihex blf-a6.elf blf-a6.hex
Programa: 1022 baitai (visiškai užpildyta 99,8%)
duomenys: 13 baitų (pilna 20,3%)
Komandų dydis jau yra optimizuotas, todėl jei parašyta, kad jų daugiau nei 100%, pabandykite ištrinti
#define FULL_BIKING_STROBE
125 eilutė yra maža dviratis strobos šviesos. Jei to nepakanka, teks ką nors kita sumažinti.
Kai kompiliacija bus baigta, aplanke turėtų būti failas pavadinimu blf-a6.hex. Tai yra sudarytas kodas, paruoštas programinės įrangos.
Išmontuokite žibintuvėlį.
Atsukite žibintuvėlio žibintą. Yra dvi varžtinės jungtys. Tas, kuris yra arčiau žibintuvėlio korpuso, pritvirtina atšvaitą ir šviesos diodą, o tas, kuris yra arčiau vidurio, pritvirtina plokštę. Mums reikia vidurkio.
Viduje pamatysite žiedą su spyruokle ir dvi skylutes išilgai kraštų. Įkiškite pincetą / plonas reples / žirkles į skylutes ir pasukite prieš laikrodžio rodyklę.
Kai žiedas bus pašalintas, turėsite prieigą prie lentos. Jis vis dar pritvirtintas dviem laidais, todėl būkite atsargūs. Jie susukti kartu, todėl sukite lentą, kol laidai atsilaisvins. Tada apverskite lentą. Būtina, kad mikroschema su užrašu „TINY13A“ būtų labiau prieinama.
Jei laidai yra trumpi ir jis neveikia, turite nuimti plokštę.
Ryšys.
Dabar reikia paruošti plokštę programinės įrangos.
Vedlys naudoja SOIC8, kad sujungtų ATtiny13 lustą ir programuotoją.
Žiūrėkite nuotrauką, kaip vedlys užmezga ryšį. Atkreipkite dėmesį į raudoną liniją antrame paveiksle.
Jei naudojate USB ASP V2.0 programuotoją, turite jį prijungti taip:
1 kontaktas „ATtiny13“ - 5 kontaktas USB ASP (atkurti)
4 kontaktas „ATtiny13“ - 10 kontaktas USB ASP (antžeminis)
5 kontaktas „ATtiny13“ - 1 kontaktas USB ASP (MOSI)
6 kontaktas „ATtiny13“ - 9 kontaktas USB ASP (MISO)
7 kontaktas „ATtiny13“ - 7 kontaktas USB ASP (SCK)
8 kontaktas „ATtiny13“ - 2 kontaktas USB ASP (VCC)
Jei naudojate „Arduino“, kaip ir vedlį, atlikite šiuos veiksmus:
Atidarykite „Arduino IDE“ ir įsitikinkite, kad jūsų „Arduino“ yra prijungtas prie kompiuterio. Raskite IPT eskizą aplanke Failas> Pavyzdžiai> 11.ArduinoISP> ArduinoISP ir įkelkite jį į Arduino. Tada prijunkite „ATtiny13“ prie jo taip:
1 kontaktas „ATtiny13“ - 10 kontaktas „Arduino“ (atkurti)
4 kontaktas „ATtiny13“ - GND „Arduino“ (antžeminis)
5 kontaktas „ATtiny13“ - 11 kontaktas „Arduino“ (MOSI)
6 kontaktas „ATtiny13“ - 12 kontaktas „Arduino“ (MISO)
7 kontaktas „ATtiny13“ - 13 kontaktas „Arduino“ (SCK)
8 kaištis „ATtiny13“ - VCC / 5 V arba 3,3 V „Arduino“ (pageidautina 5 V)
Firmware.
5 žingsnis: mirksėkite
Norėdami įsigyti programinę-aparatinę įrangą, turite įdiegti AVRDUDE. Norėdami patikrinti, ar tai veikia kartu su Arduino, vedlys rašo komandą:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Jei tai veikia, eikite į tuščią aplanką ir užsiregistruokite:
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
Padarykite esamos programinės įrangos atsarginę kopiją. Norėdami mirksėti, iš aplanko su modifikuotu blf-a6.hex jis pradeda:
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
Turite nurodyti stk500v1 kaip programuotoją ir nurodyti prievadą bei duomenų perdavimo greitį. Jei naudojate Arduino ir abejojate, pabandykite atjungti ATtiny13 nuo Arduino ir įkelkite eskizą į Arduino IDE naudodami šie nustatymai. Tai neveiks, tačiau sužinosite, kuri komanda naudojama konsolės lange. Tada galite nukopijuoti atributus į komandą AVRDUDE.
Jei naudojate USB ASP programuotoją, paleiskite:
avrdude -v -p attiny13 -c usbasp -n
Norėdami sužinoti, ar tai veikia:
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
Padaryti atsarginę kopiją:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhuse: w: 0xFF: m
Norėdami mirksėti:
-Uflash: w: blf-a6.hex. Pakeiskite blf-a6.hex savo failo pavadinimu, jei jis skiriasi.
-Nenaudojama: w: 0x75: m ir -Naudojama: w: 0xFF: m
Jei įvyksta klaida, tai reiškia, kad vaizdo failas yra per didelis, kad tilptų į lustą, ir jūs turėsite ištrinti dalį kodo. Jei viskas normalu, turėtų būti rodomi kai kurie progreso rodikliai, o tada žodžiai „avrdude padaryta. Ačiū“.
Mirksėdami lustu, surinkite žibintuvėlį ir pažiūrėkite, ar jis veikia.