Tác giả của vật liệu này không thích các chế độ hoạt động bình thường của đèn pin BLF A6. Sau đó, anh quyết định flash phần mềm của đèn pin, cài đặt các chế độ của nó. Hóa ra, điều này không đơn giản, có tối thiểu thông tin về phần sụn và sơ đồ chân và anh ta phải thu thập nó từng chút một. Và để cô không bị lạc, anh quyết định giúp đỡ người khác và sắp xếp mọi thứ trong một bài viết.
Vì vậy, đối với công việc bạn sẽ cần những điều sau đây:
Đèn pin BLF A6 (có lẽ điều này sẽ hoạt động với các đèn pin khác dựa trên ATtiny).
Nhíp / kìm mỏng / kéo nhỏ.
Một máy tính cho phần sụn, tốt nhất là có bản phân phối Linux.
Lập trình USB / lập trình viên Arduino / một cái gì đó mà lập trình AVR có thể làm (rõ ràng, lập trình viên USB ASP tốt hơn, nhưng trình hướng dẫn sử dụng Arduino).
Bộ khuếch đại Rail-to-Rail tốc độ cao [SOIC-8] (bạn có thể làm mà không cần nó, nhưng nó rất bất tiện).
Ban phát triển và dây nhảy để kết nối.
Phần sụn.
Có sẵn chương trình cơ sở cho BLF A6 (và nhiều đèn pin khác) ở đây. Một diễn đàn thảo luận có sẵn về điều này liên kết.
Bạn có thể tải xuống chương trình cơ sở bằng cách chạy tìm kiếm "bzr nhánh lp: đèn pin-chương trình cơ sở". Cần thư mục đèn pin-firmware / ToyKeeper / blf-a6. Nó chứa một tập tin biên dịch. hex, sẵn sàng cho phần sụn (blf-a6.hex) và mã C, cũng có thể được thay đổi (blf-a6.c). Nếu bạn muốn flash firmware stock, bạn có thể bỏ qua bước tiếp theo và chỉ cần sử dụng blf-a6.hex. Một số phần mềm khác trong kho lưu trữ này có thể cũng sẽ hoạt động.
Thay đổi phần sụn.
Thận trọng các biểu tượng, để không làm biến dạng ý nghĩa, được đưa ra mà không cần dịch.
Mở blf-a6.c trong trình soạn thảo văn bản hoặc IDE ưa thích của bạn. Các dòng thú vị nhất là các nhóm chế độ giữa các dòng 94 và 109. Chúng trông như thế này:
// Chế độ nhóm 1
#define NUM_MODES1 7
// Các mức PWM cho mạch lớn (FET hoặc Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// Các mức PWM cho mạch nhỏ (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Mẫu của tôi: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Mẫu Krono: 6 = 5., 21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// Tốc độ PWM cho từng chế độ
#define MODES_PWM1 GIAI ĐOẠN, NHANH CHÓNG, NHANH CHÓNG, NHANH CHÓNG, NHANH CHÓNG, GIAI ĐOẠN
// Chế độ nhóm 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 NHANH CHÓNG, NHANH CHÓNG, NHANH CHÓNG, GIAI ĐOẠN
Đối với mỗi nhóm, MODESN là giá trị PWM được sử dụng cho FET và MODES1 là giá trị PWM được sử dụng cho 7135 trong mỗi chế độ. Số nằm trong phạm vi từ 0 đến 255 và tương ứng với độ sáng của ánh sáng. Thêm thông tin
ở đây. (cuộn xuống "Điều khiển chế độ:") Bậc thầy không chắc tốc độ PWM là bao nhiêu.Nếu ai biết, hãy cho tôi biết trong các ý kiến. Một bóng bán dẫn hiệu ứng trường có thể tạo ra nhiều ánh sáng hơn 7135, nhưng 7135 giữ mức ánh sáng ít nhiều giống nhau trong suốt vòng đời của pin, trong khi khi sử dụng bóng bán dẫn hiệu ứng trường, ánh sáng sẽ tắt dần khi hết pin.
Ở đây chúng ta có thể điều chỉnh các giá trị PWM để tạo các chế độ theo ý thích. Bạn cũng có thể thay đổi số lượng chế độ, nhưng chủ không làm điều này vì anh ta cần bốn chế độ, và đây là số trong nhóm thứ hai. Anh ta muốn một chế độ ánh trăng tối hơn, và do đó đặt đầu tiên là 0/1. Ông cũng coi chế độ turbo là một chút vô nghĩa, vì vậy tôi đã thay thế nó bằng 137/255, tương đương với chế độ thứ sáu trong một nhóm gồm bảy chế độ.
Khi bạn có mã bạn cần, bạn phải biên dịch nó thành tệp .hex. Ít nhất bạn cần gcc-avr và avr-libc. Nếu bạn có vấn đề, hãy xem các phụ thuộc khác trong tệp readme. Kho lưu trữ bao gồm một tập lệnh xây dựng, vì vậy tất cả những gì bạn phải làm là chạy:
../../bin/build.sh 13 blf-a6
trong thư mục blf-a6. ../../Bin/build.sh là kịch bản. 13 chỉ ra rằng nó dành cho ATtiny13 và blf-a6 chỉ ra rằng nó dành cho 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-part-flags = .eeprom = alloc, load --change-part-lma .eeprom = 0 --no-change-warnings -O ihex blf-a6.elf blf-a6.hex
Chương trình: 1022 byte (99,8% đầy đủ)
dữ liệu: 13 byte (Đầy đủ 20,3%)
Các đội đã được tối ưu hóa về kích thước, vì vậy nếu được viết rằng họ đã đầy đủ hơn 100%, hãy thử xóa
#define FULL_BIKING_STROBE
Dòng 125 phép nhỏ xe đạp ánh sáng nhấp nháy. Nếu điều này là không đủ, thì một cái gì đó khác sẽ phải được cắt giảm.
Khi quá trình biên dịch hoàn tất, thư mục sẽ chứa một tệp có tên blf-a6.hex. Đây là mã được biên dịch, sẵn sàng cho firmware.
Tháo đèn pin.
Tháo đèn pha của đèn pin. Có hai kết nối vít. Cái nào gần với thân đèn pin hơn sẽ sửa được gương phản xạ và đèn LED, và cái gần với phần giữa sẽ sửa bảng. Chúng ta cần một mức trung bình.
Bên trong, bạn sẽ thấy một vòng tròn với một lò xo và hai lỗ dọc theo các cạnh. Chèn nhíp / kìm mỏng / kéo vào các lỗ và xoay chúng ngược chiều kim đồng hồ.
Khi chiếc nhẫn được gỡ bỏ, bạn sẽ có quyền truy cập vào bảng. Nó vẫn được gắn với hai dây, vì vậy hãy cẩn thận. Chúng được xoắn với nhau, vì vậy xoay bảng cho đến khi dây bị lỏng. Sau đó lật bảng. Điều cần thiết là chip có dòng chữ "TINY13A" dễ tiếp cận hơn.
Nếu dây ngắn và nó không hoạt động, thì bạn cần phải tháo bo mạch.
Kết nối.
Bây giờ bạn cần chuẩn bị bảng cho firmware.
Trình hướng dẫn sử dụng SOIC8 để kết nối chip ATtiny13 và lập trình viên.
Xem ảnh khi trình hướng dẫn thực hiện kết nối. Lưu ý đường màu đỏ trong hình thứ hai.
Nếu bạn sử dụng trình lập trình USB ASP V2.0, bạn cần kết nối nó như thế này:
Chân 1 trên ATtiny13 - Chân 5 trên USB ASP (đặt lại)
Chân 4 trên ATtiny13 - Chân 10 trên USB ASP (Mặt đất)
Chân 5 trên ATtiny13 - Chân 1 trên USB ASP (MOSI)
Chân 6 trên ATtiny13 - Chân 9 trên USB ASP (MISO)
Chân 7 trên ATtiny13 - Chân 7 trên USB ASP (SCK)
Chân 8 trên ATtiny13 - Chân 2 trên USB ASP (VCC)
Nếu bạn sử dụng Arduino, như trình hướng dẫn, hãy làm theo các bước sau:
Mở Arduino IDE và đảm bảo Arduino của bạn được kết nối với máy tính. Tìm bản phác thảo ISP trong Tệp> Ví dụ> 11.ArduinoISP> ArduinoISP và tải nó lên Arduino. Sau đó kết nối ATtiny13 với nó như sau:
Chân 1 trên ATtiny13 - Chân 10 trên Arduino (đặt lại)
Chân số 4 trên ATtiny13 - GND trên Arduino (Mặt đất)
Chân 5 trên ATtiny13 - Chân 11 trên Arduino (MOSI)
Chân 6 trên ATtiny13 - Chân 12 trên Arduino (MISO)
Chân 7 trên ATtiny13 - Chân 13 trên Arduino (SCK)
Chân 8 trên ATtiny13 - VCC / 5V hoặc 3.3V trên Arduino (ưu tiên 5V)
Phần sụn.
Bước 5: flash nó
Đối với phần sụn, bạn phải cài đặt AVRDUDE. Để kiểm tra xem cái này có hoạt động với Arduino không, trình hướng dẫn viết một lệnh:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Nếu điều này hoạt động, đi đến thư mục trống và đăng ký:
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: -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Tạo một bản sao lưu của phần sụn hiện có. Để flash, từ thư mục có blf-a6.hex đã sửa đổi, nó bắt đầu:
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
Bạn cần chỉ định stk500v1 làm lập trình viên, và chỉ định tốc độ truyền dữ liệu và cổng. Nếu bạn đang sử dụng Arduino và nghi ngờ, hãy thử ngắt kết nối ATtiny13 khỏi Arduino và tải bản phác thảo lên Arduino IDE bằng cách sử dụng những cài đặt này. Điều này sẽ không hoạt động, nhưng bạn sẽ tìm ra lệnh nào được sử dụng trong cửa sổ giao diện điều khiển. Tiếp theo, bạn có thể sao chép các thuộc tính vào lệnh AVRDUDE.
Nếu bạn đang sử dụng một lập trình viên USB ASP, hãy chạy:
avrdude -v -p attiny13 -c usbasp -n
Để xem nếu điều này hoạt động:
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
Tạo một bản sao lưu:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Để flash:
-Uflash: w: blf-a6.hex. Thay thế blf-a6.hex bằng tên tệp của bạn nếu nó khác.
-Ulfuse: w: 0x75: m và -Uhuse: w: 0xFF: m
Nếu xảy ra lỗi, điều này có nghĩa là tệp hình ảnh quá lớn để vừa với chip và bạn sẽ phải xóa một phần mã. Nếu mọi thứ đều bình thường, một số chỉ số tiến trình sẽ được hiển thị và sau đó là dòng chữ "avrdude xong. Cảm ơn bạn."
Sau khi bạn đã flash chip, lắp ráp đèn pin và xem nếu nó hoạt động.