Სარჩევი:

განათავსეთ მორგებული პროგრამული უზრუნველყოფა BLF A6 ფანარში: 5 ნაბიჯი
განათავსეთ მორგებული პროგრამული უზრუნველყოფა BLF A6 ფანარში: 5 ნაბიჯი

ვიდეო: განათავსეთ მორგებული პროგრამული უზრუნველყოფა BLF A6 ფანარში: 5 ნაბიჯი

ვიდეო: განათავსეთ მორგებული პროგრამული უზრუნველყოფა BLF A6 ფანარში: 5 ნაბიჯი
ვიდეო: რომელი ბრაუზერია თქვენთვის საუკეთესო? 2024, ივლისი
Anonim
ანათებს მორგებულ პროგრამულ უზრუნველყოფას BLF A6 ფანარში
ანათებს მორგებულ პროგრამულ უზრუნველყოფას BLF A6 ფანარში

ახლახანს ავიღე BLF A6. ეს ძალიან ლამაზია, მაგრამ მე არ მომწონს ნაგულისხმევი რეჟიმის ჯგუფი, ამიტომ შევცვალე firmware, რომ გამოვიყენო ჩემი სასურველი სიკაშკაშე. ინფორმაციის მოძიება ძნელი იყო, ამიტომ ყველაფერს, რაც ვისწავლე, აქ ვაყენებ ჩემთვის და სხვებისთვის.

მარაგები

BLF A6 (ალბათ იმუშავებს სხვა ATINY დაფუძნებულ ფანრებთან ერთად)

პინცეტი / თხელი პლიუსი / პატარა მაკრატელი / რაღაც, რომელიც გააუქმებს მძღოლის დაფის საყრდენ ბეჭედს

კომპიუტერი რომ აანთო, სასურველია გაუშვას Linux დისტრიბუცია

USB ASP პროგრამისტი / Arduino / რაღაც, რომელსაც შეუძლია AVR პროგრამირება (როგორც ჩანს USB ASP პროგრამისტი რეკომენდირებულია, მაგრამ მე გამოვიყენე Arduino)

SOIC8 კლიპი (ამის გაკეთება შესაძლებელია გარეშე, მაგრამ ის ძალიან მომაბეზრებელია და საერთოდ არ არის რეკომენდებული)

(სურვილისამებრ) Breadboard და/ან jumper მავთულები, რათა გაადვილდეს დაკავშირება

ნაბიჯი 1: ჩამოტვირთეთ Firmware

BLF A6– ის (და მრავალი სხვა ფანრის) ფირმა ხელმისაწვდომია აქ. ავტორი ამაზე საუბრობს აქ. შეგიძლიათ გადმოწეროთ გაშვებით:

bzr ფილიალი lp: ~ სათამაშო/ფანარი-ფირმა/blf-a6-final

ტერმინალში. (შეიძლება დაგჭირდეთ bzr დაყენება)

შენიშვნა: ამ ინსტრუქციის წინა რედაქტირებაში მე გამოვიყენე "bzr branch lp: flashlight-firmware". მას შემდეგ შევიტყვე, რომ ეს გადმოტვირთავს მოძველებულ ვერსიას არასწორი მნიშვნელობებით დროებითი კონდენსატორისთვის, რაც ღილაკს არასასიამოვნო ხანგრძლივად აჭერს. (მადლობა ამ თემას Reddit– ზე)

თქვენთვის სასურველი საქაღალდე არის blf-a6-final/ToyKeeper/blf-a6. იგი შეიცავს შედგენილ.ექვსმეტი ფაილს, რომელიც მზად არის ციმციმებისთვის (blf-a6.hex) და C კოდს, რომლის შეცვლაც შეგიძლიათ. (blf-a6.c) თუ გსურთ საფონდო პროგრამის გაშუქება, შეგიძლიათ გამოტოვოთ შემდეგი ნაბიჯი და გამოიყენოთ blf-a6.hex. ამ საცავში არსებული სხვა პროგრამული უზრუნველყოფა ასევე იმუშავებს.

ნაბიჯი 2: შეცვალეთ firmware

გახსენით blf-a6.c თქვენთვის სასურველი ტექსტური რედაქტორი ან IDE. ყველაზე საინტერესო ხაზებია რეჟიმის ჯგუფები სტრიქონებს შორის 116 და 131. ისინი ასე გამოიყურება:

// რეჟიმის ჯგუფი 1 #განსაზღვრეთ NUM_MODES1 7 // PWM დონეები დიდი წრისთვის (FET ან Nx7135) #განსაზღვრეთ MODESNx1 0, 0, 0, 7, 56, 137, 255 // PWM დონეები მცირე წრედისთვის (1x7135) # განსაზღვრეთ MODES1x1 2, 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) // მანკერი 2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // თითოეული რეჟიმი #განსაზღვრეთ MODES_PWM2 FAST, FAST, FAST, PHASE

თითოეული ჯგუფისათვის MODESN არის PWM მნიშვნელობა, რომელიც გამოიყენება FET– ისთვის, ხოლო MODES1 არის PWM მნიშვნელობა, რომელიც გამოიყენება 7135 – ისთვის თითოეულ რეჟიმში. რიცხვი 0 -დან 255 -მდეა და შეესაბამება სინათლის სიკაშკაშეს. მეტი ინფორმაცია აქ. (გადადით ქვემოთ "რეჟიმის რეგულირება:") მე არ ვარ დარწმუნებული რა არის ზუსტად PWM სიჩქარე. თუ ვინმემ იცით, მითხარით კომენტარებში. FET– ს შეუძლია გამოიმუშაოს მეტი შუქი ვიდრე 7135, მაგრამ 7135 ინარჩუნებს სინათლის დონეს მეტ -ნაკლებად იგივე ბატარეის მუშაობის განმავლობაში, ხოლო FET ბნელდება ბატარეის ამოწურვისას.

აქ თქვენ შეგიძლიათ შეცვალოთ PWM მნიშვნელობები, რათა შექმნათ რეჟიმი თქვენი შეხედულებისამებრ. თქვენ ასევე შეგიძლიათ შეცვალოთ რეჟიმების რაოდენობაც, მაგრამ მე არ გამომიცდია, როგორც მე მინდოდა ოთხი რეჟიმი, რაც მეორე ჯგუფში არის რიცხვი. მე მინდოდა მთვარის შუქის მუქი რეჟიმი, ამიტომ მე პირველი დავაყენე 0/1 და მიმაჩნია, რომ ტურბო რეჟიმი ცოტა უაზროა, ამიტომ ის შევცვალე 137/255 -ით, ექვსეულის ექვივალენტი შვიდი რეჟიმის ჯგუფში. საჭიროების შემთხვევაში, თქვენ შეგიძლიათ შეცვალოთ დანარჩენი კოდი, მაგრამ მე არ მიცდია.

როდესაც მიიღებთ სასურველ კოდს, თქვენ უნდა შეადგინოთ იგი.ექვსმეტიანი ფაილი. სულ მცირე, გჭირდება gcc-avr და avr-libc. თუ თქვენ გაქვთ პრობლემები, გადახედეთ სხვა დამოკიდებულებებს firmware readme- ში. საცავი მოიცავს ასაშენებელ სკრიპტს, მაგრამ მე ვერ შევძელი მისი მუშაობა. სამაგიეროდ, გადმოვწერე ძველი ვერსია

bzr ფილიალი lp: ფანარი- firmware

და გადაწერა ძველი აღწერის სცენარი (რომ შემეძლოს მუშაობა) ახალზე. შემდეგ გავიქეცი:

../../bin/build.sh 13 blf-a6

blf-a6 საქაღალდეში. (ამის უკეთესი გზა უნდა არსებობდეს)../../bin/build.sh იძახებს სკრიპტს, 13-ში მითითებულია, რომ ის შენდება ATtiny13- ისთვის და blf-a6 მიუთითებს, რომ ის BLF A6- ისთვისაა. (duh) უნდა გითხრათ რა ბრძანებები მუშაობს და მოგცეთ გამომავალი. ჩემი ასე გამოიყურება:

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.cavr -gcc -Wall -g -Os -mmcu = attiny13 -fgnu89 -inline -o blf -a6.elf blf -a6.o avr -objcopy --set -section-flags =.eeprom = გამოყოფა, დატვირთვა-Change-section-lma.eeprom = 0-no-change-გაფრთხილებები -O ihex blf-a6.elf blf-a6.hex პროგრამა: 1022 ბაიტი (99.8% სრული) მონაცემები: 13 ბაიტი (20.3% სავსე)

ბრძანებები უკვე ოპტიმიზირებულია ზომისთვის, ასე რომ, თუ ის ამბობს, რომ ის 100% -ზე მეტია სავსე, სცადეთ კომენტარის გაკეთება

#განსაზღვრეთ FULL_BIKING_STROBE

147 ხაზზე გამოვიყენოთ პატარა მინიმალური ველოსიპედის სტრობი. თუ ის მაინც არ ჯდება, ალბათ სადმე მოგიწევთ მეტი კოდის ამოღება. შედგენის დასრულების შემდეგ, საქაღალდეში უნდა იყოს ფაილი სახელწოდებით blf-a6.hex. ეს არის თქვენი შედგენილი კოდი, მზად არის ციმციმისთვის.

ნაბიჯი 3: დაიშალეთ ფანარი

დაიშალეთ ფანარი
დაიშალეთ ფანარი
დაიშალეთ ფანარი
დაიშალეთ ფანარი
დაიშალეთ ფანარი
დაიშალეთ ფანარი

გახსენით ნათურის ბოლო საათის ისრის საწინააღმდეგოდ. აქ არის ორი ხრახნიანი სახსარი. ის, რაც ფანქრის ნათურასთან უფრო ახლოსაა, ხსნის რეფლექტორს და LED- ს, ხოლო შუაზე უფრო ახლოს ხსნის მძღოლის დაფას. გინდა ის, ვინც უფრო ახლოსაა შუაგულთან.

შიგნით, თქვენ უნდა ნახოთ ბატარეის ზამბარა და საყრდენი რგოლი, რომელშიც ორი ხვრელია. ჩადეთ თქვენი პინცეტი / თხელი პინსი / მაკრატელი ხვრელებში და გადაატრიალეთ საათის ისრის საწინააღმდეგოდ. ის საკმაოდ მკაცრია და ორი ცალკეული ობიექტის გამოყენება ალბათ არ მოგცემთ საკმარის ბერკეტს. მე მაკრატელი გამოვიყენე შვეიცარიის არმიის დანაზე.

მას შემდეგ რაც ბეჭედი ამოიღეთ, გაათავისუფლეთ მძღოლის დაფა. ის ჯერ კიდევ ორი მავთულითაა დამაგრებული, ასე რომ ფრთხილად იყავით. ისინი ერთმანეთთან არის გადაბმული, ასე რომ გადაატრიალეთ დაფა ასე თუ ისე, სანამ მავთულები არ გაიშლება. როდესაც საკმარისი თავისუფლება გაქვთ, გადააბრუნეთ დაფა. თქვენ გინდათ რომ ჩიპი "TINY13A" მასზე უფრო მაღალი და უფრო ხელმისაწვდომი იყოს. თუ ის არასწორ მხარეს არის, გადაატრიალე პირიქით. გაახურეთ გაზაფხული გვერდის ქვეშ. ეს დროებით შეინარჩუნებს თავის ადგილს და გაადვილებს ჩიპთან მისვლას. თუ თქვენ გაწუხებთ ეს, თქვენ ალბათ ამოიღეთ მეორე შეერთება და გააშრეთ ორი მავთული მეორე მხრიდან, ასე რომ თქვენ შეგიძლიათ ამოიღოთ დაფა მთლიანად, მაგრამ მე არ მიცდია.

ნაბიჯი 4: შეაერთეთ მოციმციმე აპარატურა

შეაერთეთ მოციმციმე აპარატურა
შეაერთეთ მოციმციმე აპარატურა
შეაერთეთ მოციმციმე აპარატურა
შეაერთეთ მოციმციმე აპარატურა
შეაერთეთ მოციმციმე აპარატურა
შეაერთეთ მოციმციმე აპარატურა

ახლა თქვენ იყენებთ SOIC8 კლიპს ATtiny13 ჩიპისა და თქვენი პროგრამისტის დასაკავშირებლად. ჩემი SOIC8 კლიპით, თუ წითელი მავთული მაქვს ორივე ბოლოდან მარცხნივ, კლიპის ბოლოში ჩემთან უფრო ახლოს მიმაგრებული ქინძისთავები შეესაბამება კონექტორის ბოლოში ჩემთან უფრო ახლოს ქინძისთავებს, როდესაც კონექტორი ქვემოთაა. (იხილეთ ჩემი სუპერ მხატვრული დიაგრამა) ეს სახელმძღვანელო გირჩევთ გამოიყენოთ USB ASP V2.0 პროგრამისტი. თუ ასეა, დააკავშირეთ იგი ასე:

  • მიამაგრეთ 1 ATtiny13– ზე, დააინსტალირეთ 5 USB ASP– ზე (გადატვირთვა)
  • მიამაგრეთ 4 ATtiny13– ზე USB 10 ASP– ზე (ადგილზე)
  • მიამაგრეთ 5 ATtiny13 –ზე 1 – მდე USB ASP– ზე (MOSI)
  • მიამაგრეთ 6 ATtiny13 –ზე 9 – მდე USB ASP– ზე (MISO)
  • მიამაგრეთ 7 ATtiny13– ზე USB 7 ASP– ზე (SCK)
  • მიამაგრეთ 8 ATtiny13– დან 2 – მდე USB ASP– ზე (VCC)

თუ თქვენ, ისევე როგორც მე, თქვენ იყენებთ არდუინოს, თქვენ უნდა მოამზადოთ ცოტა მეტი. მიჰყევით ამ სახელმძღვანელოს ნულოვან და ორ ნაბიჯებს:

გახსენით Arduino IDE და დარწმუნდით, რომ თქვენი Arduino დაკავშირებულია თქვენს კომპიუტერთან. იპოვეთ ISP ესკიზი ფაილში> მაგალითები> 11. ArduinoISP> ArduinoISP და ატვირთეთ თქვენს Arduino– ში. შემდეგ დაუკავშირეთ ATtiny13 მას ასე:

  • მიამაგრეთ 1 ATtiny13 –ზე 10 – მდე Arduino– ზე (გადატვირთვა)
  • მიამაგრეთ 4 ATtiny13– დან GND– ზე Arduino– ზე (მიწა)
  • მიამაგრეთ 5 ATtiny13 –ზე 11 – მდე Arduino– ზე (MOSI)
  • მიამაგრეთ 6 ATtiny13 –ზე 12 – მდე Arduino– ზე (MISO)
  • მიამაგრეთ მე –7 ATtiny13– ზე და დააფიქსირეთ 13 Arduino– ზე (SCK)
  • პინი 8 ATtiny13– ზე VCC / 5V / 3.3V Arduino– ზე (ნებისმიერი უნდა მუშაობდეს, მაგრამ 5V უფრო საიმედოა) (VCC)

მე დავაყენე აპარატურის პაკეტიც, მაგრამ ალბათ არ იყო საჭირო. თუ ეჭვი გეპარებათ, სცადეთ. ის არანაირ ზიანს არ მიაყენებს. მაგრამ არ დაწვათ ჩამტვირთავი, რადგან ის ალბათ აანთებს თქვენს ფანარს.

ნაბიჯი 5: აანთეთ იგი

იმისათვის, რომ გაუშვათ firmware, თქვენ უნდა დააინსტალიროთ AVRDUDE. ჩემს არდუინოსთან მუშაობის შესამოწმებლად, მე ვაწარმოებ:

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

არსებული firmware- ის სარეზერვო ასლის შესაქმნელად. და ააფეთქე იგი, საქაღალდიდან შეცვლილი 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, როგორც პროგრამისტი, და ის არ მუშაობდა, თუ პორტი და baud მაჩვენებელი არ დამიზუსტებია. თუ თქვენ იყენებთ 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 თქვენი ფაილის სახელით, თუ ის განსხვავებულია.

-ულფუზია: w: 0x75: m და -Uhfuse: w: 0xFF: m არის fuses. თქვენი შეიძლება განსხვავებული იყოს, ასე რომ ორმაგად შეამოწმეთ ღირებულებები ფანარში- firmware/bin/flash-tiny13-fuses.sh.

თუ ის იძლევა დიაპაზონის მიღმა შეცდომას, ეს ნიშნავს რომ სურათი ძალიან დიდია ჩიპზე ჩასასმელად და თქვენ უნდა ამოიღოთ კოდის ნაწილი. თუ ის წარმატებით ციმციმებს, მან უნდა აჩვენოს პროგრესის ზოლები, შემდეგ თქვას "avrdude done. მადლობა."

თუ ნათქვამია "მოწყობილობის არასწორი ხელმოწერა" და თქვენს პროგრამისტზე ჯუმპერი დაყენებულია 3.3 ვ -ზე, სცადეთ დააყენოთ 5 ვ.

მას შემდეგ რაც აანთეთ, შეაერთეთ ფანარი და ნახეთ მუშაობს თუ არა. Mine გააკეთა, მაგრამ დრო off რამდენიმე მიზეზი, ხანგრძლივი presses უნდა იყოს დაახლოებით სამი წამი იმის ნაცვლად, რომ ̶1̶.̶5̶.̶ მე არ ვიცი, თუ ̶i̶t̶'̶s̶ რაღაც უნდა გავაკეთოთ ერთად Arduino ან იმიტომ, რომ ̶I̶'̶v̶e̶ გამოიყენება არასწორი პარამეტრების ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ თუ თქვენ გაქვთ რაიმე იდეა, ̶ მიადევნე თვალი იმ ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

რედაქტირება: მე გავასწორე. (იხ. ნაბიჯი 1)

გირჩევთ: