جدول المحتويات:

الشروع في العمل مع Bascom AVR: 5 خطوات
الشروع في العمل مع Bascom AVR: 5 خطوات

فيديو: الشروع في العمل مع Bascom AVR: 5 خطوات

فيديو: الشروع في العمل مع Bascom AVR: 5 خطوات
فيديو: 1 BASCOM AVR انجاز مشروع ساعة حائط رقمية 2024, يوليو
Anonim
الشروع في العمل مع Bascom AVR
الشروع في العمل مع Bascom AVR

هذه بداية سلسلة لتعليمك برمجة متحكم AVR الخاص بك باستخدام Bascom AVR.

لماذا أفعل هذا.

يمكنك عمل معظم نماذج البرامج في هذه السلسلة باستخدام Arduino.

بعضها أسهل وبعضها أكثر صعوبة ، لكن في النهاية سيعمل كلاهما على نفس وحدة التحكم.

لكن طريقة البرمجة تختلف في كل بيئة تطوير. يحتاج Arduino إلى مكتبة لكل شيء باستثناء الوظائف الأساسية. تعمل Bascom أيضًا مع المكتبات ، لكن نادرًا ما أضطر إلى تضمين واحدة. باستخدام Arduino ، يتم إجراء جميع الإعدادات الخاصة بالأجهزة عبر المكتبات. لديك تأثير ضئيل للغاية على القوة الفعلية للميكروكونترولر. بدءًا من المؤقتات الموجودة في جهاز التحكم. مع اردوينو تحتاج إلى مكتبة مرة أخرى. إذا كان لديك عداد الوقت حتى يعمل ، فقد تكون مكتبة أخرى تتعارض مع إعداداتك. في bascom ، لديك وصول مجاني إلى الأجهزة الكاملة بما في ذلك قطاع التمهيد الذي يشغله اردوينو. على سبيل المثال ، تسألك بعض المكتبات في bascom عن جهاز ضبط الوقت الذي تريد استخدامه. من ناحية أخرى ، نظرًا لأن اردوينو يجعل من السهل جدًا إنشاء مكتبة بنفسك ، فإنها تجعلها بشكل طبيعي منصة حيث عادةً ما تحتوي الأجهزة الجديدة وأجهزة الاستشعار على مكتبة مباشرة. ما يرتبط غالبًا بالكثير من الأبحاث في bascom والوظائف التي عادة ما تقوم بها المكتبة يجب أن يتم دمجها بشق الأنفس في كود البرنامج. لكن الخبر السار هو أن مجتمع Bascom كبير جدًا أيضًا وهذا هو سبب وجود حل لكل فكرة.

لذلك ، يعتمد ذلك جزئيًا على المشروع المستخدم في بيئة التطوير وجزئيًا على خبرة الشخص البرمجي.

لكن لماذا أفعل هذه السلسلة. من ناحية يوفر الكثير من المال. لست مضطرًا لشراء لوحة اردوينو لكل مشروع. على سبيل المثال: يكلف Arduino uno بدون اسم حوالي 12 يورو ، تبلغ تكلفة وحدة التحكم الموجودة عليه 2.5 يورو فقط مع الحد الأدنى من الدوائر المطلوبة لوظيفة مستقرة ، وتكلف حوالي 4 يورو. من ناحية أخرى ، لديك مجموعة كاملة من شرائح AVR المدعومة المتاحة. atmegas 8 إلى 256 و attiny 8 إلى 2313 والعديد من أنواع xmega التي ليس لدي أي خبرة بشأنها. إذا كنت ترغب فقط في استخدام مؤازرة وجهاز استشعار بالموجات فوق الصوتية يمكنه التعرف على اليد ، على سبيل المثال ، ثم فتح غطاء سلة المهملات ، فيمكنك استخدام أصغر شريحة ممكنة. لذلك هناك العديد من الأسباب لتعلم لغة ثانية.

لذلك دعونا نبدأ

اللوازم

هذه قائمة بالحد الأدنى من الأجزاء المطلوبة للتشغيل المستقر للرقاقة والبرمجة.

اللوح للاختبار

Atmega 8-16PU (من الأفضل أن تشتري 2 أو 3 إذا قتلتهم عن طريق الخطأ)

7805 منظم جهد 5 فولت

10Kohm المقاوم

مكثف فيلم 100nF

10µF كهربائيا مكثف

مكثف كهربائيا 100 درجة فهرنهايت

بعض الأسلاك للوح

جهاز كمبيوتر يعمل بنظام Windows 7/8 / 8.1 / 10

ISP Programmer (سأستخدم هنا USBasp الذي يمكنك شرائه من أمازون مقابل القليل من المال)

Bascom AVR (يمكنك تنزيل نسخة تجريبية هنا. جميع الوظائف غير مقفلة ، ولكن يمكنك كتابة كود بحجم 4 كيلوبايت فقط وهو ما يكفي للكثير من التعليمات البرمجية).

الأجزاء الاختيارية:

LED مع مقاومات

مفاتيح الدفع

الأجزاء الخاصة بالمشروع

الخطوة 1: تثبيت Bascom و Setup

تركيب Bascom و Setup
تركيب Bascom و Setup
تركيب Bascom و Setup
تركيب Bascom و Setup
تركيب Bascom و Setup
تركيب Bascom و Setup

قم بتنزيل الملف وتثبيت Bascom AVR. قم بتثبيت جميع أجزائه بما في ذلك مربع الاختيار الأخير بعد التثبيت.

بعد ذلك ، قم بإعادة تشغيل جهاز الكمبيوتر الخاص بك وإلا فلن تبدأ bascom.

بعد إعادة التشغيل ابدأ باسكوم.

انتقل إلى خيارات -> مبرمج واختر USBasp من القائمة ، واحفظ الإعدادات وأغلق Bascom.

استخدم هذا البرنامج لتثبيت usbasp. بعد ذلك ، أعد تشغيل جهاز الكمبيوتر الخاص بك مرة أخرى. الآن قم بتوصيل USBasp بجهاز الكمبيوتر الخاص بك وابدأ تشغيل مدير الجهاز. يجب أن يظهر USBasp على أجهزة libusb.

Stat Bascom مرة أخرى وإنشاء ملف جديد. احفظه على جهاز الكمبيوتر الخاص بك واضغط على الزر F7 على لوحة المفاتيح.

يبدأ المترجم ويجمع البرنامج الفارغ. الآن يمكنك اختبار وظائف المبرمج.

اضغط على الزر F4 على لوحة المفاتيح لبدء نافذة المبرمج. انتقل الآن إلى chip -> حدد لبدء التفاعل. يجب أن تومض مصابيح LED من USBasp الآن. يجب أن تحصل على رسالة مثل لم يتمكن معرف الشريحة FFFFFF من قراءة الجهاز. هذه علامة جيدة على أن المبرمج يعمل ولكنه لم يعثر على شريحة.

الآن يمكننا البدء في بناء الدائرة الأولى.

الخطوة 2: دعنا نلقي نظرة فاحصة على الشريحة

دعونا نلقي نظرة فاحصة على الشريحة
دعونا نلقي نظرة فاحصة على الشريحة

إذا نظرت إلى pinout الخاص بالرقاقة ، يبدو أن الشريحة لا تشبه لوحة اردوينو. بالتأكيد ، نستخدم Atmega8 وعلى Arduino uno هو Atmega328. لكن Pinout هو نفسه تقريبًا ، لكن شريحة لوحة Arduino Uno لها وظائف أكثر. هنا أسماء الدبابيس. VCC و GND هما دبابيس إمداد الطاقة.

AREF و AVCC هما دبابيس للجهد المرجعي ومزود الطاقة للمحول التناظري إلى الرقمي.

PB 0-7 PC 0-6 PD 0-7 عبارة عن دبابيس إخراج إدخال للأغراض العامة مع إشغال متعدد.

إعادة تعيين دبوس هو ما يقوله الاسم. لإعادة تشغيل الشريحة. الخط الموجود أعلى اسم إعادة التعيين يعني النفي. هذا يعني ، لإعادة ضبط الشريحة ، يجب عليك سحبها إلى 0 فولت.

بالنسبة إلى الدبابيس التالية ، ستظهر تعليمات منفصلة قريبًا.

RXD TXD عبارة عن دبابيس للأجهزة للاتصال التسلسلي UART.

INT0 INT1 عبارة عن دبابيس مقاطعة الأجهزة

XCK / T0 UART مصدر الساعة / المؤقت / العداد 0 مصدر الساعة

دبابيس XTAL / TOSC مخصصة لبلورة خارجية تصل إلى 16 ميجاهرتز (طرز مختلفة تصل إلى 20 ميجاهرتز) / دبابيس كريستال لـ RTC داخلي

T1 مشابه لـ T0

دبابيس AIN مخصصة للمقارنة التناظرية

يشبه ICP1 T0 / T1

OC1A هو طرف إخراج الجهاز لقناة pwm timer1 A

حدد شريحة SS / OC2 دبوسًا لـ SPI / مثل OC1B لكن القناة B.

MOSI MISO SCK / OC2 هي دبابيس SPI للأجهزة ودبابيس البرمجة / مؤقت إخراج PWM 2

ADC0 إلى ADC5 هي المدخلات التناظرية

SDA SCL هي دبابيس I2C للأجهزة

يمكن أن تعمل الرقاقة العادية من 4 ، 5 فولت إلى 5 ، 5 فولت ، يمكن أن يعمل Atmega 8L بجهد أقل بكثير.

ترى حتى هذه الشريحة يمكنها فعل أكثر مما يبدو أن Arduino Uno لا يمكنه القيام به. لكن Arduino يمكنه فعل ذلك أيضًا ، ما عليك سوى برمجته.

الخطوة الثالثة: الدائرة الأولى

الدائرة الأولى
الدائرة الأولى
الدائرة الأولى
الدائرة الأولى

حان الوقت الآن لبناء دائرتك الأولى.

ما هي عادة الدائرة الأولى؟ حق! دعونا وميض LED.

LED متصل بـ PB0. يحتوي المقاوم الموجود بجانب الشريحة على 10 كيلو أوم.

يحتوي المقاوم الموجود بجانب LED على 470 أوم.

يمكنك الآن توصيل USBasp بـ Atmega كما هو موضح في الصورة.

ولكن قبل تشغيل الطاقة ، دعنا نكتب البرنامج.

الخطوة 4: اكتب البرنامج الأول

اكتب البرنامج الأول
اكتب البرنامج الأول

قم بإنشاء ملف جديد في Bascom واكتب النص التالي.

$ regfile "m8def.dat"

$ Crystal = 1000000 منفذ تكوين b.0 = إخراج تنفيذ portb.0 = 1 انتظر 1 portb.0 = 0 انتظر 1 حلقة

بعد ذلك قم بتجميعها عن طريق الضغط على F7 على لوحة المفاتيح.

الآن يمكننا برمجة الشريحة بالضغط على F4. تظهر نافذة المبرمج. حان الوقت الآن لتشغيل الطاقة من اللوح. يجب عليك تطبيق ما بين 6 و 12 فولت.

اذهب الآن إلى الرقاقة -> البرمجة التلقائية. إذا تم إغلاق نافذة المبرمج تلقائيًا ، كانت البرمجة ناجحة.

يجب أن يومض مؤشر LED بتردد ثانية واحدة.

الآن ألق نظرة فاحصة على البرنامج لفهم بناء الجملة.

$ regfile "m8def.dat"

الكريستال = 1000000 دولار

باستخدام $ regfile ، نخبر المترجم بنوع الشريحة المستخدمة واسم شريحة Arduino سيكون "m328pdef.dat"

مع الكريستال دولار نقول له سرعة وحدة المعالجة المركزية حوالي 1 ميجا هرتز.

التكوين portb.0 = الإخراج

هذا يعني أن PB0 يجب أن يعمل كإخراج.

بالمناسبة ، الاختصار PB0 يعني المنفذ B بت 0 ، وتنقسم الشريحة إلى عدة منافذ. يتم إعطاء كل منفذ حرفًا لتحديد الهوية بشكل واضح. وكل منفذ قليلاً من 0 إلى 7. على سبيل المثال ، يمكنني كتابة بايت كامل في سجل إخراج المنفذ ، والذي سيتم إخراجه عبر دبابيس المنفذ الفردية.

فعل

حلقة

هذا ما تعنيه عبارة الحلقة الفارغة في Arduino. كل ما بين هذين الأمرين سوف يتكرر إلى الأبد. (مع بعض الاستثناءات ولكن لاحقًا المزيد حول ذلك)

المنفذ 0 = 1

انتظر 1 portb.0 = 0 انتظر 1

هنا نمنح وميض الصمام.

Portb.0 = 1 يخبر الرقاقة بتبديل الخرج PB0 إلى 5V

أمر الانتظار 1 دع الشريحة تنتظر ثانية واحدة. إذا كنت ترغب في تبديل مؤشر LED بشكل أسرع ، فعليك استبدال أمر الانتظار بـ waitms الآن ، يمكنك إدخال بعض الوقت الآن بالمللي ثانية على سبيل المثال waitms 500. (waitus يعني الانتظار في نانوثانية)

Portb.0 = 0 يخبر الرقاقة بتبديل الناتج PB0 إلى 0V.

الخطوة 5: قم بإضافة زر لاستخدام المدخلات

أضف زرًا لاستخدام المدخلات
أضف زرًا لاستخدام المدخلات

الآن نضيف زرًا لإضاءة المصباح في حالة الضغط على الزر.

أدخل الزر كما هو موضح في الصورة.

اكتب الآن في برنامج المتابعة.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = منفذ تهيئة المخرجات.7 = Portd.7 = 1 do if pind.7 = 0 ثم portb.0 = 1 else portb.0 = 0 حلقة

إذا قمت بتحميل هذا البرنامج على الشريحة ، فإن المصباح يضيء فقط عند الضغط على الزر. لكن لماذا؟

يبدأ البرنامج تمامًا مثل آخر برنامج حتى

التكوين portd.7 = المدخلات. هذا يعني أن الدبوس PD7 المتصل بالزر يعمل كمدخل.

Portd.7 = 1 لا يحول الدبوس إلى المستوى العالي ، لكنه ينشط مقاومة السحب الداخلية لـ Atmega.

إذا كانت الحالة تبدو غريبة بعض الشيء إذا كنت معتادًا على اردوينو.

إذا كنت تستخدم عبارة if ، فيجب عليك استخدام عبارة "then". في هذا النموذج ، يتم استخدام عبارة if لعمليات الأمر الفردي. إذا كنت ترغب في استخدام المزيد من الأوامر ، يجب عليك كتابتها على هذا النحو.

إذا كان pind.7 = 0 ثم

portb.0 = 1 بعض الأكواد ، بعض الأكواد الأخرى ، portb.0 = 0 end if

لهذا الاستخدام لبيان if ، يجب عليك استخدام عبارة "end if" في النهاية.

ما الذي لا يزال مهمًا. ربما كنت قد رأيت ذلك بالفعل. لا يتم الاستعلام عن المدخلات باستخدام portx.x ، ولكن باستخدام pinx.x ، يمكنك تذكر ذلك بسهولة. المخرجات لها "o" (منفذ) في الكلمة والمدخلات لها "i" (دبوس).

الآن حان دورك لتلعب قليلاً.

سيأتي التعليمات التالية قريبًا (العبارات القياسية مثل while ، و select case ، و for ، و variables.)

إذا كنت تحب تعليمي وتريد المزيد ، فأخبرني في التعليقات.

موصى به: