Forfatteren af dette materiale kunne ikke lide de normale driftsformer for lommelygten BLF A6. Derefter besluttede han at blinke softwaredelen af lommelygten og indstille dens tilstande. Det viste sig, at dette ikke er så enkelt, der er et minimum af oplysninger om firmware og pinouts, og han måtte indsamle det bit for bit. Og så hun ikke ville gå tabt, besluttede han at hjælpe andre og arrangere alt i en artikel.
Så for arbejde har du brug for følgende:
Lommelygte BLF A6 (sandsynligvis fungerer dette med andre lommelygter baseret på ATtiny).
Pincet / tynde tænger / små saks.
En computer til firmware, helst med en Linux-distribution.
USB ASP / programmerer Arduino / noget, som AVR-programmering kan gøre (USB ASP-programmeringsprogrammet er naturligvis bedre, men guiden brugte Arduino).
High-speed Rail-to-Rail forstærker [SOIC-8] (du kan undvære det, men det er meget upraktisk).
Udviklingsplade og jumper ledninger til tilslutning.
Firmware.
Firmware til BLF A6 (og mange andre lommelygter) er tilgængelig her. Et diskussionsforum er tilgængeligt om dette linket.
Du kan downloade firmwaren ved at køre søgningen "bzr branch lp: lommelygte-firmware". Brug for lommelygte-firmware / ToyKeeper / blf-a6-mappe. Den indeholder en kompileret fil. hex, klar til firmware (blf-a6.hex) og C-kode, som også kan ændres (blf-a6.c). Hvis du vil flash-firmware, kan du springe det næste trin over og bare bruge blf-a6.hex. Nogle andre firmware i dette arkiv fungerer sandsynligvis også.
Skift firmware.
Giv agt symboler, for ikke at fordreje betydningen, gives uden oversættelse.
Åbn blf-a6.c i din foretrukne teksteditor eller IDE. De mest interessante linjer er tilstandsgrupper mellem linie 94 og 109. De ser sådan ud:
// Mode gruppe 1
#definér NUM_MODES1 7
// PWM-niveauer for det store kredsløb (FET eller Nx7135)
#definer MODESNx1 0,0,0,7,56,137,255
// PWM-niveauer for det lille kredsløb (1x7135)
#definer MODES1x1 3,20,110,255,255,255,0
// Min prøve: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Krono-prøve: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// PWM-hastighed for hver tilstand
#definer MODES_PWM1 FASE, HURTIG, HURTIG, HURTIG, HURTIG, FAST, FASE
// Mode gruppe 2
#definér NUM_MODES2 4
#definer MODESNx2 0,0,90,255
#definer MODES1x2 20.230.255,0
#definer MODES_PWM2 Hurtigt, hurtigt, hurtigt, faset
For hver gruppe er MODESN den PWM-værdi, der bruges til FET, og MODES1 er den PWM-værdi, der bruges til 7135 i hver tilstand. Nummeret ligger i området fra 0 til 255 og svarer til lysets lysstyrke. Mere info
her. (rulle ned til "Mode control:") Masteren er ikke sikker på, hvad PWM-hastigheden er.Hvis nogen ved, fortæl mig det i kommentarerne. En felteffekttransistor kan producere mere lys end 7135, men 7135 holder lysniveauet mere eller mindre det samme gennem batteriets levetid, mens lyset dæmper når batteriet løber tør, når der bruges en felteffekttransistor.
Her kan vi justere PWM-værdierne for at oprette tilstande efter vores smag. Du kan også ændre antallet af tilstande, men masteren gjorde det ikke, fordi han har brug for fire tilstande, og dette er antallet i den anden gruppe. Han ville have et mørkere måneskinregime og satte derfor den første til 0/1. Han betragter også turbo-tilstanden lidt meningsløs, så jeg erstattede den med 137/255, hvilket svarer til den sjette tilstand i en gruppe på syv tilstande.
Når du har den nødvendige kode, skal du samle den til en .hex-fil. I det mindste har du brug for gcc-avr og avr-libc. Hvis du har problemer, kan du se på andre afhængigheder i readme-filen. Forvaret indeholder et build-script, så alt hvad du skal gøre er at køre:
../../bin/build.sh 13 blf-a6
i mappen blf-a6. ../../Bin/build.sh er scriptet. 13 angiver, at det er for ATtiny13, og blf-a6 angiver, at det er for BLF A6.
avr-gcc -Væg -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../ .. -fshort -enums -o blf-a6.o -c blf-a6.c
avr-gcc -Væg -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy - sæt-sektion-flag = .eeprom = allokering, belastning - udvekslingssektion-lma .eeprom = 0 - ingen ændring-advarsler -O ihex blf-a6.elf blf-a6.hex
Program: 1022 bytes (99,8% fuld)
data: 13 byte (20,3% fuld)
Holdene er allerede optimeret i størrelse, så hvis det skrives, at de er mere end 100% fulde, kan du prøve at slette
#definér FULL_BIKING_STROBE
Linie 125 stave små cyklus strobe lys. Hvis dette ikke er nok, er der noget andet, der skal skæres.
Når kompilering er afsluttet, skal mappen indeholde en fil med navnet blf-a6.hex. Dette er samlet kode, klar til firmware.
Demontering af lommelygte.
Skru lommelygten til lommelygten ud. Der er to skrueforbindelser. Den der er tættere på lommelygtskroppen fikserer reflektoren og LED, og den der er tættere på midten fikserer tavlen. Vi har brug for et gennemsnit.
Inde i ser du en snapring med en fjeder og to huller langs kanterne. Indsæt pincet / tynde tang / saks i hullerne, og drej dem mod uret.
Når ringen er fjernet, har du adgang til tavlen. Det er stadig fastgjort med to ledninger, så vær forsigtig. De er snoet sammen, så drej brættet, indtil ledningerne er løse. Drej derefter brættet. Det er nødvendigt, at chippen med påskriften "TINY13A" var mere tilgængelig.
Hvis ledningerne er korte, og det ikke fungerer, skal du fjerne brættet.
Forbindelse.
Nu skal du forberede brættet til firmware.
Guiden bruger SOIC8 til at forbinde ATtiny13-chippen og programmereren.
Se billedet, mens guiden opretter forbindelsen. Bemærk den røde linje i den anden figur.
Hvis du bruger USB ASP V2.0-programmereren, skal du tilslutte den sådan:
Pin 1 på ATtiny13 - Pin 5 på USB ASP (nulstil)
Pin 4 på ATtiny13 - Pin 10 på USB ASP (Ground)
Pin 5 på ATtiny13 - Pin 1 på USB ASP (MOSI)
Pin 6 på ATtiny13 - Pin 9 på USB ASP (MISO)
Pin 7 på ATtiny13 - Pin 7 på USB ASP (SCK)
Pin 8 på ATtiny13 - Pin 2 på USB ASP (VCC)
Hvis du bruger Arduino, som guiden, skal du følge disse trin:
Åbn Arduino IDE, og sørg for, at din Arduino er tilsluttet computeren. Find ISP-skitsen i File> Eksempler> 11.ArduinoISP> ArduinoISP og upload den til Arduino. Tilslut derefter ATtiny13 til det som følger:
Pin 1 on ATtiny13 - Pin 10 on Arduino (reset)
Pin 4 på ATtiny13 - GND på Arduino (Ground)
Pin 5 on ATtiny13 - Pin 11 on Arduino (MOSI)
Pin 6 på ATtiny13 - Pin 12 på Arduino (MISO)
Pin 7 on ATtiny13 - Pin 13 on Arduino (SCK)
Pin 8 på ATtiny13 - VCC / 5V eller 3.3V på Arduino (5V foretrækkes)
Firmware.
Trin 5: blitz det
For firmware skal du installere AVRDUDE. For at kontrollere, om dette fungerer med Arduino, skriver guiden en kommando:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Hvis dette fungerer, skal du gå til den tomme mappe og registrere:
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
Lav en sikkerhedskopi af eksisterende firmware. For at blinke starter det fra mappen med den ændrede blf-a6.hex:
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
Du skal specificere stk500v1 som programmerer og specificere porten og dataoverførselshastigheden. Hvis du bruger Arduino og er i tvivl, kan du prøve at afbryde ATtiny13 fra Arduino og uploade skitsen til Arduino IDE ved hjælp af disse indstillinger. Dette fungerer ikke, men du finder ud af, hvilken kommando der bruges i konsolvinduet. Dernæst kan du kopiere attributterne til AVRDUDE-kommandoen.
Hvis du bruger en USB ASP-programmer, skal du køre:
avrdude -v -p attiny13 -c usbasp -n
For at se, om dette fungerer:
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
Lav en sikkerhedskopi:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhuse: w: 0xFF: m
At blinke:
-Uflash: w: blf-a6.hex. Udskift blf-a6.hex med dit filnavn, hvis det er anderledes.
-Ulfuse: w: 0x75: m og -Uhuse: w: 0xFF: m
Hvis der opstår en fejl, betyder det, at billedfilen er for stor til at passe på chippen, og du bliver nødt til at slette en del af koden. Hvis alt er normalt, skal nogle statusindikatorer vises, og derefter ordene "avrdude gjort. Tak."
Når du har flashet chippen, skal du samle lommelygten og se, om den fungerer.