ผู้เขียนเนื้อหานี้ไม่ชอบโหมดปกติของไฟฉาย BLF A6 จากนั้นเขาก็ตัดสินใจที่จะแฟลชส่วนซอฟต์แวร์ของไฟฉายตั้งค่าโหมด มันกลับกลายเป็นว่ามันไม่ง่ายมีข้อมูลขั้นต่ำเกี่ยวกับเฟิร์มแวร์และพินและเขาต้องรวบรวมมันทีละนิด และเพื่อที่เธอจะไม่หลงทางเขาจึงตัดสินใจช่วยเหลือผู้อื่นและจัดการทุกอย่างในบทความ
ดังนั้นสำหรับการทำงานคุณจะต้องมีสิ่งต่อไปนี้:
Flashlight BLF A6 (อาจเป็นไปได้กับไฟฉายอื่น ๆ ที่ใช้ ATtiny)
แหนบ / คีมบาง / กรรไกรเล็ก
คอมพิวเตอร์สำหรับเฟิร์มแวร์โดยเฉพาะอย่างยิ่งกับการกระจาย Linux
USB ASP / โปรแกรมเมอร์ Arduino / สิ่งที่การเขียนโปรแกรม AVR สามารถทำได้ (เห็นได้ชัดว่าโปรแกรมเมอร์ USB ASP นั้นดีกว่า แต่ตัวช่วยสร้างใช้ Arduino)
แอมพลิฟายเออร์รถไฟต่อรถไฟความเร็วสูง [SOIC-8] (คุณสามารถทำได้โดยไม่มีมัน แต่ไม่สะดวกมาก)
คณะกรรมการพัฒนาและสายจัมเปอร์สำหรับการเชื่อมต่อ
เฟิร์มแว
มีเฟิร์มแวร์สำหรับ BLF A6 (และไฟฉายอื่น ๆ มากมาย) ที่นี่. ฟอรั่มการสนทนาที่มีอยู่ในนี้ ลิงค์.
คุณสามารถดาวน์โหลดเฟิร์มแวร์ได้โดยใช้การค้นหา "bzr branch lp: flashlight-firmware" ต้องการโฟลเดอร์ flashlight-firmware / 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)
// ตัวอย่าง Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78)
// Manker2: 2 = 21, 3 = 39, 4 = 47, ... 6? = 68
// ความเร็ว PWM สำหรับแต่ละโหมด
#define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE
// โหมดกลุ่ม 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 FAST, FAST, FAST, PHASE
สำหรับแต่ละกลุ่ม 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 - ไม่มีคำเตือนเปลี่ยน -O-ihex blf-a6.elf blf-a6.hex
โปรแกรม: 1022 ไบต์ (เต็ม 99.8%)
ข้อมูล: 13 ไบต์ (เต็ม 20.3%)
ทีมได้รับการปรับขนาดให้เหมาะสมแล้วดังนั้นหากมีการเขียนว่าเต็มมากกว่า 100% ให้ลองลบ
#define FULL_BIKING_STROBE
สาย 125 คาถาเล็ก วงจร แสงแฟลช หากไม่เพียงพอก็จะต้องมีการตัดอย่างอื่น
เมื่อการรวบรวมเสร็จสมบูรณ์โฟลเดอร์ควรมีไฟล์ชื่อ blf-a6.hex นี่คือรหัสที่รวบรวมพร้อมสำหรับเฟิร์มแวร์
รื้อไฟฉาย
คลายเกลียวไฟหน้าของไฟฉาย มีการเชื่อมต่อสกรูสองตัว ตัวที่อยู่ใกล้กับตัวไฟฉายมากจะแก้ไขตัวสะท้อนแสงและไฟ LED และตัวที่อยู่ใกล้กับจุดกึ่งกลางจะช่วยแก้ไขบอร์ด เราต้องการค่าเฉลี่ย
ข้างในคุณจะเห็นแหวน snap ที่มีสปริงและรูสองรูที่ขอบ ใส่แหนบ / คีมบาง / กรรไกรลงในหลุมแล้วหมุนทวนเข็มนาฬิกา
เมื่อแหวนถูกถอดออกคุณจะสามารถเข้าสู่บอร์ดได้ มันยังคงติดอยู่กับสองสายดังนั้นระวัง พวกเขาบิดกันดังนั้นหมุนบอร์ดจนสายไฟหลวม จากนั้นพลิกกระดาน มีความจำเป็นที่ชิปที่มีคำว่า "TINY13A" จะสามารถเข้าถึงได้มากขึ้น
หากสายไฟสั้นและใช้งานไม่ได้คุณต้องนำบอร์ดออก
สัมพันธ์
ตอนนี้คุณต้องเตรียมบอร์ดสำหรับเฟิร์มแวร์
ตัวช่วยสร้างใช้ SOIC8 เพื่อเชื่อมต่อชิป ATtiny13 และโปรแกรมเมอร์
ดูรูปภาพในขณะที่วิซาร์ดทำการเชื่อมต่อ สังเกตุเส้นสีแดงในรูปที่สอง
หากคุณใช้โปรแกรมเมอร์ USB ASP V2.0 คุณจะต้องเชื่อมต่อแบบนี้:
Pin 1 on ATtiny13 - Pin 5 บน USB ASP (รีเซ็ต)
Pin 4 on ATtiny13 - Pin 10 บน USB ASP (กราวด์)
Pin 5 on ATtiny13 - Pin 1 บน USB ASP (MOSI)
Pin 6 บน ATtiny13 - Pin 9 บน USB ASP (MISO)
Pin 7 บน ATtiny13 - Pin 7 บน USB ASP (SCK)
Pin 8 on ATtiny13 - Pin 2 บน USB ASP (VCC)
หากคุณใช้ Arduino เช่นตัวช่วยสร้างให้ทำตามขั้นตอนเหล่านี้:
เปิด Arduino IDE และให้แน่ใจว่า Arduino ของคุณเชื่อมต่อกับคอมพิวเตอร์ ค้นหาภาพร่าง ISP ในไฟล์> ตัวอย่าง> 11.ArduinoISP> ArduinoISP และอัปโหลดไปยัง Arduino จากนั้นเชื่อมต่อ ATtiny13 กับมันดังนี้:
Pin 1 on ATtiny13 - Pin 10 บน Arduino (รีเซ็ต)
Pin 4 บน ATtiny13 - GND บน Arduino (กราวด์)
Pin 5 on ATtiny13 - Pin 11 บน Arduino (MOSI)
Pin 6 บน ATtiny13 - Pin 12 บน Arduino (MISO)
Pin 7 on ATtiny13 - Pin 13 on Arduino (SCK)
Pin 8 on ATtiny13 - VCC / 5V หรือ 3.3V บน Arduino (แนะนำให้ใช้ 5V)
เฟิร์มแว
ขั้นตอนที่ 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: แฟลช-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ufuse: 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 -Uffuse: 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 เรียบร้อยแล้วขอบคุณ"
หลังจากที่คุณกะพริบชิปแล้วให้ประกอบไฟฉายและดูว่าใช้งานได้หรือไม่