Авторът на този материал не харесваше нормалните режими на работа на фенерчето BLF A6. Тогава той реши да запали софтуерната част на фенерчето, задавайки режимите му. Както се оказа, това не е толкова просто, има минимум информация за фърмуера и пиновете и той трябваше да го събира малко по малко. И за да не се изгуби, той реши да помогне на другите и да подреди всичко в статия.
Така че, за работа ще ви трябва следното:
Фенерче BLF A6 (вероятно това ще работи с други фенерчета, базирани на ATtiny).
Пинсети / тънки клещи / малки ножици.
Компютър за фърмуер, за предпочитане с Linux дистрибуция.
USB ASP / програмист Arduino / нещо, което AVR програмирането може да направи (очевидно USB ASP програмистът е по-добър, но съветникът използва Arduino).
Високоскоростен усилвател Rail-to-Rail [SOIC-8] (можете да го направите без него, но е много неудобно).
Развитие на дъската и джъмперни проводници за свързване.
Firmware.
Наличен е фърмуер за BLF A6 (и много други фенерчета) тук, По този въпрос е наличен дискусионен форум връзката.
Можете да изтеглите фърмуера, като стартирате търсенето "bzr клон lp: фенерче-фърмуер". Нуждаете се от фенерче-фърмуер / папка ToyKeeper / blf-a6. Той съдържа компилиран файл. шестнадесетичен, готов за фърмуер (blf-a6.hex) и C код, който също може да бъде променен (blf-a6.c). Ако искате да флаш фърмуер, можете да пропуснете следващата стъпка и просто да използвате blf-a6.hex. Вероятно ще работи и някой друг фърмуер в това хранилище.
Смяна на фърмуера.
внимание символи, за да не се изкриви значението, се дават без превод.
Отворете blf-a6.c в предпочитания от вас текстов редактор или IDE. Най-интересните линии са групите от режими между редове 94 и 109. Те изглеждат така:
// Режим група 1
#define NUM_MODES1 7
// PWM нива за голямата верига (FET или Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// PWM нива за малката верига (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Моята мостра: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Крон проба: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// PWM скорост за всеки режим
#define MODES_PWM1 ФАЗА, БЪРЗО, БЪРЗО, БЪРЗО, БЪРЗО, БЪРЗО, ФАЗА
// Група режим 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 БЪРЗО, БЪРЗО, БЪРЗО, ФАЗА
За всяка група MODESN е PWM стойността, използвана за FET, а MODES1 е PWM стойността, използвана за 7135 във всеки режим. Числото е в диапазона от 0 до 255 и съответства на яркостта на светлината. Повече информация
тук, (превъртете надолу до "Режим на управление:") Главният не е сигурен каква е скоростта на PWM.Ако някой знае, кажи ми в коментарите. Транзисторът с полев ефект може да генерира повече светлина от 7135, но 7135 поддържа нивото на светлината повече или по-малко същото през целия живот на батерията, докато при използване на транзистор с полеви ефект светлината затъмнява, когато батерията се изтощи.
Тук можем да коригираме PWM стойностите, за да създадем режими по наш вкус. Можете също да промените броя на режимите, но капитанът не го направи, защото има нужда от четири режима и това е числото във втората група. Той искаше по-тъмен режим на лунната светлина и затова постави първия на 0/1. Той също така счита турбо режима за малко безсмислен, затова го замених с 137/255, което е еквивалентно на шестия режим в група от седем режима.
Когато имате необходимия код, трябва да го компилирате в .hex файл. Поне ви трябват gcc-avr и avr-libc. Ако имате проблеми, погледнете други зависимости във файла за readme. Репозиторият включва скрипт за изграждане, така че всичко, което трябва да направите, е да стартирате:
../../bin/build.sh 13 blf-a6
в папката blf-a6. ../../Bin/build.sh е скриптът. 13 показва, че е за ATtiny13, а blf-a6 означава, че е за BLF A6.
avr-gcc -Wall -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 -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-предупреждения -O ihex blf-a6.elf blf-a6.hex
Програма: 1022 байта (99,8% пълно)
данни: 13 байта (20,3% пълно)
Екипите вече са оптимизирани по размер, така че ако пише, че са над 100% пълни, опитайте да изтриете
#define FULL_BIKING_STROBE
Ред 125 заклинания малък цикъл строб светлина. Ако това не е достатъчно, ще трябва да се намали нещо друго.
Когато компилацията приключи, папката трябва да съдържа файл с име blf-a6.hex. Това е компилиран код, готов за фърмуер.
Демонтиране на фенерчето.
Развийте фара на фенерчето. Има две винтови връзки. Този, който е по-близо до тялото на фенерчето, фиксира отражателя и светодиода, а този, който е по-близо до средата, фиксира платката. Нуждаем се от средно ниво.
Вътре ще видите фиксиращ пръстен с пружина и два отвора по краищата. Поставете пинсети / тънки клещи / ножици в дупките и ги завъртете обратно на часовниковата стрелка.
След като пръстенът бъде премахнат, ще имате достъп до дъската. Той все още е прикрепен с два проводника, така че бъдете внимателни. Те са усукани заедно, така че завъртете дъската, докато проводниците се разхлабят. След това обърнете дъската. Необходимо е чипът с надпис "TINY13A" да е бил по-достъпен.
Ако проводниците са къси и не работи, тогава трябва да премахнете платката.
Връзка.
Сега трябва да подготвите платката за фърмуер.
Съветникът използва SOIC8 за свързване на чипа ATtiny13 и програмиста.
Вижте снимката, докато съветникът прави връзка. Забележете червената линия на втората фигура.
Ако използвате USB ASP V2.0 програмист, трябва да го свържете така:
Пин 1 на ATtiny13 - Пин 5 на USB ASP (нулиране)
Пин 4 на ATtiny13 - Пин 10 на USB ASP (земята)
Пин 5 на ATtiny13 - Пин 1 на USB ASP (MOSI)
Пин 6 на ATtiny13 - Пин 9 на USB ASP (MISO)
Пин 7 на ATtiny13 - Пин 7 на USB ASP (SCK)
Пин 8 на ATtiny13 - Пин 2 на USB ASP (VCC)
Ако използвате Arduino, като съветника, следвайте тези стъпки:
Отворете Arduino IDE и се уверете, че Arduino е свързан с компютъра. Намерете скицата на ISP във Файл> Примери> 11.ArduinoISP> ArduinoISP и я качете в Arduino. След това свържете ATtiny13 към него, както следва:
Пин 1 на ATtiny13 - Пин 10 на Arduino (нулиране)
Пин 4 на ATtiny13 - GND на Arduino (Ground)
Пин 5 на ATtiny13 - Пин 11 на Arduino (MOSI)
Пин 6 на ATtiny13 - Пин 12 на Arduino (MISO)
Пин 7 на ATtiny13 - Пин 13 на Arduino (SCK)
Пин 8 на ATtiny13 - VCC / 5V или 3.3V на Arduino (предпочитано 5V)
Firmware.
Стъпка 5: флаш
За фърмуер трябва да инсталирате AVRDUDE. За да провери дали това работи с Arduino, съветникът пише команда:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Ако това работи, отидете в празната папка и се регистрирайте:
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
Направете резервно копие на съществуващ фърмуер. За да мига от папката с модифицирания 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
Трябва да посочите stk500v1 като програмист и да посочите порта и скоростта на пренос на данни. Ако използвате Arduino и се съмнявате, опитайте да изключите ATtiny13 от Arduino и да качите скицата към Arduino IDE, като използвате тези настройки, Това няма да работи, но ще разберете коя команда се използва в прозореца на конзолата. След това можете да копирате атрибутите в командата AVRDUDE.
Ако използвате USB ASP програмист, изпълнете:
avrdude -v -p attiny13 -c usbasp -n
За да видите дали това работи:
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
Направете резервно копие:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
За да мига:
-Uflash: w: blf-a6.hex. Заменете blf-a6.hex с името на файла си, ако е различно.
-Ulfuse: w: 0x75: m и -Uhfuse: w: 0xFF: m
Ако възникне грешка, това означава, че файлът с изображение е твърде голям, за да се побере в чипа и ще трябва да изтриете част от кода. Ако всичко е нормално, трябва да се покажат някои индикатори за напредък и след това думите "avrdude done. Благодаря."
След като запалите чипа, сглобете фенерчето и вижте дали работи.