لم يعجب مؤلف هذه المادة بالوسائل العادية لتشغيل المصباح BLF A6. ثم قرر وميض جزء البرنامج من مصباح يدوي ، وضبط أوضاعه. كما اتضح ، هذا ليس بهذه البساطة ، هناك حد أدنى من المعلومات حول البرامج الثابتة والدبابيس وكان عليه جمعها شيئًا فشيئًا. ولكي لا تضيع ، قرر مساعدة الآخرين وترتيب كل شيء في مقال.
لذلك ، بالنسبة للعمل ، ستحتاج إلى ما يلي:
مصباح يدوي BLF A6 (ربما سيعمل هذا مع مصابيح أخرى تعتمد على ATtiny).
ملاقط / زردية رقيقة / مقص صغير.
جهاز كمبيوتر للبرامج الثابتة ، ويفضل أن يكون مع توزيع Linux.
USB ASP / مبرمج اردوينو / شيء يمكن لبرمجة AVR القيام به (من الواضح أن مبرمج USB ASP أفضل ، لكن المعالج استخدم Arduino).
مضخم صوت عالي السرعة من سكة إلى سكة [SOIC-8] (يمكنك الاستغناء عنه ، ولكنه غير مريح للغاية).
لوحة تطوير وأسلاك التوصيل للتوصيل.
البرامج الثابتة.
يتوفر برنامج ثابت لـ BLF A6 (والعديد من الكشافات الأخرى) هنا. منتدى المناقشة متاح في هذا الشأن الرابط.
يمكنك تنزيل البرنامج الثابت عن طريق تشغيل البحث "bzr branch lp: flashlight-firmware". تحتاج مجلد مصباح يدوي / برنامج ToyKeeper / blf-a6. يحتوي على ملف مترجم. سداسيًا ، وجاهزًا للبرامج الثابتة (blf-a6.hex) ، ورمز C ، والذي يمكن تغييره أيضًا (blf-a6.c). إذا كنت تريد تحديث البرامج الثابتة الخاصة بالمخزون ، فيمكنك تخطي الخطوة التالية واستخدام blf-a6.hex فقط. من المحتمل أن تعمل بعض البرامج الثابتة الأخرى في هذا المستودع أيضًا.
تغيير البرامج الثابتة.
تحذير الرموز ، حتى لا تشوه المعنى ، تعطى بدون ترجمة.
افتح blf-a6.c في محرر النصوص المفضل لديك أو IDE. الخطوط الأكثر إثارة للاهتمام هي مجموعات الوضع بين السطور 94 و 109. تبدو كما يلي:
// مجموعة الوضع 1
# تحديد NUM_MODES1 7
// مستويات PWM للدائرة الكبيرة (FET أو Nx7135)
# تعريف الأوضاع Nx1 0،0،0،7،56،137،255
// مستويات PWM للدائرة الصغيرة (1x7135)
# تعريف الأوضاع 1x1 3،20،110،255،255،255،0
// العينة: 6 = 0..6، 7 = 2..11، 8 = 8..21 (15..32)
// Krono sample: 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
# تحديد NUM_MODES2 4
# تعريف MODESNx2 0،0،90،255
# تعريف الأوضاع 1x2 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. كما يعتبر وضع Turbo عديم الجدوى ، لذلك استبدله بـ 137/255 ، وهو ما يعادل الوضع السادس في مجموعة من سبعة أوضاع.
عندما يكون لديك الرمز الذي تحتاجه ، يجب عليك تجميعه في ملف .xx. على الأقل أنت بحاجة إلى gcc-avr و avr-libc. إذا كانت لديك مشاكل ، فراجع التبعيات الأخرى في الملف التمهيدي. يشتمل المستودع على نص برمجي للبناء ، لذلك يتم تشغيل كل ما عليك فعله:
../../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 -الأرقام -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 = تخصيص ، تحميل --change-section-lma .eeprom = 0 - no-change-warnings -O ihex blf-a6.elf blf-a6.hex
البرنامج: 1022 بايت (99.8٪ ممتلئة)
البيانات: 13 بايت (20.3٪ ممتلئة)
تم تحسين حجم الفرق بالفعل ، لذا إذا تم كتابة أنها مليئة بأكثر من 100٪ ، فحاول حذفها
#define FULL_BIKING_STROBE
خط 125 نوبات صغيرة دراجة هوائية ضوء ستروب. إذا لم يكن هذا كافيًا ، فيجب قطع شيء آخر.
عند اكتمال الترجمة ، يجب أن يحتوي المجلد على ملف يسمى blf-a6.hex. هذا كود مترجم ، جاهز للبرامج الثابتة.
تفكيك مصباح يدوي.
قم بفك المصباح الأمامي للمصباح. هناك نوعان من وصلات المسمار. يقوم الشخص الأقرب إلى جسم المصباح بإصلاح العاكس و LED ، والأقرب إلى الوسط يثبت اللوحة. نحن بحاجة إلى متوسط.
في الداخل سترى حلقة المفاجئة مع الربيع وثقبين على طول الحواف. أدخل ملاقط / كماشة رقيقة / مقص في الفتحات وقم بتدويرها عكس اتجاه عقارب الساعة.
بمجرد إزالة الحلقة ، ستتمكن من الوصول إلى اللوحة. لا يزال متصلًا بسلكين ، لذا كن حذرًا. يتم لفها معًا ، لذا قم بتدوير اللوحة حتى تصبح الأسلاك مفكوكة. ثم اقلب اللوحة. من الضروري أن تكون الشريحة التي تحمل نقش "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)
Pin 8 على ATtiny13 - Pin 2 على USB ASP (VCC)
إذا كنت تستخدم Arduino ، مثل المعالج ، فاتبع الخطوات التالية:
افتح Arduino IDE وتأكد من توصيل Arduino بالكمبيوتر. ابحث عن رسم ISP في ملف> أمثلة> 11.ArduinoISP> ArduinoISP وقم بتحميله إلى Arduino. ثم قم بتوصيل ATtiny13 به على النحو التالي:
دبوس 1 على ATtiny13 - دبوس 10 على اردوينو (إعادة تعيين)
دبوس 4 على ATtiny13 - GND على اردوينو (أرضي)
Pin 5 على ATtiny13 - Pin 11 على Arduino (MOSI)
دبوس 6 على ATtiny13 - دبوس 12 على اردوينو (MISO)
دبوس 7 على ATtiny13 - دبوس 13 على اردوينو (SCK)
دبوس 8 على 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: 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
وميض:
- فلاش: w: blf-a6.hex. استبدل blf-a6.hex باسم ملفك إذا كان مختلفًا.
-Ulfuse: w: 0x75: m و -Uhfuse: w: 0xFF: m
إذا حدث خطأ ، فهذا يعني أن ملف الصورة كبير جدًا بحيث لا يتناسب مع الشريحة ، وسيتعين عليك حذف جزء من الرمز. إذا كان كل شيء طبيعيًا ، فيجب عرض بعض مؤشرات التقدم ، ثم الكلمات "avrdude القيام به. شكرا لك."
بعد أن تومض الشريحة ، قم بتجميع مصباح يدوي ومعرفة ما إذا كان يعمل.