Pengarang bahan ini tidak menyukai mod biasa operasi BLF A6 lampu suluh. Kemudian dia memutuskan untuk melancarkan bahagian perisian lampu suluh, menetapkan modnya. Seperti yang ternyata, ini tidak begitu mudah, terdapat sedikit maklumat mengenai firmware dan pinouts dan dia terpaksa mengumpulnya sedikit demi sedikit. Dan supaya dia tidak tersesat, dia memutuskan untuk membantu orang lain dan menyusun segala sesuatu dalam satu artikel.
Jadi, untuk kerja, anda memerlukan yang berikut:
Lampu suluh BLF A6 (mungkin ini akan berfungsi dengan lampu suluh lain berdasarkan ATtiny).
Pinset / tang nipis / gunting kecil.
Komputer untuk firmware, sebaiknya dengan pengedaran Linux.
USB ASP / Programmer Arduino / sesuatu yang dapat dilakukan oleh pengaturcaraan AVR (jelas, programer USB ASP lebih baik, tetapi penyihir yang digunakan Arduino).
Penguat Rel Kereta Api Berkelajuan Tinggi [SOIC-8] (anda boleh lakukan tanpa ia, tetapi sangat tidak selesa).
Lembaga pembangunan dan wayar pelompat untuk sambungan.
Firmware.
Firmware untuk BLF A6 (dan banyak senter lain) boleh didapati di sini. Forum perbincangan boleh didapati mengenai perkara ini pautan itu.
Anda boleh memuat turun firmware dengan menjalankan carian "bzr branch lp: flashlight-firmware". Perlu folder firmware / ToyKeeper / blf-a6. Ia mengandungi fail yang disusun. hex, bersedia untuk firmware (blf-a6.hex), dan kod C, yang juga boleh diubah (blf-a6.c). Jika anda mahu flash firmware saham, anda boleh melangkau langkah seterusnya dan hanya gunakan blf-a6.hex. Sesetengah firmware lain dalam repositori ini mungkin akan berfungsi juga.
Tukar firmware.
Awas simbol, supaya tidak mengganggu makna, diberikan tanpa terjemahan.
Buka blf-a6.c dalam editor teks pilihan anda atau IDE. Garis yang paling menarik adalah kumpulan mod antara baris 94 dan 109. Mereka kelihatan seperti ini:
/ / Kumpulan mod 1
#define NUM_MODES1 7
// Tahap PWM untuk litar besar (FET atau Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
/ // Tahap PWM untuk litar kecil (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Sampel saya: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Krono sampel: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
/ // PWM kelajuan untuk setiap mod
#define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE
// Kumpulan mod 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 FAST, FAST, FAST, PHASE
Bagi setiap kumpulan, MODESN ialah nilai PWM yang digunakan untuk FET, dan MODES1 ialah nilai PWM yang digunakan untuk 7135 dalam setiap mod. Nombor ini berada dalam jarak dari 0 hingga 255 dan sepadan dengan kecerahan cahaya. Maklumat lanjut
di sini. (tatal ke bawah ke "Kawalan mod:") Tuan tidak pasti apa kelajuan PWM itu.Jika ada yang tahu, beritahu saya dalam komen. Transistor kesan medan boleh menghasilkan lebih banyak cahaya daripada 7135, tetapi 7135 mengekalkan tahap cahaya lebih kurang sama sepanjang hayat bateri, manakala apabila menggunakan transistor kesan medan, cahaya meretas apabila bateri habis.
Di sini kita boleh menyesuaikan nilai PWM untuk mencipta mod dengan keinginan kita. Anda juga boleh menukar bilangan mod, tetapi tuan tidak melakukan ini kerana dia memerlukan empat mod, dan ini adalah nombor dalam kumpulan kedua. Beliau menginginkan rejim cahaya bulan yang lebih gelap, dan oleh itu menetapkan yang pertama untuk 0/1. Dia juga menganggap mod turbo sedikit sia-sia, jadi saya menggantikannya dengan 137/255, yang bersamaan dengan mod keenam dalam sekumpulan tujuh mod.
Apabila anda mempunyai kod yang anda perlukan, anda mesti menyusunnya ke dalam fail .hex. Sekurang-kurangnya anda memerlukan gcc-avr dan avr-libc. Sekiranya anda mempunyai masalah, lihat kebergantungan lain dalam fail readme. Repositori termasuk skrip bina, jadi semua yang anda perlu lakukan adalah dijalankan:
../../bin/build.sh 13 blf-a6
dalam folder blf-a6. ../../Bin/build.sh adalah skrip. 13 menunjukkan bahawa ia adalah untuk ATtiny13, dan blf-a6 menunjukkan bahawa ia adalah untuk BLF A6.
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I .. -I ../ .. -I ../../.. -short -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-warnings -O ihex blf-a6.elf blf-a6.hex
Program: 1022 bytes (99.8% Penuh)
data: 13 bait (20.3% penuh)
Pasukan telah dioptimumkan dalam ukuran, jadi jika ditulis bahawa mereka lebih daripada 100% penuh, cuba memadam
#define FULL_BIKING_STROBE
Line 125 mantap kecil basikal lampu strob. Jika ini tidak mencukupi, maka sesuatu yang lain perlu dipotong.
Apabila penyusunan selesai, folder itu hendaklah mengandungi fail bernama blf-a6.hex. Ini dikompilkan kod, sedia untuk firmware.
Membongkar lampu suluh.
Cabut lampu lampu suluh. Terdapat dua sambungan skru. Yang lebih dekat dengan badan lampu suluh membetulkan reflektor dan LED, dan yang lebih dekat dengan pembetulan tengah papan. Kita memerlukan purata.
Di dalamnya anda akan melihat cincin snap dengan spring dan dua lubang di sepanjang tepi. Masukkan pinset / pin nipis / gunting ke dalam lubang dan putar mereka lawan jam.
Setelah cincin dikeluarkan, anda akan mempunyai akses ke papan. Ia masih dilampirkan dengan dua wayar, maka berhati-hati. Mereka dipintal bersama, jadi putar papan sehingga wayar longgar. Kemudian matikan papan. Ia perlu agar cip dengan tulisan "TINY13A" lebih mudah diakses.
Jika wayar pendek dan ia tidak berfungsi, maka anda perlu mengeluarkan papan.
Sambungan.
Kini anda perlu menyediakan papan untuk firmware.
Penyihir menggunakan SOIC8 untuk menyambungkan cip ATtiny13 dan programmer.
Lihat foto sebagai penyihir membuat sambungan. Perhatikan garis merah dalam angka kedua.
Jika anda menggunakan programmer USB ASP V2.0, anda perlu menyambungkannya seperti ini:
Pin 1 pada ATtiny13 - Pin 5 pada USB ASP (reset)
Pin 4 pada ATtiny13 - Pin 10 pada USB ASP (Ground)
Pin 5 pada ATtiny13 - Pin 1 pada USB ASP (MOSI)
Pin 6 pada ATtiny13 - Pin 9 pada USB ASP (MISO)
Pin 7 pada ATtiny13 - Pin 7 pada USB ASP (SCK)
Pin 8 pada ATtiny13 - Pin 2 pada USB ASP (VCC)
Sekiranya anda menggunakan Arduino, seperti ahli sihir, ikuti langkah berikut:
Buka Arduino IDE dan pastikan Arduino anda disambungkan ke komputer. Cari lakaran ISP dalam File> Contoh> 11.ArduinoISP> ArduinoISP dan muat naik ke Arduino. Kemudian sambungkan ATtiny13 kepadanya seperti berikut:
Pin 1 pada ATtiny13 - Pin 10 pada Arduino (reset)
Pin 4 pada ATtiny13 - GND pada Arduino (Ground)
Pin 5 pada ATtiny13 - Pin 11 pada Arduino (MOSI)
Pin 6 pada ATtiny13 - Pin 12 pada Arduino (MISO)
Pin 7 pada ATtiny13 - Pin 13 pada Arduino (SCK)
Pin 8 pada ATtiny13 - VCC / 5V atau 3.3V pada Arduino (pilihan 5V)
Firmware.
Langkah 5: kilat
Untuk firmware, anda mesti memasang AVRDUDE. Untuk memeriksa sama ada ini berfungsi dengan Arduino, wizard menulis arahan:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Jika ini berfungsi, pergi ke folder kosong dan daftar:
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
Buat salinan sandaran firmware yang sedia ada. Untuk berkelip, dari folder dengan blf-a6.hex yang diubahsuai ia bermula:
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
Anda perlu menentukan stk500v1 sebagai pengaturcara, dan menentukan kelajuan pemindahan pelabuhan dan data. Sekiranya anda menggunakan Arduino dan ragu-ragu, cuba putuskan ATtiny13 dari Arduino dan muat naik lakaran ke Arduino IDE menggunakan tetapan ini. Ini tidak akan berfungsi, tetapi anda akan mengetahui perintah mana yang digunakan dalam tetingkap konsol. Seterusnya, anda boleh menyalin atribut ke arahan AVRDUDE.
Jika anda menggunakan pengaturcara USB ASP, jalankan:
avrdude -v -p attiny13 -c usbasp -n
Untuk melihat apakah ini berfungsi:
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
Buat sandaran:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Untuk kilat:
-Uflash: w: blf-a6.hex. Gantikan blf-a6.hex dengan nama fail anda jika ia berbeza.
-Ulfuse: w: 0x75: m dan -Uhfuse: w: 0xFF: m
Sekiranya berlaku ralat, ini bermakna fail imej terlalu besar untuk disesuaikan pada cip, dan anda perlu memadam sebahagian kod. Sekiranya semuanya sudah normal, beberapa penunjuk kemajuan perlu dipaparkan, dan kemudian kata-kata "avrdude dilakukan. Terima kasih."
Selepas anda memintas cip, pasang lampu suluh dan lihat apakah ia berfungsi.