لدينا قسم مناقشات جيثب الآن. عندما تكون المشكلة بالتأكيد عيبًا في جوهرها، فسوف تقلل من الوقت المستغرق لإصلاحها إذا قمت بإنشاء مشكلة، لأنني أعطي الأولوية للمشكلات على اللحاق بالمناقشات.
يؤدي هذا إلى تصحيح العديد من الأخطاء الموجودة في الإصدار 2.6.x
يقدم الإصدار 2.6.x بصمة فلاش محسنة للمسلسل بشكل كبير مع إضافة ميزات، ويمكن للسلك إيقاظ الرقيق من وضع السكون دون إتلاف البيانات، وأكثر من ذلك بكثير، راجع سجل التغيير.
يجب استخدام إصدارات Arduino IDE التي تم تنزيلها من arduino.cc فقط، وليس من مدير حزم Linux مطلقًا. غالبًا ما يكون لدى مديري الحزم Arduino IDE، لكنهم قاموا بتعديله . هذا على الرغم من أنهم لا يعرفون شيئًا عن Arduino أو التطوير المضمن بشكل عام، ناهيك عن ما يحتاجون إلى معرفته لتعديله بنجاح. تشتهر هذه الإصدارات بمشاكل خفية ولكنها خطيرة ناجمة عن هذه التعديلات غير الحكيمة. لا ينبغي أن يتوقع أن يعمل هذا النواة على مثل هذه الإصدارات، ولن يتم إجراء أي تعديلات من أجل إصلاح إصدارات IDE التي تأتي من مديري الحزم لهذا السبب.
هذا خطأ في عميل Arduino.
طورت إصدارات IDE بين 1.8.13 و2.x عيوبًا جديدة كبيرة. ومع ذلك، تحتوي إصدارات IDE 1.8.2 والإصدارات السابقة على عيوب معوقة لم يتم إصلاحها. أعتقد أن لديهم أخيرًا نسخة صالحة للعمل من IDE، وأعتقد أن الإصدار الأحدث قادر على تثبيت النواة بشكل صحيح.
قبل MegaTinyCore 2.6.0، كان التثبيت اليدوي لـ megaTinyCore قد يتسبب في تعطل الإصدار 1.8.14 من IDE بسبب هذا الخطأ عند تثبيت النواة يدويًا في مجلد arduino الخاص بك. يجب على مستخدمي الإصدار 1.8.14 والإصدارات الأحدث استخدام الإصدار 2.6.0 من megaTinyCore.
أشتري الكثير من الأشياء الإلكترونية على AliExpress. إنه سوق رائع للأشياء التي تصنعها الشركات الصينية وهي في الغالب عامة، بما في ذلك الكثير من المكونات غير المتاحة للأفراد في الغرب العالمي بأي طريقة أخرى (على سبيل المثال، الحد الأدنى للطلب هو بكرة أو شيء من هذا القبيل - إذا كان بإمكانك حتى العثور على بائع المكونات الذي يعمل مع صانع الرقائق الصيني الذي لا يحمل اسمًا). إنه ليس مكانًا رائعًا لأحدث خطوط إنتاج أشباه الموصلات من كبرى الشركات المصنعة الغربية، خاصة في ظل النقص التاريخي في الرقائق المذكورة. أجهزة AVR الحديثة، عندما تكون متاحة من خلال تلك القنوات على الإطلاق، يتم الإبلاغ عنها بشكل متكرر على أنها مزيفة أو معيبة (مثل ATtiny412s التي تعتقد أنها 416 وقد لا تنفذ الطاقة بشكل صحيح عند إعادة التعيين). في هذا الصدد، ربما لا ترغب في شراء أي وحدات تحكم دقيقة AVR على AliExpress ... تعمل اللوحات المجمعة، مثل نسخ Arduino Nano، بشكل عام إذا تجنبت اللوحات التي تحتوي على شرائح LGT8 التابعة لجهة خارجية واحترس من اللوحات التي تحتوي على ATmega168p بدلاً من '328p - ولكن هناك الكثير من التقارير عن وحدات التحكم الدقيقة الزائفة عندما يتم بيعها كشرائح مجردة (لقد سمعت عن وحدات ATtiny85 المزيفة التي كانت في الواقع لاحظ ATtiny13s أن أجهزة AVR الحديثة ليست فقط هي التي يتم تزويرها). هناك الكثير من النظريات المثيرة للاهتمام حول مصدر تلك الرقائق المزيفة، وقد ظلت شركة Microchip صامتة تمامًا بشأن هذه القضية.
من الأفضل عرض هذا المستند عبر الإنترنت (بدلاً من فتح ملف تخفيض السعر في محرر النصوص المفضل لديك)، بحيث تكون الروابط قابلة للنقر وتظهر الصور المضمنة، وربما الأهم من ذلك، عرض الجداول بشكل صحيح في بعض الأحيان. مرة أخرى، هذا [المستند يمكن العثور عليه على جيثب](https://github.com/SpenceKonde/megaTinyCore](https://github.com/SpenceKonde/megaTinyCore)
الإصدارات الأقدم لا تتعامل بشكل صحيح مع المبرمجين في قائمة الأدوات -> المبرمجين، مما يؤدي إلى تدهور تجربة المستخدم بسرعة مع زيادة عدد النوى المثبتة. أنها ليست مناسبة. قد تؤدي الإصدارات الأحدث التي تبدأ بـ 1.8.14 (بما في ذلك 1.8.17 و1.8.18 و1.8.19) إلى إنشاء خطأ "ذعر: لم يتم العثور على إصدار رئيسي" لأنها فشلت في تحليل ملف Platform.txt بشكل صحيح. منذ الإصدار 2.6.0، قمنا بتعديل ملف Platform.txt يدويًا مباشرةً قبل الإصدار، لذا فهذه مشكلة أقل
عندما يتم تثبيت MegaTinyCore من خلال مدير اللوحة، يتم تثبيت الإصدار المطلوب من سلسلة الأدوات تلقائيًا. يتم دعم جميع أجزاء سلسلة 0/1/2 بدون خطوات إضافية. حتى الإصدار 2.2.7، استخدمنا إصدار Arduino7 من avr-gcc (gcc 7.3.0 وavrlibc 3.6.1) مع أحدث ATpacks اعتبارًا من يونيو 2020. وبدءًا من 2.2.7، بدأنا في استخدام إصدار Azduino الخاص بي من سلسلة الأدوات، والذي قام بتحديث ATpacks لجميع الأجزاء المدعومة حديثًا. 2.2.7 استخدمنا Azduino3، 2.3.0+ استخدمنا Azduino4، وبدءًا من 2.6.0، نستخدم Azduino5 (على الرغم من أنه لا يقدم أي فائدة لنا، بخلاف توفير ربع جيجابايت من مساحة محرك الأقراص الثابتة و40 ميجابايت من النطاق الترددي للتنزيل إذا قمت بتثبيت كليهما MegaTinyCore وDxCore من خلال مدير مجلس الإدارة.
يعد التثبيت اليدوي أكثر تعقيدًا - خاصة إذا كنت تريد دعمًا للسلسلة 2؛ راجع دليل التثبيت لمزيد من المعلومات.
نواة Arduino لسلسلة AVR 0 الصغيرة وسلسلة 1 والآن السلسلة 2. تتمتع هذه الأجزاء ببنية محسنة مقارنة بأجزاء tinyAVR "الكلاسيكية" (التي يدعمها ATTinyCore)، مع أجهزة طرفية محسنة ووقت تنفيذ محسّن لتعليمات معينة (وهي متشابهة في كليهما فيما يتعلق بسلسلة AVR Dx المتقدمة، بالإضافة إلى شرائح MegaAVR 0-Series مثل ATmega4809 كما هو مستخدم في Nano Every وUno Wifi Rev. 2 الرسمي - على الرغم من أن فريق Arduino بذل قصارى جهده لإيقافها) في الطرود الصغيرة منخفضة التكلفة النموذجية لخط ATtiny. تتميز كل هذه الأجزاء بجهاز UART واحد على الأقل، وواجهة SPI وTWI (لا يوجد أي من بيانات USI المهملة مثل، على سبيل المثال، ATtiny85)، ونظام أحداث قوي، ومنطق مخصص قابل للتكوين، ومقارنة تناظرية واحدة على الأقل على الشريحة ، مذبذب داخلي دقيق بشكل مدهش، وفي حالة السلسلة 1، قناة إخراج DAC فعلية، وفي حالة السلسلة 2، ADC تفاضلي فاخر.
علاوة على ذلك، فإن أجزاء سلسلة tinyAVR 0/1/2 رخيصة الثمن - الأجزاء الأعلى جودة، 3226 و3227، مع 32 كيلو فلاش و3 كيلو بايت من ذاكرة SRAM (مقابل 2 كيلو SRAM مثل ATmega328p المستخدم في Uno/Nano/ProMini). ما يزيد قليلاً عن دولار أمريكي واحد من حيث الكمية - أقل من العديد من أجزاء AVR ATtiny الكلاسيكية بدقة 8k ("مجموعة تعليمات AVR، في PIC سعر"). تم تصنيف جميع هذه الأجزاء للعمل على تردد 16 ميجا هرتز أو 20 ميجا هرتز (عند 4.5-5.5 فولت) بدون بلورة خارجية، كما أن المذبذب الداخلي دقيق بما يكفي للاتصال بـ UART.
تستخدم هذه البرامج برمجة UPDI، وليس مزود خدمة الإنترنت التقليدي كما فعلت أجزاء ATtiny الكلاسيكية. انظر أدناه لمزيد من المعلومات. يعد الحصول على مبرمج UPDI أمرًا بسيطًا - يمكنك استخدام Arduino الكلاسيكي القائم على 328p كمبرمج باستخدام jtag2updi - أو للحصول على نتائج أفضل مع أجهزة أرخص، يمكنك استخدام أي محول USB تسلسلي ومقاوم (ويفضل الصمام الثنائي) باستخدام SerialUPDI المضمن أداة، أو يمكنك استخدام AVRdude مع أحد مبرمجي Microchip (المبرمجين المعتمدين على mEDBG/nEDBG/EDBG في لوحة التطوير الخاصة بهم، Atmel-ICE أو SNAP) أو أي أداة برمجة UPDI تحاكي واحدة من تلك الأدوات (والتي، على حد علمي، جميعها تفعل ذلك - إذا كان هناك أداة يدعمها avrdude ولا يدعمها النواة الخاصة بي، فيرجى فتح مشكلة للسماح لي يعرف!).
يتم دعم أداة تحميل التشغيل التسلسلية، Optiboot_x (استنادًا إلى نفس قاعدة التعليمات البرمجية مثل أداة تحميل التشغيل الكلاسيكية Arduino Uno، على الرغم من تعديلها بشكل كبير) على هذه الأجزاء (دعم 0/1-Series موجود حاليًا، ومن المتوقع أن تكون السلسلة 2 بحلول الأسبوع الأول من شهر مايو تعد التعديلات على الأجزاء الجديدة تافهة)، مما يسمح ببرمجتها عبر منفذ تسلسلي تقليدي. راجع قسم Optiboot أدناه للحصول على مزيد من المعلومات حول هذا الأمر والخيارات ذات الصلة. يتطلب تثبيت أداة تحميل التشغيل مبرمج UPDI. تتوفر اللوحات الجانبية المجمعة التي أبيعها على Tindie محملة مسبقًا (يتم تحميلها عند الطلب). ومع ذلك، فإن تجربة المستخدم مع Optiboot مخيبة للآمال بعض الشيء فيما يتعلق بأجزاء السلسلة 0/1 بالإضافة إلى الأجزاء ذات 14 سنًا من السلسلة الثانية، نظرًا لافتقارها إلى دبوس إعادة ضبط الأجهزة الذي يمكن استخدامه مع دائرة إعادة الضبط التلقائي المعتادة لإعادة التعيين تلقائيًا إلى أداة تحميل التشغيل عند فتح المنفذ التسلسلي. تحتاج إما إلى تعطيل برمجة UPDI بالكامل (يتطلب مبرمج HV إذا كانت إعدادات المصهر أو أداة تحميل التشغيل بحاجة إلى التغيير بعد التحميل الأولي) أو ترك UPDI ممكّنًا، ولكن ابدأ أي تحميل خلال 8 ثوانٍ من استخدام الطاقة. تدعم الأجزاء المكونة من 20 سنًا و24 سنًا من السلسلة الثانية "دبوس إعادة تعيين بديل" مما يسمح لها بالعمل مثل Arduino التقليدي.
واجهة برمجة UPDI هي واجهة ذات سلك واحد للبرمجة (وتصحيح الأخطاء - برمجة U العالمية وتصحيح الأخطاء D I nterface)، والتي يتم استخدامها في سلسلة tinyAVR 0/1/2، بالإضافة إلى جميع وحدات التحكم الدقيقة AVR الحديثة الأخرى . بينما يمكن للمرء دائمًا شراء مبرمج UPDI مخصص لهذا الغرض من Microchip، إلا أنه لا يوصى بهذا عندما تستخدم Arduino IDE بدلاً من IDE الخاص بـ Microchip (المعقد للغاية). هناك تقارير واسعة النطاق عن مشاكل في Linux لمبرمجي Microchip الرسميين. هناك طريقتان بديلتان منخفضتا التكلفة جدًا لإنشاء مبرمج UPDI، وكلاهما يتمتع مجتمع Arduino بخبرة أكبر فيهما من هؤلاء المبرمجين الرسميين.
قبل وجود MegaTinyCore، كانت هناك أداة تسمى pyupdi - وهو برنامج Python بسيط للتحميل إلى وحدات التحكم الدقيقة المجهزة بـ UPDI باستخدام محول تسلسلي تم تعديله عن طريق إضافة مقاوم واحد. لكن pyupdi لم يكن قابلاً للاستخدام بسهولة من Arduino IDE، وبالتالي لم يكن هذا خيارًا. اعتبارًا من الإصدار 2.2.0، توفر MegaTinyCore تطبيق Python المحمول، والذي يفتح عددًا كبيرًا من الأبواب؛ في الأصل كنا نخطط لتكييف pyupdi، ولكن بناءً على إلحاح من مؤلفه والعديد من موظفي Microchip، قمنا بدلاً من ذلك ببناء هذه الوظيفة على pymcuprog، وهي أداة "أكثر قوة" تم تطويرها و"تحتفظ بها Microchip" والتي تتضمن نفس تحميل المنفذ التسلسلي الميزة، فقط بدون تحسينات الأداء. إذا قمت بالتثبيت يدويًا، فيجب عليك إضافة حزمة Python المناسبة لنظام التشغيل الخاص بك حتى تتمكن من استخدام طريقة التحميل هذه (تثبيت Python للنظام ليس كافيًا، كما أنه ليس ضروريًا).
اقرأ وثائق SerialUPDI للحصول على معلومات حول الأسلاك.
اعتبارًا من 2.3.2، مع التحسينات الهائلة في الأداء، والموثوقية المؤكدة لنظام الأسلاك باستخدام الصمام الثنائي بدلاً من المقاوم، وفي ضوء هشاشة البرامج الثابتة jtag2updi، أصبحت هذه الآن طريقة البرمجة الموصى بها. اعتبارًا من هذا الإصدار، تمت زيادة سرعة البرمجة بما يصل إلى عامل 20، وهي الآن تتجاوز بكثير ما كان ممكنًا مع jtag2updi (البرمجة عبر jtag2updi قابلة للمقارنة تقريبًا في السرعة مع البرمجة عبر SerialUPDI على خيار السرعة "SLOW"، 57600 برامج إصدار الباود العادي 230400 أسرع بثلاث مرات تقريبًا من الإصدار البطيء أو jtag2updi، بينما يعمل خيار "TURBO" عند 460800 باود ويزيد من سرعة التحميل بنسبة 50% تقريبًا عن السرعة العادية. يجب استخدام إصدار سرعة TURBO فقط مع الأجهزة التي تعمل بسرعة 4.5 فولت أو أكثر، حيث يتعين علينا تشغيل ساعة UPDI بشكل أسرع لمواكبة ذلك (وهو أيضًا ليس كذلك). من المتوقع أن يكون متوافقًا مع جميع المحولات التسلسلية - وهذه مقايضة متعمدة لتحسين الأداء)، ولكنه يسمح بالتحميل والتحقق من رسم تخطيطي بحجم 32 كيلو بايت في 4 ثوانٍ.
يتم تكرار ثلاثة تصميمات: محول تسلسلي مزدوج المنفذ حيث يكون كلاهما منافذ تسلسلية، ومحول تسلسلي مزدوج المنفذ حيث يكون منفذ واحد دائمًا UPDI، ومنفذ واحد يستخدم مفتاحًا لتحديد الوضع، ولوحة إضافية اختيارية لإعطاء مؤشرات ضوئية تشير إلى حالة خطوط التحكم بالمودم.
سيسمح ذلك باستخدام موصل SMT JST-XH أو موصل dupont - في كلتا الحالتين مع 6 دبابيس للمسلسل (دبابيس FTDI كما هو محدد) و3 دبابيس (لـ UPDI).
سيكون كل هؤلاء الثلاثة قادرين على توفير 3.3 أو Vusb (اسمه 5V)، أو فصل كل من Vusb و3V3 من الطاقة، ويتوقعون أن الجهاز المستهدف يعمل بـ 5.5V > Vdd > 1.8V. ستكون المستويات المنطقية المستخدمة في هذه الحالة هي جهد كل ما يتم تطبيقه. كن حذرًا من أنه على الأجهزة التسلسلية المزدوجة، تتم مشاركة سكة الطاقة VccIO! يجب أن يعمل كلاهما بنفس الجهد، أو أن يكونا نفس الجهاز، أو يجب ضبط المحول لتزويدهما وفصل الطاقة عنهما.
اعتمادًا على طراز المحول ونظام التشغيل، فقد وجد أن إعدادات التوقيت المختلفة مطلوبة؛ ومع ذلك، فإن الإعدادات اللازمة لمنع حتى 230400 باود من الفشل على Linux/Mac مع معظم المحولات تفرض عقوبة زمنية أكبر بكثير على Windows، حيث تكون المعالجة التسلسلية لنظام التشغيل بطيئة بما يكفي بحيث لا يحتاج أي شيء إلى هذا التأخير...
"تأخير الكتابة" المذكور هنا هو السماح لأمر محو الكتابة للصفحة بالانتهاء من التنفيذ؛ وهذا يستغرق وقتًا غير الصفر. اعتمادًا على المحول، قد يكون زمن استجابة USB والمخزن المؤقت الضمني 2 أو 3 بايت (يشبه USART، وربما يتم تنفيذه كواحد داخليًا. والبايت الثالث الذي يصل ليس له مكان يذهب إليه، لأن المخزن المؤقت للأجهزة يبلغ عمقه 2 بايت فقط) يكفي للسماح لها بالعمل دون تأخير واضح. أو قد يفشل جزئيًا ويبلغ عن "خطأ في st". كلما كانت مهلة زمن الوصول للمحول أسرع، وكانت المعالجة التسلسلية لنظام التشغيل أسرع، زادت فرصة حدوث مشكلة. يتم التحكم في ذلك بواسطة معلمة سطر الأوامر -wd
في حالة تنفيذ prog.py يدويًا. اعتبارًا من 2.5.6، أصبح تأخير الكتابة هذا أقرب إلى الوقت الفعلي المطلوب (بالمللي ثانية)، وكان في السابق تفصيلًا يبلغ عدة مللي ثانية، عندما يكون 1 هو كل ما تحتاجه، ونتيجة لذلك، كانت العقوبة المفروضة وحشية ، خاصة على ويندوز.
دليل الاختيار:
يتطلب 460800+ باود أن يعمل الهدف عند 4.5V+ ليظل في المواصفات (في الممارسة العملية، ربما لا يلزم أن يكون مرتفعًا إلى هذا الحد - ولكن يجب أن يكون جهدًا عاليًا بما يكفي ليكون مستقرًا عند 16 ميجا هرتز. قمنا بتعيين ساعة الواجهة إلى الحد الأقصى لجميع السرعات التي تزيد عن 230400 باود - بينما تعمل بعض المحولات أحيانًا عند 460800 بدون هذه الخطوة (وهو أمر غريب في حد ذاته - 460800 باود هو 460800 باود، أليس كذلك؟)، معظمها لا تفعل ذلك، وليس لدى SerialUPDI طريقة لتحديد ماهية المحول.
تتمتع المحولات المستندة إلى CH340 بزمن انتقال كافٍ في معظم الأنظمة الأساسية، وتعمل دائمًا تقريبًا بأي سرعة دون اللجوء إلى تأخير الكتابة. تعمل كافة الخيارات دون استخدام تأخير الكتابة.
تعمل جميع المحولات تقريبًا على نظام التشغيل Windows بسرعة 230.4 كيلو بايت دون استخدام تأخير الكتابة. هناك عدد قليل نادر لا يفعل ذلك، بما في ذلك بعض وحدات التحكم الدقيقة USB الأصلية المبرمجة للعمل كمحولات تسلسلية (على سبيل المثال: SAMD11C).
لا شيء تقريبًا باستثناء المحولات المستندة إلى CH340 ستعمل بسرعة 460.8 كيلو بايت أو أكثر دون تأخير الكتابة، بغض النظر عن النظام الأساسي.
في نظام التشغيل Windows، لن تنجح العديد من المحولات (حتى تلك التي يجب أن تدعمها بالفعل) في التبديل إلى البث بالباود 921600. لا أعرف لماذا. العَرَض هو توقف مؤقت في بداية بضع ثوانٍ أثناء محاولته، متبوعًا بالتحميل عند 115200 باود. الطراز الوحيد الذي حققت نجاحًا معه حتى الآن هو CH340، وهو أمر غريب بما فيه الكفاية.
غالبًا ما يكون 460800 باود على نظام التشغيل Windows مع تأخير الكتابة أبطأ من 230400 باود بدونه. لا ينطبق الأمر نفسه على Linux/Mac، فكلما كان حجم الصفحة أصغر، زاد الأداء الناتج عن تأخير الكتابة.
يجب استخدام 57600 باود إذا كانت الخيارات الأخرى لا تعمل، أو عند البرمجة عند Vcc = < 2.7V.
يعمل 460800 باود بدون تأخير الكتابة على بعض المحولات ذات مقاومة 10 كيلو موضوعة عبر صمام ثنائي شوتكي بين TX و RX، عندما لا يعمل بدون ذلك إلا إذا تم تمكين تأخير الكتابة. لا، أنا لا أفهم كيف يمكن أن يكون هذا أيضا!
وكما ترون مما سبق، فإن هذه المعلومات تجريبية إلى حد كبير؛ ولم يُعرف بعد كيفية التنبؤ بالسلوك.
محولات FTDI (FT232، FT2232، وFT4232 وما إلى ذلك)، بما في ذلك المحولات المزيفة المتوفرة على eBay/AliExpress مقابل حوالي 2 دولار، على نظام التشغيل Windows الافتراضي هي فترة استجابة طويلة للغاية تبلغ 16 مللي ثانية. حتى مع الأطوال التي نذهب إليها من أجل الحد من عدد فترات تأخير الكمون التي يجب أن ننتظرها، سيؤدي هذا إلى إطالة فترة التحميل من 2.2 ثانية إلى أكثر من 15 ثانية. يجب عليك تغيير هذا للحصول على سرعات تحميل مقبولة:
افتح لوحة التحكم، مدير الجهاز.
توسيع المنافذ (COM وLPT)
انقر بزر الماوس الأيمن فوق المنفذ واختر الخصائص
انقر فوق علامة التبويب إعدادات المنفذ
انقر فوق "خيارات متقدمة..." لفتح نافذة الإعدادات المتقدمة.
ضمن قسم "خيارات BM"، ابحث عن قائمة "مؤقت زمن الوصول"، والتي من المحتمل أن يتم ضبطها على 16. قم بتغيير هذا إلى 1.
انقر فوق موافق للخروج من نافذة الخيارات المتقدمة، ثم انقر مرة أخرى للخروج من الخصائص. سترى مدير الجهاز يقوم بتحديث قائمة الأجهزة.
يجب أن تكون عمليات التحميل أسرع بكثير الآن.
يمكن صنع واحدة من AVR Uno/Nano/Pro Mini الكلاسيكي؛ تعتبر مستنسخات النانو غير المكلفة هي الخيار المعتاد، فهي رخيصة بما يكفي بحيث يمكن توصيلها بالأسلاك ثم تركها على هذا النحو. لم نعد نقدم وثائق مفصلة لهذه العمليات؛ تم إهمال jtag2updi. إذا كنت لا تزال تستخدمه، فيجب عليك تحديد jtag2updi من قائمة الأدوات->المبرمج. كان هذا في السابق خيارنا الموصى به. نظرًا لأخطاء jtag2updi المستمرة، واعتمادها على أداة "avrdude" التي لا تتم صيانتها إلى حد كبير (والتي من بين أشياء أخرى تُدرج رسالة خطأ زائفة في جميع تحميلات UPDI التي تم إجراؤها باستخدامها)، لم يعد هذا موصى به.
من الواضح أن Arduino لا يقوم بتغليف إصدارات 32 بت من أحدث إصدار من avrdude. لقد حددت تعريفًا جديدًا للأداة وهو نسخة من arduino18 (الأحدث) باستثناء أنه يسحب الإصدار 17 بدلاً من ذلك على Linux 32 بت، نظرًا لأن هذا هو أفضل ما هو متاح لهذا النظام الأساسي. إصدار arduino17 لا يدعم التحميل بشكل صحيح مع بعض أدوات برمجة Microchip.
يُستخدم هذا حاليًا فقط في الإصدارات القليلة الأخيرة، ويجب إصلاح خطأ avrdude غير متاح لهذا النظام الأساسي.
tinyAVR 2-Series
أتيني3227,1627,827,427
أتيني3226,1626,826,426
أتيني3224,1624,824,424
tinyAVR 1-سلسلة
أتيني3217,1617,817,417
أتيني3216,1616,816,416
أتيني1614,814,414,214
أتيني412,212
tinyAVR 0-سلسلة
أتيني1607,807
أتيني1606,806,406
أتيني1604,804,404,204
أتيني402,202
أي شيء يُسمى مثل "AVR##XX##" حيث X عبارة عن حرف و# رقم - فأنت تريد DxCore الخاص بي لهؤلاء
جميع أجزاء tinyAVR الكلاسيكية (ما قبل 2016) - جميعها تقريبًا مدعومة من أحد النوى الأخرى الخاصة بي ATTinyCore
أتيني 25/45/85، 24/44/84، 261/461/861، 48/88 الصغيرين والآحاد (الغريب 43 و4313/2313)، وفي 2.0.0، الـ 26 وكذلك النهائي -أربعة (والتي تظهر تلميحات للتجربة في اتجاه AVRs الحديثة)، وATtiny 441/841، 1634، 828 بالإضافة إلى الغريب 26.
أي شيء آخر ، راجع هذا المستند للحصول على قائمة بعائلات أجزاء AVR وما هي نوى Arduino التي تعمل بها - كل شيء تقريبًا لديه نواة تقدم الدعم، عادةً بواسطتي أو بواسطة MCUdude.
انظر هذه الوثيقة التي تغطي جميع أجهزة AVR الحديثة
ميزة | 0-سلسلة | 1-سلسلة | 1+سلسلة | 2-سلسلة |
---|---|---|---|---|
فلاش | 2 ك - 16 ك | 2 كيلو - 8 كيلو | 16 ك/32 ك | 4K-32K |
Pincount | 8-24 | 8-24 | 14-24 | 14-24 |
سرام | 128ب-1ك | 128ب-512ب | 2 كيلو | 512ب-3ك |
تسد | لا | نعم | نعم | لا |
التعاون الفني | 1 | 1 | 2 | 2 |
أدك | 1x10bit | 1x10 بت | 2x10 بت | 1x12 بت ث/PGA |
دبوس VREF | لا | لا | نعم | نعم |
تكييف | 1 | 1 | 3 | 1 |
حدث * | 3 تشان | 6 تشان | 6 تشان | 6 تشان |
سي سي إل ** | 2 طرفية | 2 طرفية | 2 طرفية | 4 طرفية المستعملين المحليين |
*
تنقسم قنوات الأحداث، باستثناء أجهزة AVR الصغيرة المكونة من سلسلتين (وجميع AVRs الحديثة غير الصغيرة) إلى نوعين - متزامنة (مع ساعة النظام) وغير متزامنة. لا يمكن استخدام جميع المولدات مع قناة متزامنة، ويمكن لبعض مستخدمي الأحداث استخدام القنوات المتزامنة فقط، وتكون قوائم القنوات أقل اتساقًا وأكثر. تم التخلي عن هذا الجنون في أول فرصة - حتى أن العمالقة تخلصوا من هذا التمييز.
**
فقط الأجزاء المكونة من سلسلتين وغير الصغيرة يمكنها إطلاق المقاطعة بناءً على حالة CCL.
تحتوي جميع الأجزاء على مدخل تناظري متاح في معظم المنافذ (جميع المنافذ الموجودة على PORTA وPORTB 0-1 و4-5). يمكن لـ ADC الثاني في السلسلة 1+ استخدام الأطراف الموجودة على PORTC كمدخلات أيضًا (راجع المرجع التناظري للحصول على معلومات حول استخدام هذه).
هذه هي خيارات الميزانية. على الرغم من أنها مدعومة، إلا أنه لا يوصى بها. هذه لا تحصل أبدًا على "التعزيز" الذي تحصل عليه سلسلة tinyAVR 1 عند 16 كيلو بايت، ولا تحتوي على TCB ثاني في أي تكوين، ولا TCD، و3 قنوات أحداث فقط، لا يمكن لأي منها حمل مخرجات حدث RTC. تحتوي هذه الأجزاء على 2 CCL LUTs مثل السلسلة 1، وتتوفر مع ما يصل إلى 16 كيلو فلاش في تكوينات 14 و20 و24 سنًا (4k فقط للأجزاء ذات 8 سنون)، وما يصل إلى 1 كيلو SRAM.
تحتوي هذه الأجهزة على فلاش 2k أو 4k أو 8k وذاكرة وصول عشوائي 128 أو 256 أو 512b، تمامًا مثل السلسلة 0. ليس لديهم ADC الثاني، أو تكوين التيار المتردد الثلاثي أو TCB الثاني، على الرغم من أن لديهم TCD.
فجأة، عند 16 كيلو، تصبح أجزاء السلسلة 1 أكثر إثارة للاهتمام. يرافق الفلاش الأكبر ترسانة من الأجهزة الطرفية التي تبدو مناسبة لشريحة أكبر بكثير، وسواء كانت 16 كيلو بايت أو 32 كيلو بايت، فإنها تحصل جميعها على 2 كيلو بايت من ذاكرة الوصول العشوائي (SRAM). يعد ADC الثاني فريدًا من نوعه بين أجهزة AVR. يبدو أنه كان بمثابة أرض اختبار للعديد من الميزات التي ظهرت في شكل مصقول على سلسلة AVR Dx. لا يبدو أن السعر يأخذ في الاعتبار الأجهزة الطرفية المتفوقة إلى حد كبير في سلسلة 16k 1،
كما ترون من الجدول أعلاه، فإن السلسلة 2 هي تقريبًا عبارة عن فئة جانبية أكثر من كونها ترقية. لديهم ADC أفضل بكثير، ونظام الأحداث وCCLs "طبيعيون"، ولديهم المزيد من ذاكرة الوصول العشوائي، والجزء ذو 14 سنًا متاح مع 32 كيلو فلاش (على ما يبدو تم التخطيط لـ 3214، ولكن تم إلغاؤه بعد ذلك؛ لقد وصل إلى مسافة كافية لـ كن في ATPACK لفترة من الوقت قبل إزالته)
لقد كتبت ملخصًا موجزًا عن الوقت الذي تريد فيه استخدام أي سلسلة، إذا لم يكن الاختيار الصحيح واضحًا الآن.
في التعريف الرسمي للوحة Arduino لحزمة الأجهزة "megaavr"، يشيرون ضمنًا إلى أن البنية الجديدة لأجزاء سلسلة megaAVR 0 (والتي تشبه تقريبًا المستخدمة في سلسلة tinyAVR 0 و1-Series) تسمى "megaavr" "- هذا ليس مصطلحًا رسميًا. تستخدم Microchip مصطلح "megaAVR" للإشارة إلى أي جزء من أجزاء "ATmega"، سواء كان ذو الطراز القديم أو الأجهزة الطرفية الحديثة. لا توجد مصطلحات رسمية للإشارة إلى جميع أجزاء AVR لعائلة أو أخرى، حتى أن أحد موظفي شركة Microchip نفى وجود مثل هذا المصطلح داخليًا. لست متأكدًا من كيفية تصنيع مجموعتين من الأجزاء، حيث تحتوي الأجزاء في كل مجموعة على الكثير من القواسم المشتركة مع بعضها البعض والقليل جدًا من القواسم المشتركة مع المجموعة الأخرى، دون أن يصوغ أحد عبارة للإشارة إلى أي منهما.
في هذه الوثيقة، قبل 2.0.2، استخدمنا اتفاقية Arduino، وعلى الرغم من مرور أكثر من عام منذ ذلك الحين، ما زلت أبحث عن أماكن أسميها MegaAVR. يرجى الإبلاغ عن هذا باستخدام مشكلة جيثب إذا رأيت أيًا منها. لاحظ أن المصطلحين avr
و megaavr
لا يزالان مستخدمين داخليًا (على سبيل المثال، في المكتبات، لتحديد الأجزاء التي تتوافق معها مكتبة معينة، أو فصل الإصدارات المختلفة من الملف بناءً على ما سيتم تشغيله عليه). سيستمر هذا - علينا أن نلتزم بهذا من أجل التوافق مع ما بدأه فريق Arduino بالنواة لـ Uno WiFi Rev. 2 وNano Every.
على أية حال، هناك حاجة لبعض الكلمات للإشارة إلى المجموعتين ولم تقدم شركة Microchip واحدة. في غياب مصطلح رسمي، كنت أشير إلى أجهزة AVR قبل عام 2016 (مع سجلات PORTx وDDRx وما إلى ذلك للدبابيس) باسم " AVR كلاسيكي " وتلك التي يطلق عليها Arduino اسم megaavr باسم " AVR حديث ". توجد أيضًا بعض الأجزاء التي تشبه وحدات الإدخال / الإخراج الخاصة بها إلى حد كبير أجهزة AVR الكلاسيكية ولكنها تحتوي أيضًا على إصدار أسوأ بكثير من مجموعة التعليمات وأحجام فلاش نموذجية تبلغ 1 كيلو بايت أو أقل. تستخدم هذه النوعية AVRrc (للنواة المنخفضة) من AVR، في حين تستخدم معظم AVRs الكلاسيكية AVRe أو AVRe+، وتستخدم AVRs الحديثة AVRxt. أجزاء AVRrc غير مدعومة بهذا النواة، وفي المناسبة المؤسفة التي أحتاج فيها إلى مناقشة هذه الأجزاء المخيبة للآمال للغاية، سأشير إليها على أنها أجزاء " Reduced Core AVR "، حيث أن هذا هو اسمها الرسمي، على الرغم من أن لدي الكثير المزيد من العبارات الملونة بالنسبة لهم. يوصى بعدم استخدام أي تصميم لفترة AVR أساسية مخفضة . لا يعني ذلك أنهم عفا عليهم الزمن، بل إنهم مجرد رديئين. يوصى باستخدام " AVRs الحديثة " (تلك التي تحتوي على الأجهزة الطرفية الجديدة ومجموعة تعليمات AVRxt ) - إما سلسلة Ex، أو سلسلة Dx، أو tinyAVR 0/1/2 أو mega0 لجميع التصميمات الجديدة
ورقة البيانات الخاصة بسلسلة tinyAVR 2 الجديدة - في حين أن ورقة البيانات "تغطي" الأجزاء 16 كيلو فقط، إلا أنها تشير بوضوح إلى عدم وجود اختلافات في الميزات بين الأجزاء التي لها نفس عدد الدبوس (أي أنه لا توجد أجزاء "ذهبية" مثل 16k/32k 1-Series)، فقط بين الأجزاء ذات أعداد الدبوس المختلفة، وفقط وفقًا لما يمليه عدد الدبوس (أي، ستكون هناك ميزة في الجزء ذو 24 سنًا على 14 سنًا، إلا إذا كان 14 سنًا لا يحتوي على المسامير التي يحتاجها، وهو شيء لا يمكن استخدامه بدون دبابيس). تم إدراج جميع الأجزاء ذات 14 و20 و24 دبوسًا مع فلاش 4k و8k و16k و32k؛ تأتي خيارات حجم الفلاش هذه، على التوالي، مع 512 و1024 و2048 و3072 بايت من SRAM (أي أن الأجزاء 4k و8k تحتوي على ضعف SRAM)، وتحصل الأجزاء 4/8k على 128 بايت من EEPROM، بينما تحصل الأجزاء الأكبر على 256 بايت. تأتي الأجزاء ذات 14 سنًا في SOIC وTSSOP، وتأتي الأجزاء ذات 20 سنًا في SOIC وSSOP، وما إلى ذلك. itty-bitty QFN مثل 1616 (هذه المرة أعطونا الجزء 32 كيلو بايت في تلك الحزمة أيضًا، لكن حظًا سعيدًا في الحصول على واحدة، لقد تم طلبها متأخرًا في كل مكان - لم أتمكن من تسجيل واحدة) و24 دبوسًا في نفس VQFN مثل 3217.
لم تتغير TWI وSPI وUSART0 وAC0، كما هو الحال مع NVMCTRL (التغييرات المطلوبة لمحمل التشغيل كانت تتعلق فقط بدعم USART الثاني). خيارات الساعة دون تغيير. تمت ترقية TCB0 وTCB1 إلى الإصدار الموجود في Dx-Series: خيار حدث إيقاف الساعة، والتتالي، وبتات INTCTRL المنفصلة لـ OVF وCAPT - إضافات رائعة، ولكن لا شيء ذي صلة بالنواة نفسها)، وجميع الأجزاء بها كل من TCB. نحصل الآن على 4 جداول بحثية CCL و2 جهاز تسلسل، بدلاً من 2 و1 - ويمكنهم إطلاق المقاطعات مثل الأجزاء الأخرى باستخدام CCL (وعلى عكس سلسلة tinyAVR 0/1). واحدة من أكثر الميزات إثارة هي أنه، كما هو متوقع، لديهم USART ثانٍ (الضجيج الذي تسمعه هو ATtiny841 وATtiny1634 ينتحب في الزاوية). تُسمى الآن سجلات PORTMUX مثل بقية مسجلات AVR الحديثة - ولكننا لم نفقد التحكم الفردي في المسامير لكل قناة TCA WO. تعمل EVSYS الآن بنفس الطريقة التي تعمل بها على الأجزاء غير الصغيرة من سلسلة AVR-0/1 (وهو تغيير مرحب به - كانت السلسلة 0/1 هي النسخة الفردية، وقد تم امتصاص بعض الطرق التي كان بها EVSYS مختلفًا ). لقد اختفت ميزات السلسلة الأولى من TCD0 وAC1/2 وDAC0 وADC1. بدلاً من ذلك، يعد ADC0 أكثر روعة ولا يمكن التعرف عليه تقريبًا، وهو أول جهاز AVR جديد تم إصداره منذ الاستحواذ والذي يتميز بـ ADC التفاضلي الحقيقي. (انتظر عويلًا مؤلمًا آخر من الفقراء '841، والذي يحتوي أيضًا على ADC فاخر بشكل لا يصدق مع خيارات تفاضلية رائعة، ولكنه يبدو قديمًا تمامًا بجوار الخيارات الجديدة)... إذا حكمنا من خلال حجم المشاركات حول مواضيع مختلفة قمت بها يبدو أن لدي شعور بأن ADC التفاضلي لم يكن على رأس معظم قوائم الرغبات الخاصة بك - ولكنه كان على رأس قوائم عملاء الشرائح الرئيسيين، وهذا ما حصلنا عليه. وقد اقترب الوقت من حصولنا على ترس تفاضلي مناسب بدلاً من التفاضلي الموجود في سلسلة Dx. وهو حقا يتوهم حقا . انظر أدناه.
يوفر megaTinyCore تطبيقًا تمثيليًا للقراءة () ووظائف أكثر قوة لاستخدام oversampling وPGA (راجع قسم الميزات التناظرية أدناه).
أوه، وشيء آخر... يحتوي تكوين طرف UPDI على الخيارات القديمة - UPDI، أو I/O، أو Reset... وخيار جديد: UPDI على PA0، مع دبوس RESET للأجهزة على PB4! سيكون Optiboot أخيرًا خيارًا قابلاً للتطبيق ومريحًا على الأقل في الأجزاء التي تحتوي على PB4، أي ليس الأجزاء ذات 14 سنًا. والذي يحدث أيضًا (إذا كانت مبيعات متجر Tindie الخاصة بي تشير إلى أي شيء) هو النوع الأكثر شيوعًا.
هل تعتقد أنه سيكون هناك 3 سلسلة؟ لا أفعل ذلك. من الواضح أن DD وEA يلاحقونهم ويتخذون مواقع استراتيجية حول منطقة AVR الصغيرة. أعتقد أنها مسألة وقت فقط قبل أن يتم التخلص من العلامة التجارية كما فعلوا مع megaAVR بعد سلسلة megaAVR 0. هذا ليس بالضرورة أمرًا سيئًا: جميع أجزاء سلسلة Dx وEA متشابهة جدًا في تعيينات الدبوس والسلوك، وهو أمر لطيف جدًا. تعتبر الأجهزة الصغيرة أقل تنظيمًا، على الرغم من أنها تقوم بتوزيع الدبابيس على المزيد من الأجهزة الطرفية. يبدو أن المبدأ التوجيهي كان "عدم ترك أي طرفية وراءنا". على النقيض من تعيينات الدبوس لسلسلة Dx وEA حيث يتبع كل شيء خطة رئيسية ثابتة. تحتوي الأجزاء إما على دبوس معين أو لا تحتوي عليه، وإذا لم يكن الأمر كذلك، فلن تتوفر هذه الوظيفة. في كلتا المجموعتين الواسعتين، أعتقد أن هناك مدير منتج تتمثل مهمته في ضرب السوط على المهندسين الذين يفكرون في عمل "استثناء" لـ Holy Pinout (نظرًا لأن هذه الاستثناءات تتكاثر حتمًا وهي الطريقة التي انتهينا بها من تعيينات دبوس لوحة السهام معصوبة الأعين على tinyAVR الكلاسيكي)
ترقيم الأطراف غريب على أجهزة tinyAVR، وهذا خطأ شركة Microchip - لقد قاموا بترقيم الأطراف داخل المنافذ بشكل غريب: يبدأ بالترتيب، باستثناء أن PA0 هو UPDI وغير قابل للاستخدام بشكل عام، ثم يتم ترقيم منافذ PORTB بترتيب عكسي، ثم يعود PORTC إلى نفس الترقيم عكس اتجاه عقارب الساعة مثل PORTA. أعطني استراحة! نظرًا لأن التقليد هو استخدام الدبوس 0 للدبوس الأول، ويكون الرقم الأخير هو الدبوس الذي لا يمكنك استخدامه دون ضبط المصهر الذي يجعل برمجة الشريحة صعبة. أفضل أن أكون قادرًا على ترقيمها عكس اتجاه عقارب الساعة بدءًا من A0 دون كسر الأعراف غير المكتوبة في كود Arduino. يمكن للمرء أن يجادل بأنني اتخذت قرارًا سيئًا بشأن تعيينات الدبوس - ربما كان ينبغي عليهم البدء بـ PA0 (غير قابل للاستخدام ما لم يتم ضبط المصهر، وفي هذه الحالة يصعب برمجة الشريحة) مثل الدبوس 0، ثم ترقيم المسامير في عكس اتجاه عقارب الساعة. لكنك لا تزال غير قادر على القيام بهذا النوع من الحيل التي يمكنك القيام بها إذا كانت جميع المنافذ مرتبة، إلا إذا قمت بترقيم منافذ PORTB بشكل عكسي. إذا تمكنت من التخلص من توقع ترقيم جميع الأطراف بالترتيب (واستخدام تدوين PIN_Pxn فقط) فيمكن تحقيق وفورات كبيرة
أتوقع أنه خلال 2-4 سنوات، سيكون هناك AVR DA، DB، DD. أجزاء من سلسلة DU (USB)، وEA، وD/E/F تصل إلى 8 (أو على الأقل 14) وأجزاء ذات 64 سنًا مع فلاش 128 كيلو بايت وADC الجديد. ولا شيء آخر يحمل علامة ATtiny. ربما يكون السؤال الأكبر المتبقي هو ما إذا كانوا سيستبدلون ATmega2560 بمحول AVR حديث بإجمالي 100 طرف (ربما 80-88 منها مدخلات/مخرج) وخيارات فلاش تصل إلى 256 كيلو بايت؛ قد يؤدي ذلك إلى ظهور ثلاث مشكلات - أولاً، بعد 56 منفذ إدخال/إخراج لم يعد هناك المزيد من سجلات VPORT المتبقية - مساحة الإدخال/الإخراج المنخفضة ممتلئة بـ 28 VPORT و4 GPIORs. كيف سيتعاملون مع المنافذ الأربعة الإضافية؟ (في 2560، كانت مجرد منافذ من الدرجة الثانية تم الوصول إليها بشكل أبطأ ولم يكن لديها وصول لدورة واحدة. لدي بعض التأملات حول هذا الموضوع وعن مدى جدوى عدد قليل من أكواد التشغيل المتوفرة في الملحق أ هنا. وثانيًا، للاختراق حاجز 128K في Flash ، يجب عليك الذهاب إلى عداد برنامج 17 بت. تم الاحتفاظ به ، هذا "D X Part على 256 كيلو فلاش سيكون 32 كيلو متر من ذاكرة الوصول العشوائي. تذكر الآن كيف يعمل Progmem على DX - لم يتمكنوا من الذهاب إلى 32. 24K ذاكرة الوصول العشوائي ممكن بالتأكيد ، ربما حتى 28 ، ولكن في 32 كيلو بايت ، بالإضافة إلى 32 كيلو فلاش المعينة ، لا يترك أي مجال لـ SFRs ، والتي هي في نفس مساحة العنوان.
أبيع لوحات الاختراق مع المنظم ورأس UPDI ورأس تسلسلي في متجر Tindie الخاص بي ، بالإضافة إلى الألواح العارية. يساعد الشراء من متجري في دعم مزيد من التطوير على القلب ، وهو وسيلة رائعة للبدء في استخدام هذه الأجزاء الجديدة المثيرة مع Arduino. تتوفر لوحات ATTINY1624 حاليًا ، ولكن لن يتم بيع الأجزاء المكونة من 20 و 24 دبوسًا كوحة مجمعة حتى يعود تصميم PCB المنقح حديثًا من منزل المجلس لتمكين ATORESET على دبوس RESET ALT. هناك أيضًا مراجعة لوحية من 14 دبوسًا - اعتقدت أنها مستحضرات تجميل إلى حد كبير. يجب أن يذهب قناع اللحام الأصفر ، حيث بدا أن قابلية القراءة تزداد سوءًا في الدفعات العديدة الأخيرة. تقوم اللوحات الجديدة أيضًا بتوحيد تباعد 0.6 بوصة بين صفوف المسامير ، بدلاً من التباعد الحالي 0.7 "، لذلك ستتمكن ، على سبيل المثال ، على رأس الدبوس المُصنّع عليها وتوصيلها بمقبس عريض عريض ، أو استخدمها مع لوحة النماذج الأولية المحسنة لتباعد الصف هذا. يتم إيقاف ألواح السلسلة المُجتمع ، ولن يتم إعادة تخزينها بمجرد بيعها. سيحدث الشيء نفسه بالنسبة للأجزاء 16K 2-Series بمجرد توفر الأجزاء 32k.
تعد ADC على سلسلة 2 و EA-Series أفضل ADC التي تم إصدارها على AVR في عصر AVR الحديث. إلى جانب هذين. أقرب المقارنات هي AVRs الكلاسيكية التي حصلت على ADC التفاضلي مع ميزات من الدرجة الأولى (T841 ، MEGA2560 و (من المثير للدهشة) T861 كونها أقوى المنافسين). على الرغم من أنها غير قادرة على الحصول على مكسب 100X و 200x المجنون الذي تفاخرت به بعض الأجزاء في أيام AVR الكلاسيكية ، إلا أنه لم يكن من الواضح لي كم كان تضخيم ببساطة ضوضاء (بالنظر إلى خبرتي المحدودة المعترف بها في اللعب مع ADC التفاضلي سأقول "ربما معظمها ، وبالتأكيد معظمها إذا سمحت لي بتصميم الأجهزة ، لا أعرف التناظرية!"). من المؤكد أن هذا ADC الجديد قادر للغاية ، مع قدرة تفاضلية حقيقية (على عكس سلسلة DA و DB) ، وتساعد الرأس والكتفين فوق أي شيء متوفر على أي AVRs الحديثة الأخرى حتى الآن. يعد مكبر الصوت القابل للبرمجة قدرة جديدة ، ويبقى أن نرى نوعًا من المآسي القياس التناظري يمكن للأشخاص الخروج منه ؛ يبدو بالتأكيد واعدا. سيكون من المثير للاهتمام بشكل خاص فهم الاختلافات بين استخدام PGA في كسب 1x ، مقابل عدم استخدام PGA ، وفوائد وعيوب القيام بذلك. (ستتم خدمات الرقائق الدقيقة من خلال وثيقة ناقشت كيفية اختيار تكوين ADC الصحيح لمهمة في الحالة العامة ؛ لقد أثارت هذا القلق مع الرقائق الدقيقة والشخص الذي تحدثت إليه أشار إلى أنه كان أولوية عالية ؛ تم تحسين الموقف بشكل كبير ، ويبدو أن مجموعة DOC قد تم توجيهها على وجه التحديد بعدم تقديم أي توصيات ملموسة فعلية من أي نوع.
إن إضافة تراكم 1024 عينة لأغراض الإفراط في الإفراط والتحلل هو إضافة مرحب بها ، على الرغم من أن هناك أيضًا يخاطر بالتقليل من حجم خطأ الإزاحة وأهميته. (أخذ 1024 عينة ، (جميعها لها خطأ في الإزاحة المعطى) ، ثم إزالة المبلغ لإعطاء قياس ADC 17 بت يجعل من السهل تخيل أن أي خطأ سوف يقتصر على أدنى زوجين من البتات. ولكن إذا كان الخطأ كان ، على سبيل المثال 5 LSB في قياس واحد ، عندما تتراكم 1024 عينات وديكتوري ، لديك خطأ إزاحة قدره 160 ، من السهل للغاية رؤية ذلك والاعتقاد بأنها ليست ضوضاء.
تتوفر رقاقة الحجم الكامل (غير الدقيق) مع ADC الجديد في حزم دبوس 28-48 مع فلاش تصل إلى 64 ألف. كان هناك تكهنات معتادة حول ما إذا كان أي شيء سيتغير من سلسلة 2 إلى سلسلة EA: يبدو أن الإجابة هي ، تمت إزالة أحد المقابض المربكة ، وتم تقطيع العلامة التلقائية للقياسات المتراكمة (
يتم استخدام Type D Timer فقط لـ PWM على أجزاء الفئة 1/24 PIN 1 على إعدادات دبوس PWM الافتراضية. على الأجزاء الأصغر ، لن يسمح لنا بزيادة إجمالي عدد دبابيس PWM. فقط دبابيس WOC و WOD (على PC0 و PC1 على التوالي) ليس لديها بالفعل PWM التي تعتمد على TCA عليها. على هذا النحو ، نظرًا لأن analogwrite () لا يدعم أي ميزات سيتم تمكينها عن طريق إيقاف تشغيل وضع الانقسام (مثل PWM 16 بت) أو محسّن باستخدام Type D Timer (مثل ضبط التردد) ، سيكون الأمر أسوأ فقط ، لأنه سيتطلب الأمر مساحة إضافية لتخزين الروتين لتشغيل وإيقاف PWM من نوعين من المؤقت ، بدلاً من واحد. هذا ليس ضئيلًا على أجزاء الفلاش الأصغر ؛ هو بترتيب 600 بايت. 150 لـ DigitalWrite () و 450 لـ Adalogwrite () إذا تم استدعاء تلك على دبوس TCD PWM. يجب أن يكون المحسن قادرًا على تحسين هذا الجزء من هذه الوظائف في هذه الحالة ، حيث لا تتضمن المسامير المستخدمة مع هذه الوظائف أي دبابيس TCD PWM. لاحظ أن المحسّن سوف يعتبرهم بشكل مستقل ، أي أن DigitalWrite () سيتضمن الكود لإيقاف تشغيل TCD PWM إذا تم استخدامه باستخدام دبوس يستخدم TCD لـ PWM ، سواء كنت تتصل أو لا تتصل بـ Adalogwrite () على هذا الدبوس.
على عكس كل AVR تقريبًا على الإطلاق (يمكنني التفكير في 3 أمثلة ، وآخر منها هو "مكافأة" وليس "Untonus") ، هناك ميزات "مكافأة" إضافية تعتمد على حجم الفلاش داخل الأسرة . تحتوي إصدارات 16K و 32K (فقط) على عدد قليل من الميزات الإضافية (والتي لا يبدو أنها تم اعتبارها أيضًا للتسعير) - جميعها تحتوي على 2K من ذاكرة الوصول العشوائي ، سواء كانت 16 كيلو أو 32 كيلو متر ، لديهم 3 مقارنات تمثيلية (بما في ذلك وضع النافذة خيار) ، ثاني - مطلوب يائس - النوع ب مؤقتًا - وأغرب كل ما لديهم ADC ثانية ، يختلف فقط في دبابيس القنوات تتوافق معها!
على عكس AVRs الكلاسيكية ، على هذه الأجزاء ، يتم تعيين الفلاش إلى نفس مساحة العنوان مثل بقية الذاكرة . هذا يعني pgm_read_*_near()
غير ضروري للقراءة مباشرة من الفلاش. ولهذا السبب ، يضع التحويل البرمجي تلقائيًا أي const
معلنًا في progmem ، ويواصله بشكل مناسب - لم تعد بحاجة إلى إعلانها صراحة على أنها progmem. ويشمل ذلك الحدد الحرفية المقتبسة ، لذلك لم يعد هناك حاجة إلى ماكرو F () ، على الرغم من الحفاظ على التوافق مع بعض مكتبات الطرف الثالث ، لا يزال F () يعلن عن حجة ProgMem.
ومع ذلك ، لاحظ أنه إذا أعلنت صراحةً وجود ProgMem متغير ، فلا يزال يتعين عليك استخدام وظائف pgm_read
لقراءتها ، تمامًا مثل AVRs الكلاسيكية. عندما يتم الإعلان عن متغير progmem على أجزاء مع فلاش تم تعيين الذاكرة ، يتم تعويض المؤشر (العنوان مناسب لبدء الفلاش ، وليس بدء مساحة العنوان) ؛ يتم تطبيق هذه الإزاحة نفسها عند استخدام وحدات الماكرو pgm_read_*_near()
. لاحظ أن إعلان الأشياء progmem والوصول إليها مع pgm_read_*_near
، على الرغم من أنها تعمل بشكل جيد ، فإنها أبطأ وتضيع كمية صغيرة من الفلاش (مقارنةً بإعلان ببساطة المتغيرات const) ؛ وينطبق الشيء نفسه على الماكرو F () مع سلاسل ثابتة في 2.1.0 وبعد ذلك (لفترة من الوقت قبل 2.1.0 ، F()
لم يفعل شيئًا - ولكن هذا تسبب في مشاكل لمكتبات الطرف الثالث). أكد المؤلفون أن المشكلة كانت مع النواة ، وليس المكتبة ، وكان خياري هو قبول كفاءة أقل ، أو حرمان المستخدمين من الوصول إلى المكتبات الشهيرة). قد يكون استخدام الماكرو F()
ضروريًا للتوافق مع بعض مكتبات الجهات الخارجية (الحالات المحددة التي أجبرت على عودة F()
علينا لم تكن من هذا النوع - تمكنا فعليًا من صنع تلك التي أعرفها بالعمل مع F ()-رمز NOOP ، وتولى بايت بايت أقل فلاش نتيجة لذلك).
يجب أن تعمل إصدارات السيارات أيضًا. يجب دائمًا تحديد سرعات الساعة 16 ميجا هرتز على هذه الأجزاء. لا تدعم تشغيل 20 ميجاهرتز ، ويجب عدم استخدام خيارات الساعة المضبوطة.
الآن إلى الجزء الجيد ، حيث نتحدث عن كيفية تعرض كل هذا من قبل MegatinyCore. سنبدأ بمسألة كيفية الرجوع إلى دبابيس للحصول على أفضل النتائج ، ثم الانتقال إلى الميزات الأساسية ، وخيارات القائمة ، قبل الانتهاء بسلسلة من الروابط إلى المستندات مع مزيد من التفاصيل حول الأنظمة الفرعية المختلفة.
كانت المسألة البسيطة المتمثلة في كيفية الرجوع إلى دبوس لـ analogread () و DigitalRead () ، وخاصة على الأجهزة غير القياسية ، مصدرًا مستمرًا للارتباك بين مستخدمي Arduino. رأيي هو أن الكثير من اللوم يستقر مع القرارات التي يتخذها فريق Arduino (ومؤلف كتاب الأسلاك قبلهم) فيما يتعلق بكيفية إحالة المسامير ؛ يؤدي تعيين بعض المسامير على أن "دبابيس تمثيلية" يقود الناس إلى الاعتقاد بأن هذه المسامير لا يمكن استخدامها للعمليات الرقمية (يُعتقد أنها "دبابيس مع مدخلات تمثيلية" - مثل كيفية وجود "دبابيس يمكن أن تخرج PWM"). حقيقة أن المسامير قد تم إعادة ترقيمها تقليديا قد أشعلت الماء. بالنسبة لقطع غيار AVR الكلاسيكية غير القياسية ، غالبًا ما تكون الأمور أسوأ من خلال "تعيينات دبوس" متعددة غير متوافقة معها من قبل مؤلفين مختلفين على مر السنين لجعل الجزء "مثل UNO" أو لغرض آخر (Attinycore هو خاص فوضى بهذه الطريقة ، مع وجود بعض الأجزاء ثلاثة تعيينات مختلفة تمامًا عن دبوس ، في حالة واحدة على الأقل ، واحدة من التعيينات البديلة هي عمل مستوحى من الشيطان من الشر النقي ، ولا يتطلب أي شيء أقل من جدول بحث إضافي للتحويل دبابيس التناظرية إلى دبابيس رقمية).
يستخدم هذا النواة مخططًا بسيطًا لتعيين أرقام دبوس Arduino: يتم ترقيم الدبابيس بدءًا من دبوس I/O الأقرب إلى VCC مثل PIN 0 والمضي قدمًا في اتجاه عقارب الساعة ، مما يتخطى دبوس UPDI غير القابل للاستخدام (في الغالب). ثم يتم تعيين PIN UPDI إلى رقم التعريف الشخصي الأخير (كما هو مذكور أعلاه ، من الممكن قراءة دبوس UPDI (كل من أعمال القراءات التناظرية والرقمية) حتى لو لم يتم تعيينه كـ GPIO). نوصي بهذا كملجأ أخير: يتم تمكين دبوس UPDI دائمًا عند عدم تعيينه كدسم GPIO ، وإشارة تشبه تسلسل تمكين UPDI إلى حد كبير ستؤدي إلى تشغيل غير مرغوب فيه.
من أجل منع جميع الالتباس حول هويات الدبوس والقضاء على الغموض ، نوصي باستخدام تدوين PIN_PXN للإشارة إلى دبابيس ما لم تكن تستخدم لوحة تطوير بأرقام أو أسماء مختلفة للدبابيس المطبوعة عليها. سيؤدي ذلك إلى زيادة إمكانية نقل الرمز إلى أجهزة أخرى مماثلة وتسهيل البحث عن معلومات حول المسامير التي تستخدمها في أوراق البيانات ذات الصلة ، في حالة ضرورة ذلك.
هذه هي الطريقة الموصى بها للإشارة إلى دبابيس #defines
يتم توفيرها أيضًا من النموذج PIN_Pxn
، حيث x
هو A أو B أو C ، و n
هو رقم 0-7 - (لا ينبغي الخلط بينه وبين تعريف PIN_AN أدناه). هذه مجرد حل إلى رقم الدبوس الرقمي للثانية المعنية - لا تمر عبر مسار رمز مختلف أو أي شيء. ومع ذلك ، لديهم فائدة خاصة في كتابة الكود التي تعمل عبر خط الإنتاج مع الأجهزة الطرفية المرتبطة بمسامير معينة (بواسطة المنفذ) ، كما هو الحال في معظم الأجهزة الطرفية. عدة أجزاء من التعليمات البرمجية التجريبية في الوثائق تستفيد من هذا. من الممكن أيضًا معالجة المنفذ المباشر - وفي الواقع تتوفر العديد من الخيارات الإضافية القوية لها - راجع معالجة المنفذ المباشر .
PIN_Pxn
- ليس Pxn
، وليس PIN_xn
- تلك تعني الأشياء المختلفة!
عند استخدام رقم واحد للإشارة إلى دبوس - في الوثائق ، أو في الكود الخاص بك - يكون دائمًا "رقم دبوس Arduino". هذه هي أرقام الدبوس الموضحة باللون البرتقالي (للدبابيس القادرة على analogread ()) والأزرق (للدبابيس ليست) على مخططات pinout. يتم تعريف جميع الطرق الأخرى للإشارة إلى المسامير إلى رقم دبوس Arduino المقابل.
يوفر Core أيضًا ثوابت An
(حيث n
هو رقم PIN_An
0 إلى 11). كما هو الحال مع النواة الرسمية ، يتم تعريف PIN_An
على أنه رقم الدبوس الرقمي للثانية المشتركة مع القناة التناظرية N تشير إلى أرقام قناة ADC0. يشبه نظام التسمية هذا ما تم استخدامه في العديد من النوى الكلاسيكية AVR ، ولكن هنا ، يتم تعريفهم فقط على أنه رقم دبوس Arduino المقابل . إذا كنت بحاجة إلى الحصول على رقم القناة التناظرية على دبوس رقمي ، فاستخدم Macro digitalPinToAnalogInput(pin)
- لكنك تحتاج فقط إلى ذلك إذا كنت تكتب مكتبة ADC متقدمة.
هذه الأجزاء (حسنًا ، السلسلة 1/2 على الأقل-كانت المقصود من السلسلة 0 خيارًا للميزانية ، إلا أنها فشلت في تقليص الميزانية ، وهي فقط بضع سنتات أرخص) توفر صندوق أدوات ممتاز من متعدد الاستخدامات والأجهزة الطرفية القوية. أهمها على قدم المساواة مع أو أفضل من أجزاء Megaavr الكلاسيكية - بسعر Tinyavr. أحد المبادئ التوجيهية لتصميم MegatinyCore ، كما هو الحال مع النوى الأخرى ، هو السماح للأجزاء المدعومة بالوصول إلى إمكاناتها الكاملة - أو أقرب ما يمكن من ذلك في حدود Arduino. يغطي هذا القسم (كبير جدًا) ميزات هذه الأجزاء وكيفية تعرضها بواسطة MegatinyCore ، وكذلك ميزات Core نفسها. يحاول هذا القسم (كبير جدًا) تغطية كل من مناطق الميزات. حاول العثور على الميزة التي تعمل معها إذا كنت تحاول استخدام بعض ميزة الرقائق وتواجه مشكلة!
20 ميجا هرتز داخلي (4.5 فولت - 5.5 فولت - نموذجي لأنظمة 5 فولت)
16 ميجا هرتز داخلي (4.5 فولت - 5.5 فولت - نموذجي للأنظمة 5V)
10 ميغاهيرتز داخلي (2.7 فولت - 5.5 فولت - نموذجي لأنظمة 3.3 فولت)
8 ميغاهيرتز داخلي (2.7 فولت - 5.5 فولت - نموذجي لأنظمة 3.3 فولت)
5 ميجا هرتز داخلي (1.8 فولت-5.5 فولت)
4 ميغاهيرتز داخلي (1.8 فولت-5.5 فولت)
2 MHz داخلي (1.8V-5.5V ، تم اختباره بشكل سيئ)
1 ميغاهيرتز داخلي (1.8V-5.5V ، تم اختباره بشكل سيئ)
الساعة 20 ميغاهيرتز خارج الساعة (4.5 فولت-5.5 فولت ، تم اختبارها بشكل سيئ)
16 ميجا هرتز الساعة الخارجية (4.5 فولت-5.5 فولت ، تم اختبارها بشكل سيئ)
12 ميجا هرتز الساعة الخارجية (2.7 فولت-5.5 فولت ، تم اختبارها بشكل سيئ)
10 ميغاهيرتز الساعة الخارجية (2.7 فولت-5.5 فولت ، تم اختبارها بشكل سيئ)
8 ميغاهيرتز ساعة خارجية (2.7 فولت-5.5 فولت ، تم اختبارها بشكل سيئ)
6 ميغاهيرتز داخلي (ضبط ، لم يخبر)
5 ميغاهيرتز داخلي (ضبط ، تم اختباره بشكل سيئ)
4 ميغاهيرتز داخلي (ضبط ، تم اختباره بشكل سيئ)
2 ميجا هرتز داخلي (ضبطها ، تم اختبارها بشكل سيئ)
1 ميجا هرتز داخلي (ضبط ، مختبر ضعيف)))
7 ميغاهيرتز داخلي (ضبط ، للمازوشيين ، لم يخبروا)
8 ميغاهيرتز داخلي (ضبط ، تم اختباره بشكل سيئ)
10 ميغاهيرتز داخلي (ضبط ، تم اختباره بشكل سيئ)
12 ميجا هرتز داخلي (ضبطها ، لم يخبر)
14 ميغاهيرتز داخلي (ضبط ، للمازوشيين ، لم يختبر)
16 ميجا هرتز داخلي (ضبط)
20 ميجا هرتز داخلي (ضبط)
24 ميجا هرتز داخلي (ضبط ، مدورة ، تم اختباره بشكل سيئ)
25 ميغاهيرتز داخلي (ضبط ، سركت ، مختبرة بشكل سيئ)
30 ميجا هرتز داخلي (ضبط ، مركبة ، مختبرة بشكل سيئ) - 0/1 السلسلة تتطلب "20 ميجا هرتز" إعداد الصمامات OSCCFG ؛ قد تتمكن أو لا يمكن أو لا تستطيع الأجزاء من الفئة المكونة على 30 من خلال "16 ميجا هرتز".
32 ميغاهيرتز داخلي (تم ضبطه ، مرسوم فيركلوكي ، مختبرين بشكل سيئ) - قد تكون السلسلة 2 فقط ، من رفع تردد التشغيل المتفائل للغاية ، غير مستقرة.
24 ميجا هرتز ساعة خارجية (مرسوم فيركلوكي ، تم اختباره بشكل سيئ)
25 ميجا هرتز ساعة خارجية (مرسوم ، تم اختباره بشكل سيئ)
30 ميجا هرتز ساعة خارجية (مرسوم ، تم اختباره بشكل سيئ)
32 ميغاهيرتز ساعة خارجية (مرسوم ، تم اختباره بشكل سيئ)
لا نقدم أي مطالبات حول نطاقات الجهد أو درجة الحرارة للأجزاء المقلدة - كل ما يدعيه هو أن واحدة على الأقل من الرقائق التي عملناها في تلك السرعة في درجة حرارة الغرفة ، وتشغيل رسم محدد ، عند 5 فولت. من المتوقع أن تختلف عدد الكيلومترات الخاصة بك ، ولكن يكون أفضل بشكل عام مع مواصفات F مقابل جزء N أو U.
مهم - اقرأ عن الضبط قبل اختيار أي خيار ضبط!
يمكن العثور على مزيد من المعلومات حول سرعات الساعة هذه في مرجع الساعة
الفولتية الموضحة هي تلك المضمونة للعمل حسب مواصفات الشركة المصنعة (. ما لم تدفع حدود درجة حرارة التشغيل ، فإن هذه الأجزاء عادة ما تكون أفضل بكثير (تعمل السلسلة 2 عمومًا على 32 ميغاهيرتز و 5 فولت درجة حرارة الغرفة حتى من المذبذب الداخلي ؛ 0 /ستعمل السلسلة 1 بالمثل على 32 ميغاهيرتز مع الساعة الخارجية شريطة أن يكون مصدر الطاقة مستقرًا 5.0-5.5 فولت).
لا يلزم إجراء أي إجراء لتعيين فتيل OSCCFG
عند تحميل الرسم عبر UPDI. عند التحميل من خلال Optiboot ، لا يمكن تغيير الصمامات ، لذلك كل ما تم اختياره عند حرق محمل التمهيد هو ما يتم استخدامه ، وسيقوم فقط "Burn Bootloader" أو تحميل رسم عبر UPDI إلى تغيير ذلك.
تستخدم جميع خيارات سرعة ساعة المذبذب الداخلية المعايرة الافتراضية للمصنع ما لم يتم تحديد خيار "ضبط" ، وفي هذه الحالة يتم ضبط المعايرة كما هو موثق في مرجع التوليف . يمكن استخدام هذا للحصول على تشغيل 16 ميجا هرتز على رقاقة البسوة تنصهر لمدة 20 ميغاهيرتز والعكس بالعكس.
راجع مرجع الصف السرعة لمزيد من المعلومات حول درجات سرعة الشركة المصنعة. لاحظ أن هذه هي الفولتية وسرعات الساعة التي يضمن لها العمل. تهدف هذه الأجزاء إلى أن تكون مناسبة للاستخدام في التطبيقات التي يمكن أن تشكل خلل غير متوقع من بعض الوصف خطراً على الأشخاص أو الممتلكات (فكر في السيارات ، والمعدات الصناعية ، والطائرات ، والمفاعلات النووية - الأماكن التي يمكن أن يموت فيها الناس إذا تعطل الجزء) وأنا تؤمن بالتطبيقات العسكرية أيضًا ، والتي لها متطلبات موثوقية مماثلة ، فقط للسبب المعاكس. سيكون مستخدمو الهوايات النموذجيون أكثر استرخاءً حول احتمال حدوث مشكلات في الاستقرار ، حيث تزيد عدد الحوادث عن إزعاج بقليل ، وتتجاوز الأجزاء المتطرفة لأجزاء درجة الحرارة الممتدة ما نحتاجه على الإطلاق. على افتراض أن اللوحة لديها طلاء مقاوم للماء ، حراريًا ، يجب أن يكون جزء الصف N قادرًا على العمل لكل درجة السرعة في وعاء من الماء المغلي. وهذا مجرد n-spec. يجب أن تكون F-Spec جيدة إلى 125!
لقد ثبت أن أجزاء درجة الحرارة الممتدة تتفوق بشكل أفضل . من المتوقع أن يكون للجزء الذي يتم تشغيله عند 20 ميجا هرتز عند 125 درجة مئوية فرصة أفضل للركض عند 32 ميجا هرتز في درجة حرارة الغرفة من واحد فقط للركض عند 20 ميجا هرتز فقط عند 105 درجة مئوية فقط
اعتبارًا من الإصدار 2.4.0 ، نقدم الآن خيارًا "لوحة Microcroploy الرسمية". هذا لا يفعل أي شيء خاص بخلاف تحديد LED_BUILTIN
ليكون رقم التعريف الشخصي الذي يحتوي على LED على هذا اللوحة ، بدلاً من A7 ، وتحديد MACRO PIN_BUTTON_BUILTIN
المعرّف على أنه دبوس مع زر المستخدم عليه وجعل "التحميل" -Optiboot إصدار دائمًا استخدام المبرمج/التصحيح على متن الطائرة ؛ الأدوات -> سيتم استخدام المبرمج فقط من أجل "Burn Bootloader" و "التحميل باستخدام المبرمج". في حالة nano attiny416 xplained ، فإنه يحدد أيضًا إصدار جهاز تحميل التشغيل الذي يستخدم دبابيس بديلة للمنفذ التسلسلي - لا يستخدم تلقائيًا الدبابيس البديلة لـ USART0 كما لو كنت قد فعلت serial.swap (1) حتى الآن - ستأتي الوظيفة لدعم المبادلة الافتراضية للدبابيس التسلسلية في تحديث مستقبلي ، إلى جانب بعض التغييرات الأخرى في الآلات التي تقوم عليها آلية pinswap التي نأمل أن تقلل أيضًا من استخدام الفلاش.
كما هو مذكور أعلاه ، قد لا تعمل هذه بشكل صحيح على منصات Linux 32 بت. هذا خارج عن إرادتي. أنا لا أبني ثنائيات Avrdude AMD أنا لا أتعامل مع هذه المهمة أيضًا. لدي الكثير بالفعل.
blink()
المزيد من الفلاش على Xplained Mini vs The Xplained Pro؟كلاهما لديه نفس ATTINY817! كيف يمكن أن تكون مختلفة؟
للسبب نفسه في أن Blink ستستغرق المزيد من الفلاش إذا قمت بتغييره لاستخدام PIN_PC0
بدلاً من PIN_PB4
: PC0 ، المستخدمة على XPLAING MINI هو دبوس PWM ، في حين أن PB4 ، المستخدمة من قبل PRO XPLAING ليست كذلك. نظرًا لأن هذا هو الدبوس الوحيد الذي يتم استخدامه DigitalWrite () ، فإن المترجم حر في تحسين أي شيء غير مطلوب لـ DigitalWrite () على هذا الدبوس ، بما في ذلك الوظيفة لإيقاف إخراج PWM على دبوس يدعم PWM . يختفي الاختلاف إذا تم استخدام DigitalWrite () أيضًا على دبوس يدعم PWM على كلا الجهازين (مما يؤدي إلى ارتفاع نتيجة استخدام الفلاش) أو إذا تم استبدال DigitalWrite () بـ DigitalWriteFast () ، والتي ستستخدم فلاش أقل (ولكنها تفترض أنك فزت 'ر استدعاءها على دبوس الإخراج PWM).
عندما يتم استخدام مبرمج UPDI لتحميل رمز ، فإن جميع الصمامات التي يمكن تعيينها "بأمان" (كما هو الحال في ، دون خطر الطوس على اللوحة ، أو الطوس إذا لم يكن بإمكان المرء الوصول إلى مبرمج HV) ، والذي يحتوي على أي منها خيارات التكوين المدمجة ، سيتم تعيينها. وبالتالي ، باستثناء ما هو مذكور ، سوف يتطابق السلوك دائمًا مع قائمة الأدوات المحددة. باختصار ، يتم التعامل مع هذه على النحو التالي:
WDTCFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
BODCFG will not be changed - not safe, you could set the BOD level to 4.3 on a 3.3v system, and then it would need to get > 4.3v applied to reprogram it. If it is on the same circuit board as parts that would be damaged, this is a difficult situation to recover from.
OSCCFG will be set
TCD0CFG will not be changed - it is not configured by megaTinyCore except to reset it to the factory default when doing "burn bootloader".
SYSCFG0 will not be changed - not safe
SYSCFG1 will be set
APPEND will not be changed - it is not configured by megaTinyCore. There is insufficient demand to justify the development effort.to make use of this as DxCore does
BOOTEND will be set
LOCKBIT will not be changed - it is not configured by megaTinyCore; supporting the lockbits presents several additional complications, and commercial users with need of this facility are unlikely to be using the Arduino IDE to program production units.
BODCFG
ليس آمنًا ، لأن وضع هذا الجهد أعلى من اللوحة يعمل على تشغيله وتمكينه من "الطوب" على اللوحة حتى يمكن توفير جهد تشغيل أعلى ؛ قد يكون هذا محرجًا بشكل خاص إذا تم لحامه لنفس ثنائي الفينيل متعدد الكلور كأجهزة لن تتسامح مع تلك الفولتية.
SYSCFG0
ليس آمنًا لأن هذا هو المكان الذي يعيش فيه RSTPINCFG
؛ يمكن أن يؤدي تغيير هذا إلى ترك اللوحة غير قابلة للبرمجة إلا عبر برمجة HV UPDI ، وليس لدى كل شخص مبرمج HV UPDI. في المستقبل إذا/عندما يكون المبرمج الذي يضمن قدرة HV UPDI التي يمكن اختيارها كمبرمج (أي ، يصبح من الممكن إنشاء أدوات -> خيار البرمجي الذي سيعمل فقط مع مبرمجي HV) هذا المبرمج.
نتيجة لذلك 2.2.0 وبعد ذلك ، لم تعد بحاجة إلى "حرق تحميل التمهيد" للتبديل بين سرعات مشتقة من 16 ميجا هرتز و 20 ميجا هرتز عند التحميل باستخدام UPDI
يستخدم هذا النواة دائمًا تحسين وقت الارتباط لتقليل استخدام الفلاش - جميع إصدارات المترجم التي تدعم أجزاء Tinyavr 0/1/2 -Series تدعم أيضًا LTO ، لذلك ليست هناك حاجة لجعلها اختيارية ، كما حدث مع AttinyCore. كان هذا تحسنًا كبيرًا في الرموز عند تقديمه ، وعادةً ما يكون بنسبة 5-20 ٪!
تحتوي جميع هذه الأجزاء على عدد كبير من المدخلات التناظرية-تحتوي سلسلة DA و DB على ما يصل إلى 22 مدخلًا تمثيليًا ، في حين أن سلسلة DD لها مدخلات تمثيلية على كل دبوس غير مستخدم لقيادة بلورة HF (على الرغم من أن المسامير الموجودة على Portc هي مدعوم فقط عند إيقاف تشغيل MVIO). يمكن قراءتها باستخدام analogRead()
مثل على AVR العادي ، ونحن نقوم بالتخلف عن دقة 10 بت ؛ يمكنك التغيير إلى الـ 12 بت الكامل باستخدام analogReadResolution()
، واستخدام وظائف alegread المحسنة لاتخاذ قراءات مفرطة تلقائيًا ، ملموسة لدقة أعلى ولأخذ قياسات تفاضلية. هناك 4 مراجع الجهد الداخلي في 1.024 و 2.048 و 4.096 و 2.5 فولت ، بالإضافة إلى دعم الجهد المرجعي الخارجي (و VDD بالطبع). تؤخذ قراءات ADC أسرع 3 مرات من AVR الكلاسيكي ، ويمكن مضاعفة هذه السرعة مرة أخرى إذا كان ما تقوم بقياسه هو مقاومة منخفضة ، أو تمديد وقت أخذ العينات بعامل كبير لقراءة مصادر مقاومة عالية جدًا. هذا مفصل في المرجع التناظرية.
تحتوي أجزاء DX-Series على DAC 10 بت التي يمكن أن تولد جهدًا تمثيليًا حقيقيًا (لاحظ أن هذا يوفر تيارًا منخفضًا ولا يمكن استخدامه إلا كمرجع جهد أو جهد تحكم ، لا يمكن أن يكون