ذات مرة مررت بمفتاح الوقت الرقمي الإلكتروني VL-76-S ، جديد ، في عبوة ، ولكن في حالة خلل. لم يتم العثور على عيوب في لوحات الدوائر المطبوعة في الداخل. لذلك ، زواج المصنع ، كسر البرامج الثابتة.
نظرة عامة على التتابع.ما فاجأنا هو استخدام متحكم بسيط وبسيط ATTiny2313. خارجياً ، يتكون هذا التصميم من سيد على شكل ثلاثة عقود من المفاتيح ومحطة يتم توصيل الطاقة 220 فولت واتصالات مرحل EM. نطاق المهمة 0.1 ... 99.9 دقيقة. بزيادات 0.1 دقيقة (6 ثوان). لا توجد دوائر وبرامج ثابتة على هذا التصميم على الإنترنت ، وهذا ليس مفاجئًا. دون التفكير مرتين ، قررت رسم الدائرة من لوحات الدوائر المطبوعة وفي المستقبل اكتب البرنامج على عضو الكنيست بنفسي.
يتكون التصميم من ثلاث لوحات دوائر مطبوعة مترابطة. في اللوحة الأولى ، يتم إجراء مصدر طاقة ومرحل تنفيذ TRA3. يتم توفير مصدر الطاقة وفقًا لدائرة بدون محول: يتم استخدام مكثفات التبريد لتقليل الجهد. في اللوحة الثانية يوجد ATTiny2313 MK والعناصر المساعدة الأخرى. على اللوحة الثالثة توجد مفاتيح (نقاط ضبط) و LED تحكم.
صورة للوحة الثالثة من الخلف.سأبدأ الوصف مع اللوحة الثالثة. المفاتيح هي مفاتيح 10 موقف. لا يوجد علامات عليها ، لكل منهم 5 جهات اتصال. لذلك ، اعتمادًا على الموقع ، يتم إغلاق جهات اتصال معينة في مجموعات مختلفة. عند استدعاء جهات الاتصال ، اكتشفت النمط على الفور: تم إغلاق أحد المخرجات الثابتة (عام) مع المخرجات الأربعة الأخرى (المعلومات) وفقًا للتمثيل الثنائي للرقم المقابل لعدد الموضع المحدد. على سبيل المثال ، إذا تم تحديد الموضع "3" ، فسيتم إغلاق المخرج العام (الخامس على التوالي) مع إخراج الثالث والرابع ، لأن الرقم "3" في التمثيل الثنائي هو "0011". هنا مثل هذا التبديل الصعب. وهناك ثلاثة منهم. وهي متصلة عبر موصلات XP1 و XP2 باللوحة الثانية مع MK. يقوم موصل XP3 بتوصيل LED وبعض الأغطية غير الملحومة الأخرى غير الضرورية ، والتي يوجد بها مكان على اللوحة. على الأرجح هذا هو مفتاح DPDT سداسي الشائع (مثل مربع واحد ، PB22E06 على سبيل المثال). ربما يكون اللوح عالميًا ، ولكن لا يتم استخدامه في هذا النموذج بالذات.
صورة للوحة (الرئيسية) الثانية.عند الاتصال بجهات الاتصال الخاصة بالمفاتيح ، لم أفهم على الفور مبدأ اتصالهم بمنافذ MK. على اللوحة الرئيسية ، تظهر على الفور 8 ترانزستورات SMD. اكتشف لاحقًا أن هذه الترانزستورات تستخدم كأزواج ديود مع أنود مشترك. تنتقل قواعدهم إلى منافذ MK ، ويذهب هواة الجمع والباعثون إلى تبديل جهات الاتصال. ثم شرحوا لي أنه في مثل هذه الحالات توجد أزواج ديود ، يرنون مثل الترانزستورات ، لكنهم ليسوا ترانزستورات. في المجموع ، لدينا 16 موصلًا يتركون أزواج الصمام الثنائي على اللوحة الثالثة. يأتي ثلاثة أرباعهم (12 قطعة) إلى جهات الاتصال المعلوماتية للمفاتيح (من ثلاثة إلى أربعة) ، و 4 تبقى مجانية. من السهل تخمين أنه تم توفيرها نظريًا للمفتاح الرابع ، وهو غير غائب إلى حد ما ، لأنه لا توجد مساحة له على اللوحة على الإطلاق. ومع ذلك ، لكي لا ننتهك منطق المنطق ، سأذكر هذا التحول الرابع الخيالي. يتم توصيل النهايتين المشتركتين للمفتاحين الثاني والثالث ، بالإضافة إلى المفتاحين الأول والرابع (لكن الرابع لا يوفر اللوحة) معًا في المسارات الرئيسية في اللوحة الرئيسية على موصلات التزاوج XS1 و XS2. يرتبط هذان الزوجان بمخرجات مجموعات الترانزستور. صنعت هاتان المجموعتان المتماثلتان على الترانزستورات BC857 و BC847 (هياكل مختلفة). ترتبط مدخلاتهم إلى عضو الكنيست. عند تطبيق "0" منطقي على إدخال هذه المجموعة ، سيكون الإخراج أيضًا "0" منطقي. أيضًا ، على اللوحة يوجد موصل XP2 للبرامج الثابتة MK ، متصل بأطراف SPI لواجهة MK ، وموصل XS3 لمصباح LED وموصل XP1 متصل بواسطة كابل باللوحة الأولى. يجب أن نتذكر أنه يمكن استخدام بعض منافذ MK لكل من SPI (للبرامج الثابتة) ولإخراج الإدخال العادي (العمل في الدائرة).
ينعكس كل ما سبق في المخططات التي رسمتها أولاً في المسودة ، ثم في SPlan. تقييمات العناصر الراديوية التي لم يتم تمييزها (على سبيل المثال ، مكثفات SMD) غير موجودة في الرسوم البيانية ، فهي ليست مهمة للغاية. أولاً ، سأقدم رسمًا تخطيطيًا للوحة الرئيسية واللوحة مع المستوطنين (توقيعات الصور أدناه).
مخطط اللوحة الرئيسية.مخطط اللوحة الثالثة مع المستوطنينضع في اعتبارك كيفية استجواب كل أداة ضبط. تفتح الإشارات من المنافذ PB4 و PB5 MK logic "0" الترانزستورات VT2 و VT1 ، تليها VT4 و VT3 ، وتوصيلها بجهات الاتصال المشتركة للحافلات صفر للمفاتيح رقم 1 ورقم 2-رقم 3 على التوالي. يحدث هذا بدوره. أولاً ، تأتي القيمة "0" المنطقية من PB4 (تم تعيين PB5 حتى الآن على "1" المنطقي) ، وتوصيل المحولين الثاني والثالث. في هذه الحالة ، يتم تسجيل قيم الإشارات بدورها بواسطة وحدة التحكم من منافذ الإدخال PB3 و PB2 و PB1 و PB0 عبر مجموعات الصمام الثنائي 2VD1 ... 2VD4 من المحولات الرابعة والمفقودة المفقودة. على الفور ، يتم إصلاح قيم الإشارات من المسامير PD6 و PD5 و PD4 و PD3 MK ، والتي تأتي الإشارات من المفتاحين الأول والثالث من خلال مجموعات الصمام الثنائي 2VD5 ... 2VD8. ولكن ، نظرًا لأن المفتاحين الثاني والثالث فقط متصلان بجهة اتصال مشتركة ، فإن الإشارات من المفتاح الثاني ستصل إلى المنافذ الأولى المحددة لـ MK ، وسيتم تجاهل المفتاح الرابع. وبالمثل ، ستأتي الإشارات من المفتاح الثالث إلى النصف الثاني من MK ، وسيتم تجاهل الأول. في هذه المرحلة ، تعرف وحدة التحكم في المواضع التي تم فيها تثبيت المفتاحين الثاني والثالث. بعد ذلك ، يتم تعيين PB4 على "الوحدة" ، وإيقاف المفتاحين الثاني والثالث ، ويتم تعيين PB5 على "صفر". في هذه الحالة ، يتم توصيل المفتاحين الأول والرابع المفقود من خلال نهاية مشتركة لـ "الحالة". يحدث استجوابهم تمامًا كما هو الحال في الحالة السابقة ، ولكن الآن سيتم تسجيل إشارات من مفاتيح التبديل التي تم تجاهلها في المرة الأخيرة. وبالتالي ، فإن جهاز التحكم يعرف معلومات الموقع لجميع المفاتيح. تشبه هذه العملية استطلاع لوحة مفاتيح المصفوفة ، ولكن في هذه الحالة مصفوفة من 4 طبقات بأبعاد 2 × 2 مع عنصر واحد مفقود.
المقاومات R8 ... R15 - عمليات السحب. على الرغم من أنه كان من الممكن "سحب" في عضو الكنيست نفسه. يوفر تردد الساعة الدقيق MK الكوارتز في 10 ميجا هرتز. R1 و C4 - MK إعادة الدائرة. لا يوجد شيء أكثر إثارة للاهتمام في هذا المنتدى.
صورة للوحة (الطاقة) الأولى من جانب العناصر.
صورة للوحة (الطاقة) الأولى من الخلف.دعنا ننتقل إلى مخطط اللوحة الأولى (الشكل أعلاه). بدا المخطط مثيرًا للاهتمام في بعض الأماكن وغير مفهوم.
مخطط أول لوحة (طاقة).C1C2 - لتقليل الجهد. R1 - لتفريغ ما سبق. بعد جسر الصمام الثنائي DB1 هما شوارد. لتعقيد الدائرة (أو الموثوقية) - نظام تثبيت الشلال VT3R6VD3 - VT7R12VD5. يشبه VD5 ترانزستور SMD باعث غير مستخدم. هذا يوفر جهد DC مستقر من 12V. التالي هو المنظم الخطي VR1 عند 5V. في نفس الوقت ، يتم إزالة الجهد من جسر الصمام الثنائي DB1 عبر الصمام الثنائي VD2 إلى مثبت VT1R3VD1 24V آخر. يتم توفير هذا الجهد إلى ملف مرحل EM Rel1 و R17. هذا الأخير غير واضح لماذا. في الطرف الآخر من R17 تأتي الإشارة من مجموعة الترانزستور VT9VT10. تشبه دائرة هذه المجموعة الدائرة الموجودة على اللوحة الرئيسية. تأتي إشارة من منفذ MK PB6 منفصل لإدخال مجموعة الترانزستور من خلال الموصل. لماذا هو مطلوب؟ لماذا توصيل المقاوم R17 بجهد 24 فولت؟ على الأرجح ، كانت هناك فكرة أنه بدلاً من المقاوم ، يمكنك وضع شيء آخر ، على سبيل المثال ، مصباح تحكم داخلي LED ، عن طريق برمجة منفذ PB6 MK بطريقة معينة. أو عقدة تبديل إضافية. ولكن ، على الرغم من ذلك ، هذا هراء ، كما قال مهندسي الراديو من معارفي ، بعد أن نظروا إلى لوحة التصميم. يتم توصيل الطرف الثاني من مرحل EM Rel1 بمجموعة ترانزستور مشابهة VT2VT5 ، وهو متصل بمنفذ MK PD0. تعمل الإشارة "0" من هذا المنفذ على تشغيل ترحيل EM. الشيء الأكثر إثارة للاهتمام هو أن LED الخارجي متصل ليس موازيًا لترحيل EM ، ولكن إلى فجوة باعث الترانزستور VT2 ، علاوة على ذلك ، من خلال اثنين من الموصلات (تمرير اللوحة الرئيسية). على الطرف ، يظل الرقمان 1 و 2 ، إذا حكمنا من خلال الملصق على التتابع ، فارغين. ولكن في الدائرة ، يتم توصيل جهة الاتصال رقم 2 بسلك مشترك ، ويتم تغذية جهة الاتصال رقم 1 لإدخال مجموعة الترانزستور VT6VT8. يتم إرسال الإخراج من هذه المجموعة إلى منفذ PD2 MK. في وقت لاحق ، قرأت في مواصفات نموذج الترحيل هذا أن جهات الاتصال هذه تستخدم للتحكم في نماذج الترحيل الأخرى ، التي تم تجميعها في نفس الحالة. النموذج الذي أفكر فيه لا ينطوي على التحكم ، ولكن يمكن تنفيذه عند كتابة برنامج على MK ، لأن المخطط يوفر هذه الفرصة. تحت التحكم قد يعني بداية ، إعادة تعيين (في "الزناد" وفي الوضع العادي) ، وكل ما يتبادر إلى الذهن. توضح مواصفات المرحلات الأخرى مخططات توقيتية توضح سلوك المرحلات بناءً على إشارة تحكم معينة. تقول أيضًا أدناه: بناءً على طلب العميل ، يمكننا تنفيذ أي رسم تخطيطي ممكن. وآخر لحظة في المخطط. تأتي إشارة التحكم هذه من المحطة رقم 1 أيضًا إلى ترانزستور VT4 عديم الفائدة ، مدعوم بجهد 12 فولت. هذا ، مرة أخرى ، من تعقيدات المخطط. أو ربما لا تزال هناك فكرة موضوعة؟ لم أتعمق كثيرا. سأكون سعيدا بأي تعليق.
يتم توقيع علامات أطراف الموصلات من خلال النقطة بعد اسم الموصل نفسه. تشير الأرقام الرومانية بعد رمز "~" إلى استنتاجات غير مجدية ومفقودة. هذه الأخيرة ليست قليلة في المخطط ، لكنني لن أتطرق إليها. أدناه أعطي رسومات لكل لوحة مع تعيينات الموصلات والاستنتاجات والعناصر الأساسية.
اسكتشات المجلس.خذ بعين الاعتبار وصف التعليمات البرمجية المصدر لبرنامج MK. البرنامج نفسه بسيط وقد كتبته في CVAVR لمدة 20 دقيقة. سأناقش الخوارزمية التي سيتم تنفيذ البرنامج من خلالها. قد تبدو هذه المعلومات مبتذلة تمامًا للبعض ، لكنها لن تكون غير ضرورية للمبتدئين. في نسختي من الخوارزمية ، سيتم استجواب الموقتات على مرحل الوقت ليس مرة واحدة ، ولكن بشكل مستمر. علاوة على ذلك ، سيستمر الاقتراع حتى بعد تعثر التتابع. سيسمح لك ذلك بإجراء تعديلات أثناء التنقل. ربما لا تتوافق هذه الخوارزمية مع الخوارزمية الأصلية لتشغيل هذا التتابع ، لكنني لست على دراية بالخوارزمية الأصلية. على مثال الخوارزمية المذكورة أعلاه سيتم النظر في وصف البرنامج.
كود المصدر لبرنامج C مع الوصف.نقوم بتوصيل المكتبة للعمل مع ATTiny2313 MK ، وكذلك مكتبة وظائف التأخير.
#include <tiny2313.h> #include <delay.h>
بعد ذلك ، نقوم باستبدال الماكرو الضروري ، وفقًا لتخصيصات الدوائر لمنافذ MK. تعتبر هذه الاستبدالات ملائمة لأنه في نص البرنامج بدلاً من ، على سبيل المثال ، PORTB.5 ، يمكنك كتابة getAD ، وهو أكثر ملاءمة. سيتم تفسير getAD التجميعي كـ PORTB.5. لذا ، فإن الاستبدال الأول هو مخرجات توصيل محولات نقطة الضبط الأولى (A) والرابعة (D). والثاني للثاني (B) والثالث (C). التالي هو استبدال لتمكين التتابع. وأخيرًا ، استبدال "Ctrl" غير المستخدم في البرنامج وفي النموذج قيد الدراسة. لا يمكنك كتابتها.
#define getAD PORTB.5 #define getBC PORTB.4 #define RL PORTD.0 #define Ctrl PIND.2
تُستخدم المتغيرات A و B و C لتخزين رقم موضع المفاتيح الثلاثة المقابلة وأخذ القيم من 0 إلى 9.
unsigned char A,B,C;
المتغير i - القيمة الحالية لرقم العاشرة من الدقيقة (6 ثوانٍ) ، أي عدد "علامة" الحد الأدنى للترحيل. المتغير t هو عدد أعشار الدقيقة (القراد) المستلمة من المعلم.
unsigned int i=0,t;
يتم عرض الوظيفة الرئيسية للبرنامج أدناه. في الأسطر الستة الأولى لم أفهم. يتم تشكيلها باستخدام الأداة المساعدة المساعدة CodeWizadAVR وترتبط بوجود الكوارتز الخارجي عند 10 ميجا هرتز.
void main(void) { #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif
يقوم الخطان التاليان بتكوين المنفذ B الخاص بـ MK الخاص بنا. وفقًا للمخطط ، وضعنا 4 بتات أقل للمدخلات ، والأكثر أهمية للإخراج (لا يتم استخدام PB7 ، و PB6 عديم الفائدة ، ولكن ، من الناحية النظرية ، الناتج). لذلك ، وفقًا لمبادئ تكوين MK ، التي لن أصفها ، نكتب الرقم 240 في سجل DDRB (F0 بالتدوين الست عشري). مستوى الإخراج الأولي هو "1" ، باستثناء PB7 غير الضرورية. وفقط في حالة ، دعنا نربط "مقاومات السحب" لـ MK بالمدخلات ، على الرغم من أنها مثبتة بالفعل في الدائرة. للقيام بذلك ، فلنقم بتعيين سجل PORTB على 7F بترميز سداسي عشري.
PORTB=0x7F; DDRB=0xF0;
تم تكوين المنفذ D بالطريقة نفسها. جميع الدبابيس على الإدخال ، باستثناء الاثنين السفليين. تتشابه "مقاومات السحب" في المدخلات ومستوى الإخراج الأولي "1" في الإخراج.
PORTD=0x7D; DDRD=0x03;
ترتبط الخطوط الخمسة التالية بتكوين أحد أجهزة ضبط الوقت MK. يتكون هذا المؤقت من ستة عشر رقمًا ، أي أنه يوفر درجة تصل إلى 2 ^ 16 = 65536. يتم تحديد تردد العد من خلال تردد ساعة MK ومعامل القسمة (واحد من خمسة محدد مسبقًا). في البرنامج الموصوف ، تقرر الاحتفاظ بحساب لمدة 6 ثوانٍ (الحد الأدنى من خطوة المهمة) ، ثم زيادة المتغير i بمقدار 1 وإعادة ضبط المؤقت إلى بداية العد. من أجل ضمان ما سبق ، تحتاج إلى أخذ الحد الأقصى لنسبة القسمة وهو 1024 والعد إلى 58594. من السهل حساب الأخير. تردد MK - 10،000،000 هرتز. باستخدام نسبة قسمة 1024 ، سيكون تردد المؤقت 10،000،000 / 1،024 = 9،765.625 هرتز ، وستكون الفترة 1،024،000 / 10،000،000 = 0.0001024 ثانية. في غضون 6 ثوانٍ ، سيتم تكديس 6 / 0.0001024 = 58593.75 من هذه الفترات. يقع هذا الرقم ضمن المؤقت 16 بت ، ولكنه ليس عددًا صحيحًا ، لذلك يجب عليك التقريب إلى 58594. في هذه الحالة ، سيكون خطأ تتابع الوقت غير مهم: 58594-58593.75 = 0.25 ؛ 0.25 * 0.0001024 = 0.0000256 ؛ 0.0000256 * 999 = 0.0255744. أي أنه لأقصى فترة زمنية ممكنة (99.9 دقيقة) ، فإن عدم دقة هذا المرحل الزمني سيكون تقريبًا 25.6 مللي ثانية ، وهو أمر مقبول تمامًا في الممارسة. بالمناسبة ، تنص الشركة المصنعة أيضًا على خطأ الجهاز ، ولن يكون خطأنا أسوأ. في سجل تكوين المؤقت TCCR1B ، اكتب القيمة 5. بدون الدخول في التفاصيل ، هذا يعني أن المؤقت يبدأ ومعامل القسمة هو 1024. في سجل TCNT1 ، نكتب القيمة 0. هذا السجل هو 16 بت وينقسم إلى نصفين 8 بت: الأصغر (L ) وكبار (ح). يتم كتابة القيمة إليها ، حيث سيستمر العد في العد. نحن بحاجة إلى العد من نقطة الصفر. القيمة OCR1A التي تسجل قبلها سيقرأ المؤقت ، وبعد ذلك سيستدعي وظيفة المقاطعة. في هذه اللحظة ، يتم مقاطعة الوظيفة الرئيسية للبرنامج ، ويتم تنفيذ الإجراءات المحددة في وظيفة هذا المقاطعة. بعد ممارسة المقاطعة ، ستستمر الوظيفة الرئيسية في التنفيذ. هذه القيمة ، كما قيل أعلاه ، تساوي 58594 (E4E2 بالتدوين الست عشري). نظرًا لأن سجل OCR1A ينقسم أيضًا إلى نصفين ، فإننا نكتب القيمة أعلاه في أجزاء.
TCCR1B=0x05; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0xE4; OCR1AL=0xE2;
يكوّن الخطان التاليان دقة المقاطعات بشكل صحيح (لا تدخل في التفاصيل).
TIMSK=0x40; #asm("sei")
في الدورة الرئيسية ، يتم تبديل مفاتيح الضبط باستمرار (وفقًا للخوارزمية في وصف الدائرة) باستخدام تأخيرات 30 مللي ثانية للتشغيل الصحيح والمستقر. من خلال تعيين القيمة "0" على PORTB.5 (getAD = 0) ، نقوم بإعداد المفتاح الأول. وترتبط استنتاجاته بالمنفذ D من MK للدبابيس 6 و 5 و 4 و 3. الاتجاه من الأصغر إلى الأكبر. بمعنى ، يتم توصيل البت منخفض الترتيب للمفتاح بت منخفض الترتيب نسبيًا (بت 3) للمنفذ MK. لذلك ، من أجل الحصول على معلومات من المنفذ D لـ MK حول موضع المفتاح الأول ، من الضروري إجراء تحويل أحادي إلى اليمين بثلاثة مواضع (PIND >> 3) ، وعكس البتات المستلمة مع العملية "~" (حيث ستظهر المعلومات في "0" ، وفقًا للمخطط) وإعادة تعيين البتات الأربعة غير الضرورية العالية لقيمة 8 بت المستلمة. تتم العملية الأخيرة عن طريق ضرب البت المنطقي للنتيجة بالرقم 15 (00001111 في التمثيل الثنائي). بعد هذه العملية ، سيتم تعيين قيمة الموضع للمحول الأول للمتغير A. بعد ذلك ، يتم إيقاف تشغيل المفتاح الأول ، ويتم إعداد المفتاحين الثاني والثالث. يتم أخذ القيمة من المحول الثاني إلى المتغير B من المنفذ B الخاص بـ MK بالمثل ، ولكن بدون عملية إزاحة ، نظرًا لأن أطراف هذا المحول متصلة بأدنى منفذ من المنفذ B الخاص بـ MK وكذلك بشكل مشترك. تتم إزالة المعلومات من المفتاح الثالث إلى المتغير C بنفس الطريقة التي تمت إزالتها من الأول. بعد ذلك ، المحولان الثاني والثالث (getBC = 1) "مغلقان" ويتم حساب القيمة المحددة (عدد أعشار الدقيقة) من المفاتيح الثلاثة في المتغير t.
while(1){ delay_ms(30); getAD=0; delay_ms(30); A=(~(PIND>>3)&15); delay_ms(30); getAD=1; getBC=0; delay_ms(30); B=(~PINB)&15; C=(~(PIND>>3)&15); delay_ms(30); getBC=1; t=100*A+10*B+C; } }
تحدث مقارنة هذا المتغير ومتغير الوقت الحقيقي المماثل i في وظيفة المقاطعة.
interrupt [TIM1_COMPA] void timer1_compa_isr(void){ i+=1; if(i>=t){ RL=0; }else{ RL=1; } TCNT1H=0x00; TCNT1L=0x00; }
إذا تجاوز المتغير الأخير القيمة المحددة ، فسيتم تشغيل "مرحل التنفيذ" (RL = 0) بمقدار "0". علاوة على ذلك ، سيتم إيقاف تشغيله إذا تم تعيين المفاتيح في نفس الوقت على قيمة أكبر من تلك التي تم تشغيلها في المتغير i. في نفس وظيفة المقاطعة ، يتم زيادة المتغير i بمقدار 1 ويتم إعادة ضبط المؤقت إلى 0.
تم شطب البتات FUSE من MK وتركت دون تغيير. حللتهم ، كل شيء على ما يرام هناك.

وبالتالي ، لم يتم نسخ مخطط الجهاز فحسب ، بل تم أيضًا تطوير برنامج MK ، والذي لا يختلف في الوظائف عن الملكية. علاوة على ذلك ، أصبح من الممكن على مستوى البرنامج تغيير مرنة للغاية (والأهم من ذلك ، مجانية) تغيير معلمات الوقت للجهاز واستخدام إخراج التحكم (رقم 1 على الجهاز) في وظائف مختلفة. البرنامج بسيط للغاية بحيث يمكن كتابته (بشكل أفضل) في مجمّع ، لكنني لا أقوم بذلك بعد.