برمجها http://www.isnaha.com Wed, 23 Aug 2017 07:51:23 +0000 Joomla! - Open Source Content Management ar-aa برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – القاموس http://www.isnaha.com/isnaha_new/برمجها/item/1051-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-القاموس http://www.isnaha.com/isnaha_new/برمجها/item/1051-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-القاموس

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR القاموس

هذا المقال يجمع المصطلحات العلمية التي وردت في هذه السلسلة لتكون عونا للباحثين في هذا الميدان باللغات الأجنبية.

  


قاموس المصطلحات

العربية

الإنجليزية

الفرنسية

الأنظمة المدمجة

Embedded Systems

Système embarqué

حاسب مصغر

Minicomputer

Mini-ordinateur

شريحة واحدة

Single Chip

Single Chip

المعالجات الدقيقة

Microprocessors

Microprocesseur

المتحكِّم المصغر

Microcontroller

Microcontroleur

المصفوفات الحقلية القابلة للبرمجة

Field-programmable gate arrays

réseau de portes programmables in situ

لوحة العدادات

Dashboard

Tableau de bord

وحدة المعالجة المركزية

Processing Unit

Unité de traitement

ترجمة

Compile

Compilation

بنية النظام المدمج

Embedded System Architecture

Architecture de Système embarqué

الحواسب العامة

Personal Computers

Ordinateur Personel

العوامل المؤثرة

Requirements Affect

 

سعة المعالجة

Processing Power

 

الناقل الداخلي

Data-Bus

Bus de données

زوج

Bit

Bit

ثُمن

Byte

Octet

حجم الذاكرة

Memory Space

Espace de mémoire

استهلاك الطاقة

Power Consumption

Consommation

المعالجات متعددة النوى

Multi-core Processors

Processeurs multi-core

كلفة التطوير

Development Cost

Coût de développement

كمية الإنتاج

Number of Units

Nombre d'unités

حياة المنتج

Lifetime

Durée de vie

الوثوقية

Reliability

Fiabilité

المعالجة في الزمن الحقيقي

Real-time Processing

Traitement en temps réel

العناصر المنطقية القابلة للبرمجة

Programmable logic device (PLD)

circuit logique programmable

الدارات المتكاملة ذات التطبيقات الخاصة

Application-specific integrated circuit

circuit intégré propre à une application

معالجات الإشارة الرقمية

Digital signal processing

Traitement numérique du signal

العمل المتزامن (المتوازي)

Parallelism

Parallélisme

العمل التسلسلي (المتتالي)

Serial

Sériel

أنصاف النواقل

Semiconductors

Semi-conducteurs

المفاتيح الميكانيكية

Electromechanical

Électromécanique

الصمامات المفرغة

Vacuum Tubes

Tube électronique

ذاكرة وسيطة

Cache memory

Mémoire cache

الدارات المتكاملة القياسية

Standard Logic ICs

 

الدارات المتكاملة ذات التطبيقات العامة

General Purposes ICs

 

الدارات المتكاملة ذات التطبيقات الخاصة

Special Purposes ICs

 

وظائف محددة

Fixed Functionality

Fonctionnalité fixe

   وحدة معالجة الرسوميات

Graphics Processing Unit (GPU)

processeur graphique

الفاصلة العاملة

Floating-point

virgule flottante

مجموعة أوامر الحاسب المعقدة

Complex Instruction Set Computer

microprocesseur à jeu d'instruction étendu

زمن تسويق المنتج

Time to Market

 

مجموعة أوامر الحاسب المختصرة

Reduced Instruction Set Computer

microprocesseur à jeu d'instruction réduit

المكدس

Stack

Pile

المسجل

Register

Registre

المجمع

Assembler

Assembleur

لغة التجميع

Assembly language

Assembleur

لغات البرمجة منخفضة المستوى

Low-level Programming Languages

Langages de bas niveau

لغات البرمجة عالية المستوى - الوظيفية

High-level F. Programming Language

Langages F. de haut niveau

لغات البرمجة عالية المستوى - الإجرائية

High-level P. Programming Languages

Langages P. de haut niveau

لغات البرمجة الرسومية

Graphical Programming Languages

Langage de Programmation graphique

الشركات المنطلقة حديثاً

Startups

Startups

الريادة في التكنولوجيا

Technology leadership

Leadership technologique

المصادر المنطقية الأساسية

Logic fabric resources

 

مصادر إدارة تردد عمل الشريحة

Clock management resources

Ressources de gestion d'horloge

مصادر الذاكرة

Memory resources

Ressources mémoire

شكل الشريحة الفيزيائي

Packaging

Emballage

إمكانية وجود بدائل للشريحة

Common footprint component migration options

Options de migration de composants d'empreinte commune

واجهة الربط مع المحيطيات

Interface requirements

 

بيئة المحاكاة

The Simulation Environment

L'environnement de simulation

برمجة المتحكم دون فصله عن النظام

In-system Programming

Programmation in-situ

تكويد

Package

Package

نواة

Core

Noyau

وحدة الحساب والمنطق

Arithmetic Logic Unit

Unité Arithmétique et Logique

الهزاز

Oscillator

Quartz

ذاكرة البيانات

Data Memory

Mémoire de données

ذاكرة البرنامج

Flash Memory

Mémoire Flash

ذاكرة المعطيات

EEPROM

EEPROM

برنامج الإقلاع

Boot Program

Programme de démarrage

برنامج التطبيق

Application Program

 

عداد برنامج

PC

 

ذاكرة وصول عشوائي

Static Random Access Memory

mémoire statique

مصادر التوقيت

Clock Sources

Sources d'horloge

هزاز كريستالي/سيراميكي خارجي

External Crystal/Ceramic Resonator

résonateur cristal/céramique extern

هزاز كريستالي خارجي ذو تردد منخفض

External Low-frequency Crystal

Cristal extern à basse fréquence

هزاز RC خارجي

External RC Oscillator

Quartz RC extern

هزاز RC داخلي معاير

Calibrated Internal RC Oscillator

Quartz RC intern calibré

توقيت خارجي

External Clock

horloge externe

الوثيقة الفنية

Datasheet

Fiche technique

واجهة اختبار

JTAG

JTAG

نافذة اتصال تسلسلية ثنائية

I2C

I2C

نافذتي اتصال تسلسلي قابلة للبرمجة

USART

USART

نافذة اتصال تسلسلية بنمطي عمل قائد/تابع

SPI

SPI

نمط فعال

Active

Actif

نمط البطالة

Idle

Idle

مخطط البنية الداخلية

Block Diagram

 

جزء الإقلاع

Bootloader

Amorçage

الأقطاب

Pins

Pins

التوجيهات

Directives

Directives

الإعدادات

Configurations

Configurations

المتغيرات (المتحولات)

Variables

Variables

البرنامج الفرعية

Sub-Routines

Sous-routines

الإرسال إلى المبرمجة

Send to programmer

Envoyer à programmateur

أمر (تعليمة)

Instruction

Instruction

برنامج (كود)

Code

Code

الحمل

load

Charger

منبع

source

Source

مصرف

Sink

Puis

مسجل التحكم باتجاه المعطيات للبوابة

Data Direction Register (DDRx)

Registre de direction de données

مسجل الخرج للمعطيات

Data Output Register (PORTx)

Registre de sortie de données

مسجل الدخل للمعطيات

Data Input Register (PINx)

Registre d'entrée de données

مفاتيح التحكم

Control Switches

interrupteurs de commande

حالة القطع

Off state

État Off

الحالة الفعالة

On active state

État Actif On

حالة الإشباع

On saturate state

État sature On

المُرَحّل (الوصل الميكانيكي)

Relay

Relais

تيار التفريغ العكسي

Electromotive Force

Force électromotrice

وشيعة (ملف)

Coil

Bobine

مقاومة الرفع

Pull-up Resistor

résistance de tirage

مقاومة السحب

Pull-down Resistor

résistance de rappel

الإزاحة

Shifting

Déplacement

التدوير

Rotating

Rotation

صمام ضوئي

LED

LED

البوابة

Port

Port

قاطعة

Interrupt

Interrupteur

قاطعة برمجية

Software Interrupt

Interruption

الحافة الصاعدة

Rising Edge

 

مسجل التحكم بنمط عمل القاطعة الخارجية

MCU Control Register

Registre de Controle de MCU

مسجل التحكم بالقواطع الخارجية

Global Interrupt Mask Register (GICR)

 

مسجل أعلام القواطع الخارجية

Global Interrupt Flag Register (GIFR)

 

الحافة الصاعدة

Rising Edge

 

الحافة الهابطة

Falling Edge

 

مستوى الحافة

Low Level

Niveau bas

تغير المستوى

Level Change

Changement de niveau

لوحة مفاتيح مصفوفية

Matrix-Keypad

Matrix-Keypad

شاشة الإظهار الكريستالية المحرفية

Character Liquid Crystal Display (LCD)

LCD

الإظهار

Display

Affichage

البلورات السائلة

Liquid Crystal

Cristal liquide

دارات قيادة

Drivers

Drivers

جهاز التحكم بالأشعة تحت الحمراء

IR Remote Control

Télécommande IR

طول العنوان

Address Length

Longueur d'adresse

طول أمر التحكم

Command Length

Longueur de commande

تردد الناقل

Carrier Frequency

Fréquence porteuse

زمن نبضة بداية الإرسال

Start Bit

Start Bit

زمن نبضة الإرسال للمستوى المنطقي "1"

High-Bit-Time

High-Bit-Time

زمن نبضة الإرسال للمستوى المنطقي "0"

Low-Bit-Time

Low-Bit-Time

فاك التشفير

demodulator

Démodulateur

زوج التحكم

CHECK bit, Control Bit or Toggle Bit

CHECK bit, Control Bit ou Toggle Bit

مفتاح ضوئي

Optical switch

Interrupteur optique

الإتصالات المتتالية

Serial Communications

Communications série

الإتصالات المتوازية

Parallel Communications

Communications parallèles

متزامن

Synchronous

Synchrone

لامتزامن

Asynchronous

Asynchrone

الإرسال أحادي الاتجاه

Half-Duplex

Half-Duplex

الإرسال ثنائي الاتجاه

Full-Duplex

Full-Duplex

خانة الإيجابية

Parity Bit

Bit de parité

زوجي

Even

paire

فردي

Odd

impaire

معدل سرعة النقل

Baud Rate

 

مخطط التوصيل

Schematic

Schéma

نمط الآسكي

Ascii Mode

Mode ASCII

النمط الثنائي

BIN Mode

Mode BIN

عتاد الكتروني

Hardware

Matériel

ترانزستور ضوئي

Phototransistor

Phototransistor

العنوان

Address

Adresse

الإيجابية

Parity

Parité

متعدد السيليكون

Polysilicon

Polysilicium

فجوة التصميم

Design Gap

 

تجريد عالي المستوى

high-level abstraction

abstraction de haut niveau

البرمجة الضمنية

In-System Programming

Programmation in-situ

 


قاموس الإختصارات

المختصر

الأصل

العربية

ES

Embedded Systems

الأنظمة المدمجة

MCU

Micro-controller

المتحكِّم المصغر

FPGA

Field-programmable gate arrays

المصفوفات الحقلية القابلة للبرمجة

PC

Personal Computer

الحواسب العامة

PLD

Programmable logic device

العناصر المنطقية القابلة للبرمجة

ASIC

Application-specific integrated circuit

الدارات المتكاملة ذات التطبيقات الخاصة

DSP

Digital signal processing

معالجات الإشارة الرقمية

GPU

Graphics Processing Unit

   وحدة معالجة الرسوميات GPU

CISC

Complex Instruction Set Computer

مجموعة أوامر الحاسب المعقدة

RISC

Reduced Instruction Set Computer

مجموعة أوامر الحاسب المختصرة

ALU

Arithmetic Logic Unit

وحدة الحساب والمنطق

JTAG

Joint Test Action Group

واجهة اختبار

I2C

Inter-Integrated Circuit

نافذة اتصال تسلسلية ثنائية

USART

universal synchronous/asynchronous receiver/transmitter

نافذتي اتصال تسلسلي قابلة للبرمجة

SPI

Serial Peripheral Interface

نافذة اتصال تسلسلية بنمطي عمل قائد/تابع

DDR

Data Direction Register

مسجل التحكم باتجاه المعطيات للبوابة

LED

light-emitting diode

صمام ضوئي

MCUCR

MCU Control Register

مسجل التحكم بنمط عمل القاطعة الخارجية

GICR

Global Interrupt Mask Register

مسجل التحكم بالقواطع الخارجية

GIFR

Global Interrupt Flag Register

مسجل أعلام القواطع الخارجية

IR-RC

IR Remote Control

جهاز التحكم بالأشعة تحت الحمراء

SSI

Small-scale Integration

إدماج في مستوى صغير

MSI

Medium-scale Integration

إدماج في مستوى متوسط

LSI

Large-scale Integration

إدماج في مستوى كبير

VLSI

Very-large-scale Integration

إدماج في مستوى كبير جدا

ULSI

Ultra-large-scale Integration

إدماج في مستوى جد كبير

GSI

Giga-scale Integration

إدماج في مستوى ضخم

GPU

Graphics Processing Unit

وحدة المعالجة الرسومية

CBEA

Cell Broadband Engine Architecture

هندسة محرك خلية النطاقي العريض

EDA

Electronic Design Automation

أتمتة التصميم الإلكتروني

 


قاموس الضبط

المصطلح القديم

المصطلح الجديد

المتحولات

المتغيرات

الريليه

المُرَحّل

ملف

وشيعة

ثنائي ضوئي

صمام ضوئي

مقاطعة (مقاطعات)

قاطعة (قواطع)

شعاع

متجهة

الجبهة

الحافة

التسلسلي

المتتالي

الراديوية

المذياعية

بت

زوج

بايت

ثمن

حاسوب عام

حاسوب شخصي

الأعظمي

القصوي

اعتبارات

نطاقات

متفرعة

متوازية

الأمواج

الموجات

فولت

فولط

 


]]>
walidbalid81@gmail.com (وليد بليد) البرمجة في bascom-AVRه Mon, 16 Sep 2013 00:00:00 +0000
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 6 http://www.isnaha.com/isnaha_new/برمجها/item/1050-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-6 http://www.isnaha.com/isnaha_new/برمجها/item/1050-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-6

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 6

هذه المحاضرة تشرح مبادئ الاتصالات المتتالية والنافذة المتتالية اللامتزانة UART. ثم برمجة النافذة UART في تطبيقات عدة منها: ربط متحكمات في شبكة سلكية، إرسال البيانات لاسلكياً باستخدام الأشعة تحت الحمراء، إرسال البيانات لاسلكياً باستخدام الليزر، إرسال البيانات لاسلكياً باستخدام الترددات المذياعية، وأخيراً ربط موديول GPS مع النافذة UART واستحصال الوقت والتاريخ والإحداثيات الجغرافية.

 


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_08_PPTX

Session_08_codes


محاضرة المقال

{youtube}Fao48Diqvoc{/youtube}


برتوكولات الاتصال

تتفرع بروتوكولات الاتصال بشكل عام إلى فرعين رئيسيين:

  • اتصالات متوازية:يختصر استخدم الاتصالات المتوازية من أجل نقل البيانات بسرعات عالية جداً ولمسافات قصيرة جداً، والسبب في محدودية المسافة هو تشكل السعات الطفيلية والضجيج العالي على مسارات خطوط النقل المتوازية عند ازدياد طول الناقل، كما أن حجم الناقل سيكون كبيرا وبالتالي فإن كلفة الناقل ستكون كبيرة أيضاً.

  • اتصالات متتالية:تستخدم الاتصالات المتتالية على نطاق أوسع بكثير من الإتصالات المتوازية وتمتاز بمناعة عالية ضد الضجيج ونقل لمسافات بعيدة، كما أن حجم الناقل سيكون صغيرا وكلفته ضئيلة نسبياً مقارنة مع الناقل المتوازي.

الإتصالات المتوازية
Parallel Communications

الإتصالات المتتالية
Serial Communications

المـتزامن
Synchronous

اللامتزمنة
Asynchronous

LPT

ISA

EISA

VESA

ATA

SCSI

PCI

PCMCIA

IEEE-1284

IEEE-488

I2C

SPI

PS2

Morse codetelegraphy

RS-232 (COM Port)

RS-423

RS-485

Universal Serial Bus (USB)

FireWire

Ethernet

Fiber Channel

InfiniBand

MIDI

DMX512

Serial ATA

SpaceWire

PCI Express

SONET and SDH

T-1, E-1

مفاهيم أساسية في الاتصالات المتتالية غير المتزامنة

أولاً: الاتصالات المتواقتة (المتزامنة)

يكون فيها بروتوكول الإرسال مؤلف من خطين على الأقل أحدهما خط التزامن (clock)، وبالتالي فإن سرعة إرسال البيانات تتحدد من خلال تردد إشارة التزامن بحيث يتم إرسال كل زوج من الأزواج متتالياً عند جبهة التزامن (صاعدة أو هابطة).

الشكل 1: إشارة البيانات وإشارة التزامن في بروتوكول إرسال متزامن

ملاحظة: بازدياد المسافة بين الطرفيتين فإنه يحصل انحراف\انزياح بين إشارة التواقت وبين إشارة البيانات مما يؤدي إلى فشل عملية النقل.

ثانياً: اتصالات غير متواقتة (غير متزامنة):

لا تحوي على خط تزامن وإنما يتم بدء عملية الإرسال بإرسال زوج بدء الإرسال (Start Bit) والذي بدوره يعلم المستقبل أن الذي يليه هو ثمن واحد من البيانات، وبعدها يتم إرسال الثمن المطلوب وتنتهي عملية إرسال الثمن بإرسال زوج التوقف (Stop Bit) والذي بدوره يعلم المستقبل أن عملية إرسال الثمن قد انتهت ويجب تخزين الثمن في مسجل نافذة الاستقبال والتحضر لاستقبال الثمن التالي إن وجد.

الشكل2: إشارة البيانات في بروتوكول إرسال غير متزامن

ملاحظة: بخلاف الاتصالات المتواقتة فإن ازدياد المسافة بين الطرفيتين لا يؤدي إلى فشل عملية النقل، كما أن هذه الطريقة أقل كلفة وأبسط بنية وأسهل برمجة.

الإرسال أحادي الاتجاه (Half-Duplex):تتم فيه عملية الاتصال بين الطرفيتين باتجاه واحد فقط في نفس اللحظة الزمنية، فإما أن تكون في حالة إرسال أو استقبال.

الإرسال ثنائي الاتجاه (Full-Duplex):يمكن أن تكون الوحدة الطرفية في حالة إرسال واستقبال في نفس اللحظة الزمنية.

خانة الإيجابية (Parity Bit):خانة يضيفها المرسل ويستخدمها المستقبل لضمان عدم ضياع المعلومات، وتتعلق خانة الإيجابية بعدد الواحدات في الثمن المرسل.

الشكل 3: توضع خانة الإيجابية في إشارة البيانات لبروتوكول إرسال غير متزامن

في حال كون خانة الإيجابية “Even” فإن هذه الخانة تملك القيمة “0” إذا كان عدد الواحدات في الثمن المرسل زوجي وإلا فستصبح “1”. الأمثلة التالية توضح ذلك.

10110010 > Parity Bit = 0 | 10110110 > Parity Bit = 1

في حال كون خانة الإيجابية “Odd” فإن هذه الخانة تملك القيمة “0” إذا كان عدد الواحدات في الثمن المرسل فردي وإلا فستصبح “1”. الأمثلة التالية توضح ذلك.

10110010 > Parity Bit = 1 | 10110110 > Parity Bit = 0

عدد الأزواج لكل محرف (N):يتم فيها التصريح عن عدد الأزواج لبايت البيانات التي سيتم إرسالها، فإما أن تكون 5, 6, 7 or 8bit، ولكن يجب الانتباه مثلاً: في حال إرسال N=7bit فإن قيم العظمى ASCII=127.

الشكل 4: مثال عن عدد أزواج مختلف 7|8 في إشارتي بيانات لبروتوكول إرسال غير متزامن

خانة زوج التوقف (Stop Bit): يعلم المرسل من خلالها المستقبل بانتهاء عملية الإرسال.1, 1.5 أو 2 زوج.

الشكل 5: توضع خانة زوج التوقف في نهاية إشارة البيانات لبروتوكول إرسال غير متزامن

معدل سرعة النقل (Baud Rate):وهو عدد الأزواج المرسلة خلال ثانية واحد على خط اتصال متتالي، وهناك قيم قياسية متعارف عليها لمعدلات النقل وهي:

300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, إلخ…

إن الزمن اللازم لإرسال زوج واحد يعطى بالعلاقة التالية:

BitTime = 1Baud Rate

إن عدد البايتات التي يمكن إرسالها خلال ثانية واحدة يمكن حسابها من العلاقة التالية:

BytesNum / 1sec = Baud Rate8


النافذة المتتالية UART

تعتبر هذه النافذة من أكثر نوافذ الاتصال المتتالي استخداماً في الأنظمة الرقمية ومبدأ عملها وكذلك بروتوكولها متوافق تماماً مع البروتوكول RS232 إلا أن المستويات المنطقية فيها وفق المنطق TTL، وتتميز بسهولة وبساطة استخدامها بالإضافة إلى الكلفة المنخفضة للربط بين متحكمين (MCU-MCU)، أو الربط بين حاسب ومتحكم (MCU-PC).

ملاحظةالكلمة UART هي اختصار لـ Universal Asynchronous Receiver and Transmitter Interface

الشكل 6:الربط بين متحكمين من خلال النافذة UART

تملك النافذة المتتالية في متحكمات العائلة AVR على ميزات عديدة وهي تعمل في نمطين مستقلين:

  • UART: نافذة متتالية عامة للإرسال والاستقبال اللامتزامن عبر القطبين TXD وRXD.

  • USART: نافذة متتالية عامة للإرسال والاستقبال المتزامن عبر القطبين TXD وRXD بالإضافة إلى القطب XCK كقطب تزامن.


بنية إطار البيانات للنافذة UART

إن تشكيل إطار البيانات المرسلة أو المستقبلة للنافذة UART مشابه تماماً لبنية إطار البروتوكول RS232 باختلاف وحيد وهو المستوى المنطقي المعكوس.

الشكل 7: بنية إطار البيانات المرسلة أو المستقبلة للنافذة UART

IDLE: لا توجد إرسالات على خط الإتصال (RxD أو TxD)، خـط IDLE مرتفع.

  • St: زوج بدء الإرسال، دائما منخفض.

  • Databits: من 0 إلى 8.

  • Sp: زوج التوقف، دائما مرتفع.

  • P: خانة الإيجابية (يمكن أن تكون فردية أو زوجية)

حساب قيمة مسجل معدل النقل

(Baud Rate Register)

من أجل تحديد معدل سرعة النقل للنافذة المتتالية يتم شحن المسجل UBRR بقيمة تحسب وفقاً للعلاقات في الشكل8.

الشكل 8: معادلات حساب قيمة المسجل UBRR الموافقة لمعدل النقل

حيث أنّ: UBRR هي محتوى المسجل UBRRH و UBRR وتتراوح من 0 إلى 4095.

مثال: أحسب قيمة المسجل UBRR من أجل تردد هزاز كريستالي 1Mhz ومعدل نقل 9600bps ونمط عمل عام غير متواقت.

UBRRH,L= fOSC / (16 × Baud) - 1= 1000000 / (16 × 9600) - 1= 5.510416 ≈ 6

كما هو ملاحظ فإن القيمة غير دقيقة أي أن هناك خطأ في قيمة معدل النقل ولن تكون القيمة تماماً 9600، وبالتالي إذا كانت دارة المستقبل تعتمد تردد عمل مختلف وكان الخطأ مختلف فإنه ربما يحصل تشوه في البيانات بسبب عدم التزامن الدقيق في معدل النقل.

لذلك يوصى بمعدلات نقل قياسية وترددات هزازات كريستالية قياسية لتفادي الأخطاء الكبيرة في حساب معدلات النقل، بحيث أن الخطأ يجب أن لا يتجاوز 0.5% من أجل الحصول على وثوقية عمل عالية؛ لكن يمكن أن يعمل النظام بدون مشاكل حتى خطأ 5%. يمكن حساب الخطأ من العلاقة التالية:

ERROR[%] = (BaudRateCloseMatch / BaudRateCalculated - 1) × 100%

مثال: من أجل نفس المثال السابق، نعوض في العلاقة السابقة:

ERROR[%] = (9600 / 8928.571 - 1) × 100%= 7.52%

ملاحظة: من أجل تفادي مشكلة أخطاء معدل النقل قم باختيار تردد الهزاز الكريستالي بحيث يكون من مضاعفات معدل النقل.


تحقيق اتصال بين طرفيتين في برتوكول UART

هناك بارامترات يجب تحديدها بين المرسل والمستقبل قبل إرسال البيانات في الاتصالات غير المتواقتة وهي:

  • تحديد نمط الإرسال: أحادي الاتجاه أو ثنائي الاتجاه.

  • تحديد عدد الأزواج لكل محرف: 6 أو 7 أو 8 bit.

  • تحديد معدل سرعة الإرسال.

  • تحديد استخدام أو عدم استخدام خانة فحص الإيجابية، وفي حال الاستخدام يجب تحديد نمط فحص خانة الإيجابية (زوجية أو فردية).

  • تحديد عدد أزواج التوقف (1, 1.5 أو 2).

عموماً، فإنه من أجل تحقيق اتصال بين طرفيتين بدون مصافحة يكفي توصيل قطب الإرسال “TxDوالاستقبال “RxDعلى التوازي المتعاكس كما في الشكل التالي:

الشكل 9: تحقيق اتصال بين طرفيتين من خلال النافذة UART

نمطي البيانات في الاتصالات المتتالية

1- نمط الآسكي (Ascii Mode): يتم تمثيل كل خانة على أنها محرف مستقل ويتم إرسال قيمة الآسكي لهذا المحرف. مثال: التعليمة “Print 123ستقوم بإرسال الأرقام (1,2,3) على أنها محارف، وبالتالي سترسل الآسكي لكل منها [49][50][51] – بالنتيجة سترسل ثلاث بايتات.

2- النمط الثنائي (BIN Mode): يتم تمثيل البيانات على أنها قيمة عديدة وليس محرفية ويتم إرسال القيمة الثنائية لهذا العدد. مثال: التعليمة “Printbin 123ستقوم بإرسال القيمة (123) على أنها ثمن واحد، وبالتالي سترسل [1111011] – بالنتيجة سترسل ثمن واحد فقط.

التعامل مع النافذة UART في Bascom-AVR

    1. تعليمات التهيئة (Configuration).

    2. تعليمات الإرسال (Sending over TXD).

    3. تعليمات الاستقبال (Receiving over RXD).

شرح التعليمة

التعليمة البرمجية

تحديد معدل النقل العام للنافذة المتتالية UART0.

$baud= Var

إرسال البيانات عبر النافذة المتتالية UART0.

Print Var ;"const"

إرسال البيانات بصيغة ثنائية عبر النافذة المتتالية UARTx.

[; Varn]: خيار من أجل تحديد عدد البايتات المراد إرسالها (مصفوفة).

Printbin Var [; Varn]

قراءة البيانات الواردة على النافذة المتتالية UART0.

["prompt"]: خيار يقوم بإرسال رسالة نصية قبل قراءة محتوى النافذة.

Var: المتحول الذي سيتم إدخاله (رقمي، محرفي).

[,Varn]: خيار من أجل إدخال أكثر من متحول بنفس التعليمة (n=1,2…).

Input["prompt"], Var [,Varn]

قراءة البيانات الواردة على النافذة UART0 بصيغة ثنائية.

[,Var2]: خيار من أجل تحديد عدد البايتات المراد إدخالها (مصفوفة).

Inputbin Var1 [,Var2]

قراءة البيانات الواردة على النافذة UART0 بالصيغة HEX.

Inputhex["prompt"],Var[,Varn]

تعود بقيمة الـ Ascii لأول محرف في مسجل buffer النافذة UART0.

var =INKEY()

ينتظر وصول أول محرف إلى مسجل buffer النافذة المتتالية UART0 ويعود بقيمة الـ Ascii له.

var =WAITKEY()

يفحص محتوى buffer مسجل النافذة UART0 ويعود بالقيمة “1” إذا كان هناك أي محرف، وإلا فسوف يعود بالقيمة “0“، مع العلم أن هذه التعليمة تفحص محتوى المسجل ولا تؤثر على محتواه!

Var =Ischarwaiting()

ملاحظة 1من أجل إرسال أكثر من متحول على نفس السطر يمكن استخدام (;) للفصل بين المتحولات

(Print A ; B ; C)

ملاحظة 2إن التعليمة Printbin مكافئة تماماً للتعليمة

Print Chr (var);

ملاحظة 3يمكن استخدام التعليمة Printbin من أجل إرسال عدة متحولات مخزنة في مصفوفة؛ كما في المثال التالي سوف يتم إرسال عشر بايتات موجودة في المتحول (مصفوفة) Arr.

Printbin Arr(1) ; 10

ملاحظة 4يمكن استخدام التعليمة Inputbin من أجل إدخال عدة متحولات وإسنادها إلى مصفوفة؛ كما في المثال التالي سوف يتم استلام عشر بايتات ووضعها في المصفوفة Arr.

Inputbin Arr(1) , 10

ملاحظة 5إن التعليمة Inputbin سوف تنتظر حتى تستلم جميع البايتات المحددة في متحولاتها!


تطبيق: ربط متحكمي AVR من خلال النافذة المتتالية UART

تقديم

المطلوب وصل متحكمي AVR من خلال النافذة المتتالية UART بحيث يتم إرسال أوامر تحكم بينهما على الشكل التالي:

عند الضغط على المفتاح الموصول مع المتحكم MCU-A سيتم إرسال المحرف “A” من MCU-A إلى MCU-B، وعندما يستلم المتحكم MCU-B المحرف “A” سيقوم بتغيير حالة الثنائي D2. وبالمثل تماماً: عند الضغط على المفتاح الموصول مع المتحكم MCU-B سيتم إرسال المحرف “B” من MCU-B إلى MCU-A، وعندما يستلم المتحكم MCU-A المحرف “B” سيقوم بتغيير حالة الثنائي D1.

الشكل 10: المخطط التمثيلي لربط المتحكمين من خلال النافذة UART

الشكل 11: يبين طريقة الوصل للنافذة المتتالية بين المتحكمين

البـرمجة

البرنامج “Exp.18-A.bas” للمتحكم MCU-A في بيئة BASCOM-AVR:

'-----------------------[Definitions]
$regfile="m8def.dat"
$crystal= 8000000
$baud= 9600

'-----------------------[GPIO Configuration]
ConfigPinb.0 =Input: Switch AliasPinb.0 :Portb.0 = 1
ConfigPinb.1 =Output: Led AliasPortb.1
'
'-----------------------[Variables]
Dim Var AsByte

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'--->[Main Program]
Do
IfIscharwaiting()= 1 Then
Var =Inkey()
If Var ="B"ThenToggle Led
EndIf

If Switch = 0 Then
Print"A":Waitms 200
EndIf
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

البرنامج “Exp.18-B.bas” للمتحكم MCU-B في بيئة BASCOM-AVR:

'-----------------------[Definitions]
$regfile="m8def.dat"
$crystal= 8000000
$baud= 9600

'-----------------------[GPIO Configuration]
ConfigPinb.0 =Input: Switch AliasPinb.0 :Portb.0 = 1
ConfigPinb.1 =Output: Led AliasPortb.1

'-----------------------[Variables]
Dim Var AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'--->[Main Program]
Do
IfIscharwaiting()= 1 Then
Var =Inkey()
If Var ="A"ThenToggle Led
EndIf

If Switch = 0 Then
Print"B":Waitms 200
EndIf
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


حلول التطوير باستخدام منفذ الاتصالات المتتالي USB

تعتبر تقنية USB في الوقت الحالي من التقنيات المعقدة حيث أن تضمين منفذ USB في النظام الإلكتروني وكتابة برنامج القيادة الخاص به على الحاسب أمر شديدة التعقيد، وذلك لأنه يتوجب على المصمم تحقيق أمرين:

  1. تصميم عتاد الكتروني (Hardware) يحقق معايير البروتوكول USB.

  2. كتابة برنامج التعريف الخاص بقيادة هذا العتاد.

لذلك وبسبب الطلب المتزايد على هذه التقنية واقتحامها للسوق العالمية فإن هنالك الكثير من الشركات التي وفرت على المصممين عناء تصميم العتاد الالكتروني لينصّب اهتمامهم على كتابة برامج القيادة، لذلك كل ما يتوجب على المصمم هو الاطلاع على معايير USB بغرض فهم كيفية التعامل مع هذا العتاد الالكتروني. تقدم بعض الشركات حلولاً للتعامل مع المنفذ USB باستخدام شرائح متكاملة تقوم على تحويل البروتوكول USB إلى نافذة متتالية UART تمكن المستخدم من توصيل المتحكم المصغر بشكل مباشرة مع هذه النافذة، بالإضافة إلى ذلك توفر هذه الشرائح حلولاً برمجية من خلال مكتبات ربط ديناميكية من أجل ربط نظام مع الحاسب عن طريق البروتوكول USB ومعالجة بارامترات النظام أو إرسال أوامر التحكم إلى النظام. من أشهر وأكثر الشرائح انتشاراً واستخداماً هي الدارة المتكاملة FT232 التي هي عبارة عن دارة تحويل USB<>UART التي تنتجها شركة FTDI.

الشكل 12: واجهتي الربط (نمطي العمل) للشريحة FT232R المخصصة للتحويل UART<>USB

حيث أن عملية تحويل البروتوكول USBتم بنائها في داخل هذه الشريحة ككيان صلب (Hardware) دون الحاجة إلى برمجة الشريحة، حيث تؤمن هذه الشريحة واجهتي ربط ديناميكي للتعامل برمجياً مع المنفذ باستخدام توابع خاصة وجاهزة موجودة في مكتبات الربط الديناميكي للشريحة دون الحاجة إلى بناء البروتوكول USB بشكل برمجي من البداية أو حتى فهم مبدأ عمله. إن واجتهي الربط (D2XX driver و VCP driver) التي تؤمنها هذه الشريحة موضحة على الشكل 12.

فيما يلي جدول مقارنة بين واجتهي الربط (D2XX driver و VCP driver) للشريحة FT232R:

VCP Driver

D2XX.DLL Driver

بساطة البرنامج

برنامج بسيط

برنامج معقد

السرعة

سرعة ثابتة لا يمكن تغيرها 300KB/s

سرعة قابلة للتغيير تصل إلى 3MB

التحكم بالشريحة

لا يمكن التحكم بالشريحة

تحكم كامل ومباشر بالشريحة

  • VCP (Virtual Com Port)iيعرف منفذ USB كمنفذ COM متتالي إضافي، مما يسمح لنا بالتخاطب مع منفذ USB كمنفذ Com معياري.

  • D2XX.DLLيسمح هذا التعريف بالوصول المباشر إلى كامل مميزات هذه الشريحة عن طريق أوامر موجودة ضمن مكتبة ربط ديناميكية DLL.


الشريحة FT232R (دارة متكاملة مخصصة للتحويل UART<>USB)

  • توفر الشركة الصانعة برنامج القيادة لهذه الشريحة بشكل مجاني متوافق مع معظم أنظمة التشغيل

  • تقدم شركة FTDIبرنامجي قيادة لشرائحها (&D2XX.DLLVCP).

  • متوافقة مع المعيارين USB1.1 و USB2.0.

  • تدعم هذه الشريحة ملائمة كاملة لنظم الاتصالات المتتالية.

  • سرعة اتصال من 300Kb إلى3Mbبحسب نوع برنامج القيادة.

  • ذاكرة استقبال وسيطية من نوعFIFO بطول 256 ثمن.

  • ذاكرة إرسال وسيطية من نوعFIFO بطول 128 ثمن.

  • رقمي VID, PIDورقم متتالي للمنتج ووصف لهذا الجهاز.

  • توفر العديد من المقالات التقنية من الشركة المصنعة تقدم معلومات مفصلة عن طرق استخدام هذه الشريحة.

تلعب هذه الشريحة دور الملائم بين منفذ USB وبين النظام حيث تقوم باستقبال بيانات منفذ USB وتستخلص منها البيانات المطلوبة، كما تقوم بإرسال البيانات من المتحكم بشكلها المتتالي إلى منفذ USB بعد إضافة الحقول اللازمة لتحقيق بروتوكول USB.

ربط متحكم AVR من خلال النافذة UART (TTL)i مع منفذ USB (Differential)i

الشكل 13: المخطط التمثيلي لربط متحكم AVR مع منفذ USB من خلال الشريحة FT232R

الشكل 14: مخطط التوصيل (Schematic) لربط متحكم AVR مع منفذ USB من خلال الشريحة FT232R

إن التعامل فيزيائياً مع الشريحة FT232R يعتبر أمراً صعباً لعدم توفرها في غلاف فيزيائي من النوع DIP وهي فقط متوفرة كعنصر SMD، لذلك يمكن استخدام موديول التحويل UART<>USB الجاهز “Nawatt neXus” أو أي موديول آخر مشابه.

الشكل 15: موديول “Nawatt neXus”

يمتلك الموديول العديد من الأقطاب، ولكن يلزمنا فقط الأقطاب التالية:

  • TXD: قطب الإرسال من الحاسب.

  • RXD: قطب الاستقبال من الحاسب.

  • GND:قطب الأرضي 0V من الحاسب.

  • 5V+: قطب التغذية 5V+ من الحاسب (يستخدم فقط عندما يراد الحصول على تغذية من USB من أجل تغذية المتحكم).


تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الأشعة تحت الحمراء

تقديم

إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام الأشعة تحت الحمراء، وبالتالي سيتضمن التصميم دارتين:

الشكل 16: مخطط التوصيل (Schematic) لدارة الإرسال بالأشعة تحت الحمراء ووصلها مع القطب TXD للمتحكم

دارة الإرسال للأشعة تحت الحمراء

وهي عبارة عن مرسل أشعة تحت الحمراء (IR LED) متحكم به عن طريق مفتاح إلكتروني ترانزستوري (Q1). إن التيار الاسمي للثنائي LED يترواح بين 25 و100 ميليأمبير وكلما ازدادت قيمة التيار ازدادت استطاعة الإرسال وجهد العمل للثنائي 2V (R2 = 30Ω)i.

تم توصيل مدخل دارة الإرسال إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على المرسل IR-LED.

الشكل 17: مميزة عمل المتصل الضوئي Photodiode

دارة الاستقبال للأشعة تحت الحمراء

وهي عبارة عن متصل ضوئي (Photodiode) محيز عكسياً بحيث أنه عندما يتم تسليط ضوء على نافذة الثنائي التي تمثل المنطقة الفاصلة بين المتصل P/N يقوم على تمرير كمية أكبر من التيار كما هو مبين على مميزة العمل في الشكل17. عندما يكون الثنائي في الظلام فإن مقاومة الثنائي تكون كبيرة جداً (بالميغا أوم)، وعندما يتم تسليط الضوء على الثنائي تصبح مقاومته بضع كيلو أوم، كما أن تغير شدة الضوء الساقط على الثنائي سيؤدي إلى تغير مطال الخرج على طرفي المقاومة R3، وبالتالي سنستخدم قادح شميث 74HC14 لتثبيت المطال بحيث تتأرجح إشارة الخرج بين القيمة “0” (عندما يرسل المرسل القيمة المنطقية “0”) والقيمة “1” (عندما يرسل المرسل القيمة المنطقية “1”).

يبين الشكل18 مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus.

الشكل 18: مخطط التوصيل لدارة الاستقبال بالأشعة تحت الحمراء ووصلها مع القطب RXD للموديول neXus

البـرمجة

البرنامج “Exp.19.bas” في بيئة BASCOM-AVR:

'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 4800
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Print"Hello World":Waitms 50
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

سيقوم البرنامج بإرسال (TXD) العبارة “Hello Worldكل 50 ميلي ثانية على النافذة المتتالية (UART) بشكل مستمر. على الطرف الآخر سيكون المستقبل (Photodiode) موصل مع منفذ USB من خلال الموديول neXus وبالتالي يمكن عرض القيم المستقبلة من خلال النافذة Terminal – الشكل19.

الشكل 19: خرج دارة الاستقبال في نافذة Terminal في الحاسب

في حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج على الشكل التالي:

البرنامج “Exp.20.bas” في بيئة BASCOM-AVR:

'-----------------------[Definitions]
$regfile="m8def.dat"
$crystal= 8000000
$baud= 4800

'-----------------------[LCD Configuration]
Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2

'-----------------------[Variables]
Dim Var AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
IfIscharwaiting()= 1 Then
Var =Inkey() :LCD Var
EndIf
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

سوف تقوم الدالةIscharwaiting()iبفحص محتوى مسجل الدخل للنافذة المتتالية UART وفي حال ورود بيانات سيتحقق الشرط (Ischarwaiting()= 1) ويتم قراءة البيانات الواردة (Var =Inkey()i) وعرضها على شاشة LCD.


تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الليزر

تقديم

إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام أشعة الليزر، وبالتالي سيتضمن التصميم دارتي الإرسال والإستقبال.

دارة الإرسال لأشعة الليزر

وهي عبارة عن مرسل ليزري (Laser LED) متحكم به عن طريق مفتاح إلكتروني ترانزستوري (Q1). إن التيار الاسمي للثنائي LED يترواح بين 25 و100 ميليأمبير وكلما ازدادت قيمة التيار ازدادت استطاعة الإرسال وجهد العمل للثنائي 2V (R2 = 30Ω)i. تم توصيل مدخل دارة الإرسال إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على المرسل Laser-LED.

الشكل 20: مخطط التوصيل (Schematic) لدارة الإرسال بأشعة الليزر ووصلها مع القطب TXD للمتحكم

دارة الاستقبال لأشعة الليزر

وهي عبارة عن ترانزستور ضوئي (Phototransistor) محيز أمامياً بحيث أنه عندما يتم تسليط ضوء على نافذة الترانزستور التي تمثل القاعدة فسوف يقوم الترانزستور بتمرير كمية أكبر من التيار كما هو مبين على مميزة العمل في الشكل21.

الشكل 21: مميزة عمل الترانزستور الضوئي

عندما يكون الترانزستور في الظلام فإن مقاومة الترانزستور تكون كبيرة جداً (بالميغا أوم) وسيكون في حالة القطع، وعندما يتم تسليط الضوء سوف يفتح الترانزستور، كما أن تغير شدة الضوء الساقط على الترانزستور سيؤدي إلى تغير مطال الخرج على طرفي الترانزستور، وبالتالي سنستخدم قادح شميث 74HC14 لتثبيت المطال بحيث تتأرجح إشارة الخرج بين القيمة “0” (عندما يرسل المرسل القيمة المنطقية “0”) والقيمة “1” (عندما يرسل المرسل القيمة المنطقية “1”). الشكل22 يبين مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus.

الشكل 22: مخطط التوصيل لدارة الاستقبال بالأشعة تحت الحمراء ووصلها مع القطب RXD للموديول neXus


البـرمجة

البرنامج “Exp.19.bas” في بيئة BASCOM-AVR:

'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 4800
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Print"Hello World":Waitms 50
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

سيقوم البرنامج بإرسال (TXD) العبارة “Hello Worldكل 50 ميلي ثانية على النافذة المتتالية (UART) بشكل مستمر. على الطرف الآخر سيكون المستقبل (Phototransistor) موصل مع منفذ USB من خلال الموديول neXus وبالتالي يمكن عرض القيم المستقبلة من خلال النافذة Terminal – الشكل 23.

الشكل 23: خرج دارة الاستقبال في نافذة Terminal في الحاسب

في حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج هو نفسه البرنامج “Exp.20.bas”.

بالنتيجة فإن مشروع إرسال واستقبال البيانات باستخدام الأشعة تحت الحمراء مشابه تماماً لمشروع إرسال واستقبال البيانات باستخدام الليزر والاختلاف الوحيد هو باستبدال مرسل الأشعة تحت الحمراء بمرسل ليزري واستبدال الثنائي الضوئي بترانزستور ضوئي.


تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الموجات المذياعية

تقديم

إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام الأمواج المذياعية RF، وبالتالي سيتضمن التطبيق دارتي الإرسال والإستقبال.

دارة الإرسال للأمواج المذياعية

وهي عبارة عن مرسل مذياعي (RF Transmitter) على شكل موديول جاهز يعمل بجهد 5V ويملك أربعة اقطاب (+5V, GND, ANT, DI). تم توصيل مدخل البيانات لموديول الإرسال (DI) إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على قطب إرسال البيانات للموديول RF.

دارة الاستقبال للأمواج المذياعية

وهي عبارة عن مستقبل مذياعي (RF Receiver) على شكل موديول جاهز يعمل بجهد 5V ويملك أربعة اقطاب (+5V, GND, ANT, DO).. تم توصيل مخرج البيانات المستقبلة (DO) لموديول الاستقبال إلى قطب الاستقبال للنافذة المتتالية UART للموديول neXus. الشكل22 يبين مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus.

الشكل 24: مخطط التوصيل (Schematic) لدارة الإرسال والاستقبال بالأمواج المذياعية
الـDatasheet مرفقة في مجلد المشروع

البـرمجة

البرنامج هو نفسه البرنامج “Exp19.bas”، وبالنتيجة فإن مشروع إرسال واستقبال البيانات باستخدام الأمواج المذياعية مشابه تماماً لمشروع إرسال واستقبال البيانات باستخدام الأشعة تحت الحمراء والاختلاف الوحيد هو باستبدال مرسل الأشعة تحت الحمراء بمرسل مذياعي واستبدال الثنائي الضوئي بمستقبل مذياعي.وفي حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج هو نفسه البرنامج “Exp.20.bas”.


تطبيق: ربط موديول GPS مع متحكم AVR من خلال النافذة UART

تقديم

يستخدم هذا الجهاز لتحديد موقع أي نقطة على الأرض من حلال مجموعة من الحسابات على البيانات المستقبلة من الأقمار الصناعية وقد تقدم أثناء عرض المحاضرة الثامنة (Session_08_CE_2012.wmv) مبدأ عمل نظام الـGPS وكذلك حزم البيانات التي يتم بثها من الأقمار الصناعية المخصصة لنظام الملاحة العالمي وكيف يتم استقبالها من خلال موديول استقبال “GPS Receiver Module”.

$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76

$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A

$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70

$GPGSV,3,2,11,02,39,223,19,13,28,070,17,26,23,252,,04,14,186,14*79

$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76

$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43

$GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75

$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A

$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70

$GPGSV,3,2,11,02,39,223,16,13,28,070,17,26,23,252,,04,14,186,15*77

$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76

$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45

(reference: http://www.gpsinformation.org/dale/nmea.htm)

الشكل 25: مثال عن الحزم المستقبلة على خرج موديول GPS.

في هذا التطبيق سوف نتعامل مع إحدى حزم البيانات المستقبلة من خلال الموديول وهي الحزمة $GPZDA وهي تحوي على الوقت والتاريخ فقط؛ وبالتالي من أجل استخلاص البيانات من الحزمة فإنه يجب معرفة نوع وشكل البيانات التي يستقبلها موديول الـــG.P.S والتي تعتمد البروتوكول NMEA الذي يعد أشهر برتوكولات هذا النظام.

ملاحظة: كلمة NMEA هي اختصار National Marine Electronics Association.

الحزمة ZDA - Time and Date

شكل الحزمة هو:

$GPZDA,hhmmss.ss,DD,MM,YYYY,ltzh,ltzn*cs<CR><LF>

الإسم

ASCII String

الوحدة

الشرح

الشكل

مثال

$GPZDA

string

$GPZDA

Message ID

hhmmss.ss

hhmmss.ss

082710.00

UTC time

day

dd

16

day

UTC time: day

month

mm

09

month

UTC time: month

year

yyyy

2002

year

UTC time: year

ltzh

xx or -xx

00

Local zone hours

ltzn

zz

00

Local zone minutes

cs

hexadecimal

*64

Checksum

<CR> <LF>

مثال:

$GPZDA,071802.00,29,10,2008,00,00*6A

الحزمة في هذا المثال تشير إلى أن التاريخ هو: 29/10/2008 والوقت هو: 07:18:02 بتوقيت غرينتش.

ربط موديول GPS مع المتحكم المصغر

يتوفر تجارياً العديد من موديولات GPS وجميع موديولات الــGPS تملك نافذة متتالية UART.
بشكل عام يمتلك الموديول من 4 إلى 6 أقطاب لها الوظائف التالية:

  • القطب GND: قطب النقطة الأرضية للتغذية.

  • القطب VCC: قطب التغذية الرقمية للموديول (3V+ إلى 5V+).

  • القطب PPS: قطب توليد نبضة تزامن بدور ثانية واحدة (1sec).

  • القطب RXD: قطب دخل من أجل ضبط بارامترات الموديول.

  • القطب TXD: قطب خرج البيانات المستقبلة من قبل الموديول ( يجب أن يوصل مع القطب RXD للمتحكم المصغر).

الشكل 26:بعض موديولات الـGPS التجارية

من أجل هذا التطبيق فإنه يكفي تغذية الموديول (VCC و GND) ووصل القطب TXD من الموديول مع القطب RXD للنافذة المتتالية UART للمتحكم المصغر كما في الشكل27.

الشكل 27

البـرمجة

البرنامج “GPS_ZDA.bas” في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : GPS_ZDA.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : LCD - GPS - LED - Buzzer *
' * Description : Acquiring Time/Date/Coordinates from GPS Module *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 4800
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim Uart_var AsByte, Pps_f AsBit
Dim Temp_str AsString* 2, Identifier AsString* 6, Data_stream AsString* 27
Dim Hour_val AsString* 2 , Min_val AsString* 2 , Sec_val AsString* 2
Dim Day_val AsString* 2 , Month_val AsString* 2 , Year_val AsString* 2
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
IfIscharwaiting()= 1 ThenGosub Gps_isr

If Pps_f = 1 Then
Reset Pps_f :Cls
Locate 1 , 1 :Lcd"Time: "; Hour_val ;":"; Min_val ;":"; Sec_val
Locate 2 , 1 :Lcd"Date: "; Day_val ;"/"; Month_val ;"/20"; Year_val
EndIf
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[UART]
Gps_isr:
Uart_var =Inkey()
If Uart_var ="$"Then
$timeout= 100000 :Input Data_stream
Identifier
=Mid(data_stream , 1 , 6)
If Identifier ="GPZDA,"Then
'->[Time]
Hour_val =Mid(data_stream , 07 , 2)
Min_val =Mid(data_stream , 09 , 2)
Sec_val =Mid(data_stream , 11 , 2)
'->[Date]
Day_val =Mid(data_stream , 17 , 2)
Month_val =Mid(data_stream , 20 , 2)
Year_val =Mid(data_stream , 25 , 2)
Set Pps_f
EndIf
EndIf
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

إن جميع حزم البيانات الرواردة على خرج موديول GPS تبدأ بالمحرف “$وبالتالي فإن البرنامج GPS_ZDA.bas”سيقوم بما يلي:

  1. أولاً بانتظار ورود بيانات على النافذة المتتالية UART حتى يتحقق الشرط (IfIscharwaiting()=1).

  2. سوف يقوم بقراءة المحرف الوارد على النافذة (Uart_var =Inkey()i) والتأكد فيما إذا كان المحرف هو “$” (If Uart_var ="$"Then) إشارة إلى بداية حزمة بيانات.

  3. في حال كانت بداية حزمة بيانات ("$") فسيتم قراءة كامل الحزمة (Input Data_stream) إلى سلسلة محرفية بـ27 محرف ممثلة بالمتحول “Data_streamوالذي تم تعريفه على الشكل:
    Data_stream AsString* 27

  4. سنحتاج الآن إلى التأكد من أن الحزمة التي تم وضعها في المتحول “Data_streamهي حزمة البيانات “GPZDAالمطلوبة. لذلك سيتم استخدام تعليمة الاقتطاع من سلسلة محرفية (Mid) من أجل اقتطاع المحارف الستة الأولى وفحصها للتأكد فيما إذا كانت هي للحزمة “GPZDA”.
    شكل التعليمة هو:String_var =Mid(String , Start , Num_of_char)i
    حيث أن المتحول “String_varهو الذي سيتم فيه وضع المحارف المقتطعة من السلسلة ويجب أن يكون حجمه معرفاً بحيث يتسع للمحارف المطلوب اقتطاعها.
    المتحول “Stringهو السلسة المحرفية الأصلية المطلوب أن يتم الاقتطاع منها.
    المتحول “Startهو نقطة بداية الاقتطاع.
    المتحول “Num_of_charهو عدد المحارف المطلوب اقتطاعها.

  5. في حال كانت المحارف الستة الأولى المقتطعة من السلسلة المحرفية هي للحزمة المطلوبة (GPZDA,)، فعندها يتم إكمال عملية تجزيئ السلسة المحرفية من أجل الحصول على البيانات المطلوبة وهي الوقت والتاريخ حيث أن لكل قيمة موضع محدد في السلسة المحرفية كما هو مبين أدناه بين الأقواس...

'$GPZDA,hhmmss.ss,DD,MM,YYYY,00,00*cs<CR><LF>
'hh(7,8) : mm(9,10) : ss(11,12) : DD(17,18) : MM(20,21) : YYYY(xx,xx,25,26)

  1. المتحول “Pps_fيستخدم كعلم من أجل عرض القيم الجديدة كلما توفرت على شاشة الإظهار LCD.

ملاحظة هامة: تمتلك الحزمة GPZDA مواضع ثابتة للمحارف ضمن السلسلة، أي: قيمة الثواني تتوضع دائماً في السلسلة عند المحرفين 11,12 (SS) وقيمة الشهر تتوضع عند المحرفين 20,21 (MM) وهكذا... إلا أن بعض الحزم الأخرى وأهمها الحزمة GPRMC لا تمتلك مواضع ثابتة للمحارف إذا يمكن أن تتغير تبعاً لعدد القيم بعد الفاصلة العشرية لبعض متحولات خطوط الطول والعرض. من أجل ذلك سنضع هنا فكرة برمجية من أجل استخلاص قيم الإحداثيات والوقت والتاريخ والارتفاع والسرعة من الحزمة GPRMS فيما يلي.

الحزمة RMC

ملاحظة: الكلمة RMC هي اختصار لجملة Recommended Minimum Data

شكل الحزمة هو:

$GPRMC,hhmmss.000,status,latitude,N,longitude,E,spd,cog,ddmmyy,mv,mve,mode*cs<CR><LF>

الإسم

ASCII String

الشرح

الشكل

مثال

$GPRMC

string

$GPRMC

Message ID

RMC protocol header

hhmmss

hhmmss.sss

083559.00

UTC Time

Time of position fix

status

character

A

Status

V = Navigation receiver warning
A = Data valid.

latitude

ddmm.mmmm

4717.11437

Latitude

User datum latitude degrees, minutes, minutes

N

N

N/S Indicator

N=north or S=south

longitude

ddmm.mmmm

00833.91522

Longitude

User datum latitude degrees, minutes, minutes

E

character

E

E/W indicator

E=east or W=west

Spd

numeric

0.004

Speed (knots)

Speed Over Ground

cog

numeric

77.52

COG (degrees)

Course Over Ground

ddmmyy

ddmmyy

091202

Date

Current Date in Day, Month Year

mv

numeric

Magnetic variation

Not being output by receiver

mvE

character

Magnetic variation E/W indicator

Not being output by receiver

mode

Mode Indicator

cs

hexadecimal

*53

Checksum

<CR> <LF>

End of message

مثال عن الحزمة:

$GPRMC,071802.00,A,4717.11437,N,00833.91522,E,0.004,77.52,14072011,,,A*57

البـرمجة

البرنامج “GPS_RMC.bas” في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : GPS_RMC.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : LCD - GPS - LED - Buzzer *
' * Description : Acquiring Time/Date/Coordinates from GPS Module *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 4800
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim Pps_f AsBit, Uart_byte AsByte, Pos(9)AsByte, J AsByte, I AsByte
Dim Hour_val AsString* 2 , Min_val AsString* 2 , Sec_val AsString* 2
Dim Day_val AsString* 2 , Month_val AsString* 2 , Year_val AsString* 2
Dim Identifier AsString* 6 , Data_stream AsString* 66 , Pos_i AsByte
Dim Latitude AsString* 10 , Longitude AsString* 11
Dim N_s AsString* 1 , E_w AsString* 1
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
IfIscharwaiting()= 1 ThenGosub Gps_isr

If Pps_f = 1 Then
Reset Pps_f :Cls
Locate 1 , 1 :Lcd"Time: "; Hour_val ;":"; Min_val ;":"; Sec_val
Locate 2 , 1 :Lcd"Date: "; Day_val ;"/"; Month_val ;"/20"; Year_val
Locate 3 , 1 :Lcd Latitude ;" - "; N_s
Locate 4 , 1 :Lcd Longitude ;" - "; E_w
EndIf
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[UART]
Gps_isr:
Uart_byte =Inkey()
If Uart_byte ="$"Then
$timeout= 100000 :Input Data_stream
Identifier
=Mid(data_stream , 1 , 6)
If Identifier ="GPRMC,"Then
'->[Looking for ',' Positions]
J = 1
For I = 1 To 9
Pos
(i)=Charpos(data_stream ,",", J)
J = Pos(i)
Next I
'->[Time]
Pos_i = Pos(1)+ 1 : Hour_val =Mid(data_stream , Pos_i , 2)
Pos_i = Pos(1)+ 3 : Min_val =Mid(data_stream , Pos_i , 2)
Pos_i = Pos(1)+ 5 : Sec_val =Mid(data_stream , Pos_i , 2)
'->[Date]
Pos_i = Pos(9)+ 1 : Day_val =Mid(data_stream , Pos_i , 2)
Pos_i = Pos(9)+ 3 : Month_val =Mid(data_stream , Pos_i , 2)
Pos_i = Pos(9)+ 5 : Year_val =Mid(data_stream , Pos_i , 2)
'->[Location]
Pos_i = Pos(3)+ 1 : Latitude =Mid(data_stream , Pos_i , 9)
Pos_i = Pos(4)+ 1 : N_s =Mid(data_stream , Pos_i , 1)
Pos_i = Pos(5)+ 1 : Longitude =Mid(data_stream , Pos_i , 10)
Pos_i = Pos(6)+ 1 : E_w =Mid(data_stream , Pos_i , 1)
Set Pps_f
EndIf
EndIf
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

البرنامج GPS_RMC.bas” يعتمد نفس المبدأ في البرنامج GPS_ZDA.bas”، إلا أننا هنا لا نعتبر موقع المحارف ثابت وإنما نوجد مواقع الفاصلة “,التي تفصل بين البيانات ونوضح هذا فيما يلي:

$GPRMC,071802.00,A,4717.11437,N,00833.91522,E,0.004,77.52,14072011,,,A*57

بالنظر إلى الحزمة السابقة فإننا سنجد أن مواقع الفواصل “” هي:

[7, 17, 19, 30, 32, 44, 46, 52, 58, 67, …]

ومن الواضح تماماً أنه:

بعد الفاصلة الأولــــى تأتي قيمة الوقت (071802)

وبعد الفاصلة الثالثـــة تأتي قيمة خط الطول (4717.11437)

وبعد الفاصلة الرابعـة تأتي قيمة محدد الاتجاه (N)

وبعد الفاصلة الخامسة تأتي قيمة خط العرض (00833.91522)

وبعد الفاصلة السادسة تأتي قيمة محدد الاتجاه (E)

وبعد الفاصلة السابعـة تأتي قيمة السرعة (0.004)

وبعد الفاصلة التاسعـة تأتي قيمة التاريخ (14072011)
...

وبالتالي تمكنا من معرفة بدايات توضع كل صنف من البيانات والآن يمكننا اقتطاعها ابتداءً من هذا العنوان وانتهاءً بعنوان الفاصلة التالية. ويتم تحديد مواقع الفواصل من خلال تعليمة البحث عن موضع محرف ضمن سلسلة محرفية المتمثلة بالتعليمة “Charpos”. يمكن الاطلاع على بارامترات التعليمة في برنامج BASCOM-AVR/Help.


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

المؤلف: وليد بليد (سوريا)

البريد الإلكتروني: walidbalid81@gmail.com


 

]]>
walidbalid81@gmail.com (وليد بليد) البرمجة في bascom-AVRه Sun, 15 Sep 2013 00:00:00 +0000
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 5 http://www.isnaha.com/isnaha_new/برمجها/item/1049-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-5 http://www.isnaha.com/isnaha_new/برمجها/item/1049-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-5

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 5

هذه المحاضرة تشرح بنية البروتوكولRC5المستخدم في أجهزة التحكم بالأشعة تحت الحمراء. ثم تقدم تطبيقاً عملياً لربط مستقبل أشعة تحت الحمراء يدعم البروتوكول المذكور وطرقة قراءة البيانات من المستقبل. ثم طريقة تصميم وبرمجة جهاز تحكم لإرسال أوامر تحكم باستخدام الأشعة تحت الحمراء والبروتوكول RC5. 

 


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.

 


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_07_PPTX

Session_07_codes

 


محاضرة المقال

{youtube}kSvnwpJL6bE{/youtube}


البروتوكول RC5 وأجهزة التحكم بالأشعة تحت الحمراء

التساؤل الأول الذي يتبادر للذهن هو تساؤل عن ماهية الأشعة تحت الحمراء؟ فيأتي التعريف بأنها عبارة عن طاقة إشعاع ضوئي غير مرئي يقع تحت حزمة الترددات المرئية لأعيينا. في الحقيقة إن الأشعة تحت الحمراء هي ضوء طبيعي يبلغ طول الموجه لهذه الأشعة 950nm وهي موجة قصيرة جداً لهذا لا يمكن للعين أن ترى الضوء المنبعث من مرسل الأشعة تحت الحمراء.

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

 

إن كثير من الأشياء يمكن أن تولد الأشعة تحت الحمراء، وخوصاً الأجسام التي تصدر حرارة كأجسادنا مثلاً: المصابيح، الأفران، الماء الحار، لذلك يجب استخدام مفتاح أو عنوان للجهاز المرسل لتفادي الأشعة المزيفة الصادرة عن الأجسام التي لها إصدار حراري وليخبر المستقبل عن البيانات الحقيقية التي يجب أن يستجيب لها نظام التحكم، وهذا ما سوف نوضحه لاحقاً ويعبر عنه بـ العنوان (Address).

 

إن حزمة ترددات الأشعة تحت الحمراء تتراوح بين 30KHZ و 60KHZ ومجال الأشعة الأفضل هو ضمن 36KHZ والحزم التي حوله 38KHZ. لذلك تستخدم أجهزة التحكم بالأشعة تحت الحمراء الحزمتين 36KHZ و 38KHZ لإرسال المعلومات وهذا يعني أن الثنائي المرسل للأشعة تحت الحمراء سوف يتذبذب 36 ألف إلى 38 ألف مرة خلال دور قدره واحد ثانية من أجل القيمة واحد منطقي، وسيكون ساكن من أجل قيمة صفر منطقي.

 

إن مسألة إرسال تردد 36KHZ و 38KHZ هي مسألة سهلة، لكن الصعوبة تكمن في استقبال هذه الترددات وخصوصاً أن هذه الترددات انتقلت عبر الهواء وتراكبت معها ترددات الضجيج المحيط، لهذا السبب تقوم بعض الشركات بإنتاج مستقبلات الأشعة تحت الحمراء التي تحوي في بنيتها على مرشحات الحزمة ودارات فك التشفير ودارات القص للحزم غير المرغوبة، وهذا بدوره يساعد على استخلاص الإشارة الحقيقية.

 

يبين الشكل التالي دارة إرسال بسيطة من أجل إرسال تردد 36KHZ، وذلك بتطبيق إشارة مربعة 27uS على قاعدة الترانزستور الشكل1. وسيقوم المستقبل باستلام الإشارة المرسلة وتعديلها كما في الشكل2.

الشكل 1

الشكل 2

نلاحظ أن دارة التعديل الموجودة داخل المستقبل قد عكست المستوى المنطقي للإشارة.

 


معايير التحكم باستخدام الأشعة تحت الحمراء

هناك الكثير من معايير التحكم (بروتوكولات) التي تعمل عليها المستقبلات، منها: NEC و SIRCS و RC5 و JAPAN و SAMSUNG و Sony. وتختلف هذه البروتوكولات عن بعضها في شكل موجة الإرسال وبنيتها.

 

المعيار RC5

إن اهتمامنا ينصب بشكل كلي على معيار RC5 الذي طورته شركة فيلبس ويتلخص بإرسال قطار من 14 نبضة في كل مرة يتم فيها الضغط على أحد أزرار جهاز التحكم وبزمن 1.728mS عند التردد 36KHz أو بزمن 1.4mS عند التردد 38KHz لكل نبضة، وهذا القطار من النبضات يتكرر كل 130mS إذا أبقيت المفتاح مضغوطاً. ولفهم مبدأ عمل هذا البروتوكول يجب التعرف إلى البارامترات التالية:

  • طول العنوان (Address Length).

  • طول أمر التحكم (Command Length).

  • تردد الناقل (Carrier Frequency ).

  • زمن نبضة بداية الإرسال (Start Bit).

  • زمن نبضة الإرسال للمستوى المنطقي "1" (High-Bit-Time).

  • زمن نبضة الإرسال للمستوى المنطقي "0" (Low-Bit-Time).

 

إن هذه البارامترات تختلف حسب نوع المستقبل. إن كل نبضة من قطار النبضات هي زوج واحد منقسم إلى قسمين: له نصف يميني ونصف يساري، ولكل منهما مستوى منطقي معاكس للآخر دائماً. فإذا كان الزوج المرسل من طرف الإرسال هو واحد منطقي، فإن القسم اليميني من الزوج سيكون واحد منطقي، بينما القسم اليساري سيكون صفر منطقي، وإذا كان الزوج المرسل هو صفر منطقي، فستكون عكس الحالة السابقة تماماً. بمعنى آخر، يمكنك أن تستنتج أن القسم اليميني من الزوج المستقبل، سيكون له نفس المستوى المنطقي للزوج المرسل، من الشكل السابق تجد النبضة الزرقاء لها مستوى واحد منطقي، وهذا يعني أن الزوج المرسل هو واحد منطقي أيضا، ولكن القسم اليساري سيكون عكسه.

الشكل 3: يبين المنطق الحقيقي الذي سوف تستقبله

 

في هذا البروتوكول هناك عدد محدد من النبضات التي دور كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz) يجب أن تصل إلى دارة فاك التشفير الموجودة داخل المستقبل (demodulator) ليفهم أن التردد المستقبل هو التردد الصحيح ومن ثم نقله إلى الخرج، هذا العدد من النبضات لمستقبلات شركة فيلبس هو 32 نبضة لكل قسم من كل زوج من مجموع أزواج الإرسال، وبالتالي 64 نبضة لكل زوج. وعليه فإنه من أجل إرسال "0" فإنه سيكون لدينا في طرف المستقبل في مرحلة فك التعديل 32 نبضة مربعة دور كل منها دور كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz) ثم يليها 32 silence pulse. بينما من أجل إرسال "1" سيكون لدينا الحالة المعاكسة تماماً، 32 silence pulse ثم يليها 32 نبضة مربعة دور كل منها كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz).

الشكل 4: المنطق “1” والمنطق “0” في الإرسال عند التردد 36KHz

 

يتكون بروتوكول RC5 من 14Bits ثنائي (أي له نصفين) كما هو مبين على الشكل5.

الشكل 5: بروتوكول الإرسال RC5

 

Bit14

Bit13

Bit12

Bit11

Bit10

Bit9

Bit8

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Command

Address

control

start bits

 

Bits1-2: هي زوجي بداية الإرسال ("Start Bits or AGC "Automatic Gain Control) وهي دائماً تملك القيمة "1". وهي تساعد هذه الأزواج في معايرة التحكم الآلي بربح مستقبل الأشعة وكذلك لإعلام المستقبل ببدء عملية الإرسال.

الشكل 6: أزواج التحكم في بروتوكول الإرسال RC5

 

Bit3: هو زوج التحكم CHECK bit (Control Bit or Toggle Bit)i، هذا الزوج تتغير قيمته بين الصفر والواحد منطقي في كل مرة يتم فيها ضغط أحد أزرار التحكم. هذا يفيد جهاز التحكم ليفهم إذا ما زلت تضغط على أحد الأزرار ويتكرر الأمر – تصور انك تضغط الرقم واحد وتستمر بالضغط، فلولا هذا الزوج فإن الجهاز سيفهم انك تريد اختيار القناة 11 بدلاً من القناة واحد لأنه سيرسل قطارين من النبضات لهما القيمة نفسها.

 

Bits4-8: هي أزواج العنوان، هذه الأزواج الخمسة تسمح لنا باختيار نوع الجهاز الذي يجب أن يستجيب للأوامر، وهي تحقق لنا عنونة لـ 32 جهازا (25=32) وهي على الشكل التالي:

 

العـنوان

نوع الجـهاز

0

TV SET 1

1

TV SET 2

2

VIDEOTEXT

3

EXPANSION FOR TV 1 AND 2

4

LASER VIDEO PLAYER

5

VIDEO RECORDER 1 (VCR 1)

6

VIDEO RECORDER 2 (VCR 2)

7

RESERVED

8

SAT 1

9

EXPANSION FOR VCR 1 OR 2

10

SAT 2

11

RESERVED

12

CD VIDEO

13

RESERVED

14

CD PHOTO

15

RESERVED

16

AUDIO PREAMPLIFIER 1

17

RECEIVER / TUNER

18

TAPE / CASSETE RECORDER

19

AUDIO PREAMPLIFIER 2

20

CD

21

AUDIO RACK

22

AUDIO SAT RECEIVER

23

DCC RECORDER

24

RESERVED

25

RESERVED

26

WRITABLE CD

26-31

RESERVED

 

Bits9-14: هي أزواج الأوامر الوظيفية، هذه الأزواج الستة تحتوي عن عنوان الأمر المرسل تبعاً للزر الموجود على جهاز التحكم، وهي تحقق لنا استخدام 64 مفتاحا وظيفيا (26=64) وهي بالنسبة للأجهزة القياسية على الشكل التالي:

 

التعليمة (الأمر)

مهمة التعليمة

0-9

NUMERIC KEYS 0 - 9

12

STANDBY

13

MUTE

14

PRESETS

16

VOLUME UP

17

VOLUME DOWN

18

BRIGHTNESS  + 

19

BRIGHTNESS -

20

COLOR SATURATION +

21

COLOR SATURATION -

22

BASS UP 

23

BASS DOWN

24

TREBLE  + 

25

TREBLE -

26

BALANCE RIGHT

27

BALANCE LEFT

48

PAUSE 

50

FAST REVERSE

52

FAST FORWARD-

53

PLAY

54

STOP

55

RECORD 

63

SYSTEM SELECT

71

DIM LOCAL DISPLAY

77

LINEAR FUNCTION (+)

78

LINEAR FUNCTION (-)

80

STEP UP

81

STEP DOWN

82

MENU ON

83

MENU OFF

84

DISPLAY A/V SYS STATUS

85

STEP LEFT

86

STEP RIGHT

87

ACKNOWLEDGE

88

PIP ON/OFF

89

PIP SHIFT

90

PIP MAIN SWAP

91

STROBE ON/OFF

92

MULTI STROBE

93

MAIN FROZEN

94

3/9 MULTI SCAN

95

PIP SELECT

96

MOSAIC MULTI PIP

97

PICTURE DNR

98

MAIN STORED

99

PIP STROBE

100

RECALL MAIN PICTURE

101

PIP FREEZE

102

PIP STEP UP

103

PIP STEP DOWN

118

SUB MODE

119

OPTIONS BUS MODE

123

CONNECT

124

DISCONNECT

 


ربط مستقبل IR إلى معالج مصغر

توضح هذه الفقرة بعض الأمور التي يجب مراعاتها عند وصل مستقبل أشعت تحت الحمراء مع متحكم مصغر.

  1. مستقبل الأشعة تحت الحمراء سوف يعكس المستوى المنطقي للنبضات – "0"=On و "1" = off.

  2. في حال عدم الإرسال فإن خرج المستقبل سيكون على المستوى "1".

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

 


مستقبل الأشعة تحت الحمراء CLRM-2038S

إن مستقبل الأشعة المستخدم في مشروعنا هو من النموذج CLRM-2038S وله المواصفات الأساسية التالية:

  1. مستقبل أشعة تحت الحمراء ومضخم إشارة في نفس الوقت.

  2. مرشح تمرير داخل غلاف المستقبل من أجل ترددات PCM.

  3. استهلاك طاقة منخفض ضمن مجال العمل 2.7V إلى5.5V.

  4. متوافق مع متطلبات المستوى المنطقي TTL وCMOS.

  5. درع مطور للمناعة ضد اضطرابات الحقل الكهربائي.

  6. متوافق مع معايير NEC code و RC5 code.

  7. مناعة عالية ضد التأثر بالأضواء المحيطة.

  8. مسافة الاستقبال حتى 12m.

  9. تردد الحامل 38KHZ.

  10. يمكن استخدامه من أجل التطبيقات التالية:

  •    مفتاح ضوئي (Optical switch).

  •    التحكم بالأجهزة المنزلية مثل: Air-conditioner, Fan, CATV, ...

  •    تطبيقات التحكم بالأجهزة مثل: Audio, TV, VCR, CD, MD, DVD, ....

 

 

الشكل 7: البنية الداخلية للمستقبل CLRM-2038S.

 

الشكل 8: توزع الأقطاب للمستقبل CLRM-2038S.

 


دارة الملائمة لمستقبل الأشعة تحت الحمراء

عند ربط مستقبل أشعة تحت الحمراء مع معالج، فإنه يجب وضع مكثف 4.7uF على التوازي مع أقطاب التغذية للمستقبل وأقرب ما يمكن إلى تلك الأقطاب، وإلا لن يعمل في الغالب. الشكل التالي يوضح دارة الملائمة لهذا المستقبل.

الشكل 9: دارة الملائمة لمستقبل الأشعة تحت الحمراء CLRM-2038S

 


عناوين جهاز التحكم AL-AWAIL

بالنسبة لجهاز التحكم المستخدم والموضح على الشكل 10 فقد تم تصنيعه وتصميمه خصيصاً لشركة الأوائل للهندسة الإلكترونية وفق دلائل وظيفية خاصة. لذلك فإن لهذا الجهاز عنوان خاص وهو:

RC5 Address = 27

وأما بالنسبة لأوامر المفاتيح على الجهاز فهي موضحة على الشكل في الطرف الأيمن باللون الأزرق علماً أن القيم هي بصيغة Hex.

الشكل 10: جهاز التحكم بالأشعة تحت الحمراء

 


تجربة توصيل وبرمجة مستقبل أشعة تحت الحمراء (CLRM-2038S) مع متحكم AVR

المطلوب كتابة برنامج لاستقبال أوامر مرسلة من أجهزة التحكم بالأشعة تحت الحمراء والتي تعمل وفق البروتوكول RC5، وفي هذه الحالة سوف نستخدم التعليمات المخصصة للتعامل مع مستقبلات الأشعة تحت الحمراء التي تعتمد RC5في البيئة Bascom-AVR. سوف يقوم البرنامج باستدعاء مكتبة التابع RC5 الموجودة في البيئة البرمجية والتي تحوي على بروتوكول الاستقبال RC5. يتم فحص حالة المستقبل باستخدام التعليمة Getrc5 والتي تقوم بتشغيل المؤقت Timer0 لعد النبضات بشكل آلي.

 

شرح التعليمة

التعليمة البرمجية

تعريف القطب الموصول مع خرج مستقبل IR.

Config Rc5 =Pinb.7 ,Wait= 2000

استحصال العنوان والأمر من المستقبل.

Getrc5(address , Command)

 

الشكل11 يبين طريقة توصيل مستقبل أشعة تحت الحمراء CLRM-2038S مع المتحكم على اللوحة التعليمية Mini-Phoenix.

الشكل 11: توصيل مستقبل أشعة تحت الحمراء (CLRM-2038S) مع المتحكم للتجربة 16

 

البرنامج Exp.16.bas في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : Exp.16.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : RC5 Receiver; *
' * Description : Receiving RC5 Code from Remote Control *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 9600
'-----------------------
'-----------------------[RC5 Receiver Configurations]
Config Rc5 =Pinb.7 ,Wait= 2000
'-----------------------
'-----------------------[Variables]
Dim Rc5_address AsByte, Rc5_command AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
EnableInterrupts
Do
Gosub Read_rc5 :Waitms 100
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Read RC5 Code]
Read_rc5
:
Getrc5(rc5_address , Rc5_command)
If Rc5_address <> 255 Then
Rc5_command
= Rc5_command And&B01111111

Print"Address is: "; Rc5_address
Print"Command is: "; Rc5_command
EndIf
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


تجربة توصيل وبرمجة مرسل أشعة تحت الحمراء (IR LED) مع متحكم AVR

المطلوب كتابة برنامج لإرسال أوامر تحكم بالأشعة تحت الحمراء تعمل وفق البروتوكول RC5، وفي هذه الحالة سوف نستخدم التعليمات المخصصة للتعامل مع مستقبلات الأشعة تحت الحمراء التي تعتمد RC5في البيئة Bascom-AVR. سوف يقوم البرنامج باستدعاء مكتبة RC5 الموجودة في البيئة البرمجية Bascom-AVR والتي تحوي على بروتوكول الإرسال المطلوب. يتم إرسال البروتوكول باستخدام التعليمة RC5SEND والتي تقوم بتشغيل المؤقت Timer1 لحساب زمن النبضات بشكل آلي.

 

شرح التعليمة

التعليمة البرمجية

تعليمة إرسال زوج الحالة والعنوان والأمر على القطب OC1A وفق RC5

Rc5send Togbit , Address , Command

يبين الشكل12 طريقة توصيل مرسل أشعة تحت الحمراء إلى القطب OC1(A) مع المتحكم على اللوحة التعليمية Mini-Phoenix.

 

الشكل 12: توصيل مرسل أشعة تحت الحمراء مع المتحكم للتجربة 17

 

البرنامج Exp.17.bas في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : Exp.17.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : RC5 Sender *
' * Description : Sending RC5 Code using IR LED *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPinb.2 =Input:Portb.2 = 1 : Send_ir AliasPinb.2
ConfigDebounce= 500
'-----------------------
'-----------------------[Variables]
Dim Togbit AsByte, Command AsByte, Address AsByte
'---------------------
Command
= 18 : Togbit = 0 : Address = 0
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Debounce Send_ir , 0 , Power_command ,Sub'OC1A pin
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Send RC5 Code]
Power_command
:
If Togbit = 0 Then Togbit = 32 Else Togbit = 0
Rc5send Togbit , Address , Command
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

المؤلف: وليد بليد (سوريا)

البريد الإلكتروني: walidbalid81@gmail.com


 


]]>
walidbalid81@gmail.com (وليد بليد) البرمجة في bascom-AVRه Wed, 11 Sep 2013 00:00:00 +0000
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 4 http://www.isnaha.com/isnaha_new/برمجها/item/1048-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-4 http://www.isnaha.com/isnaha_new/برمجها/item/1048-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-4

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 4

هذه المحاضرة تشرح طريقة ربط وبرمجة شاشات الإظهار الكريستالية المحرفية مع متحكمات AVR. ثم تقدم تطبيقاً عملياً لبرمجة شاشة الإظهار المحرفية في البيئة BASCOM-AVR ومحاكاتها في البيئة Proteus في نمطي العمل 4bit و8bit.

 


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_06_PPTX

Session_06_codes

 


محاضرة المقال

{youtube}FP6KuvRzIX0{/youtube}

 


شاشة الإظهار الكريستالية المحرفية

إن شاشة الإظهار الكريستالية LCD هي عبارة عن مصفوفة نقطية تستخدم لعرض المعلومات والنتائج، ويمكن من خلالها إظهار جميع رموز الآسكي تقريباً والتي يبلغ عددها 189 رمزاً مختلفاً.

 

تعتمد شاشة الإظهار LCD على البلورات السائلة، حيث تم اكتشاف البلورات السائلة أول مرة في عام 1888 من قبل عالم النبات النمساوي فريريك رينتيزير الذي لاحظ أنه عندما يتم صهر الكوليسترول النباتي يصبح غير صافٍ، ومن ثم يأخذ بالصفو عندما ترتفع درجة حرارته. وبالاعتماد على التبريد يبدأ السائل (الكوليسترول) بالتحول إلى اللون الأزرق قبل التبلور الأخير له. في عام 1968 وبعد مرور ثمانين سنة، صنعت شركة RCA شاشة الـLCD الأولى.

 

تحتوي شاشة الإظهار LCD على شريحة معالج إظهار خاص مصنع بتقنية CMOS ويحمل في أغلب شرائح شاشات الإظهار الرقم HD44780 المصنع من قبل شركة Hitachi اليابانية، فتوفر بذلك على المستخدم القيام بالعديد من العمليات الشاقة والمعقدة، كما تزود شاشة الإظهار LCD بذاكرة داخلية خاصة تقسم بدورها إلى قسمين:

  1. ذاكرة المعطيات DD-RAM،

  2. ذاكرة مولد الرموز CG-RAM.

تقوم هذه الذواكر بالاحتفاظ بالرموز المراد إظهارها وتمكن المبرمج من إعادة إظهارها بدون الحاجة إلى إرسالها مرة أخرى. إضافة إلى ذلك تحتوي الشاشة LCD على دارات قيادة (Drivers) لخانات شاشة الإظهار.

تأتي شاشة LCD بمقاسات مختلفة من عدد الأسطر والأعمدة (المحارف)، حيث يمكن أن تكون مؤلفة من سطر حتى أربعة أسطر، ويحتوي كل سطر على عدد من الخانات (المحارف) يتراوح من 16 وحتى 40 الخانة؛ والخانة هي عبارة عن مربع صغير يتم فيه إظهار محرف واحد فقط؛ وأكثر الشاشات شيوعاً هي الشاشات ذات القياسات التالية:

Chars × Lines: 16 x 1 | 16 x 2 | 16 x 4 | 20 x 2 | 20 x 4 | 40 x 2 | 40 x 4

 

تملك شاشات LCD بشكل عام نفس أقطاب التحكم مع وجود بعض الاختلافات البسيطة. يبين الشكل التالي أقطاب التحكم لشاشة LCD ذات سطرين و 16 عمودا وفيما يلي أسماء هذه الأقطاب ووظيفتها.

 

 

الشكل 1: شاشة إظهار كريستالية محرفية ذات قياس 16x2

 

 

الشكل 2: شاشة إظهار كريستالية محرفية ذات قياس 20x4

الشكل 3: الرموز التي يمكن إظهارها على شاشة الإظهار المحرفية

الشكل 4: المحيط الخارجي لشاشة الإظهار المحرفية وتوزع الأقطاب ووظائفها

* القطب Vss: قطب التغذية السالب للشاشة GND.

* القطب Vdd: قطب التغذية الموجب للشاشة 5V+.

* القطب Vo: قطب جهد التباين، ويقصد بالتباين حدة ظهور الرمز على الشاشة. عند أقل قيمة تباين لا يمكن أن تظهر الرموز على الشاشة ويكون هذا عند تطبيق 5v+ على هذا القطب. أعلى تباين للشاشة يكون عند تطبيق GND على هذا القطب ويمكن التحكم بتباين الشاشة عن طريق وصل قطب التباين 0V إلى مقاومة متغيرة 10K.

* القطب RS: قطب مسجل اختيار الدخل للشاشة؛ من أجل إرسال أمر تحكم، يتم وضع أمر التحكم على أقطاب D0-D7 ويتم تطبيق “0” منطقي على هذا القطب؛ ومن أجل إرسال معطيات إلى الشاشة فيتم وضع المعطيات على أقطاب D0-D7 ويتم تطبيق “1” منطقي على هذا القطب.

* القطب R/W: ويتم تطبيق “1” منطقي على هذا القطب للقراءة (R) من ذاكرة الشاشة، ويتم تطبيق “0” منطقي على هذا القطب للكتابة (W) إلى الشاشة.

* القطب E: إن تأكيد عملية إرسال أمر تحكم أو معطيات إلى الشاشة يتم من خلال نبضة تمكين عند الجبهة الهابطة على القطب E.

* الأقطاب منDB0 إلىDB7: هي أقطاب المعطيات (DATA)، حيث يتم كتابة المعطيات أو قراءتها أو كتابة كلمات التحكم إلى شاشة LCD عبر هذه الخطوط.

* القطبين K وA: تملك بعض الشاشات إضاءة خلفية (Backlight) وظيفتها تأمين الإضاءة الكافية للشاشة ليتمكن المستخدم من رؤية العبارات المكتوبة عليها في الليل؛ يتم تشغيل الإضاءة بتطبيق 5V+ على A وGND على K.


أنماط عمل شاشات الإظهار المحرفية

تملك شاشة الإظهار الكريستالية نمطي عمل:

  • نمط العمل 4bit: وفيه يتم استخدام أربعة خطوط من خطوط المعطيات (DB0 إلىDB7) وهي DB4 إلىDB7 ويتم تجاهل (عدم توصيل) باقي خطوط المعطيات (DB0 إلىDB3). وفي هذه الحالة يتم البيانات عبر هذه الخطوط على دفعتين – أي يتم إرسال النصف الأدنى من البايت ثم النصف الأعلى من البايت. ويستخدم هذا النمط بهدف توفير في عدد أقطاب المتحكم المطلوبة وبالتالي سنحتاج إلى ستة أقطاب فقط من المتحكم للتوصيل: DB4 وDB5 وDB6 وDB7 وE وRS.

  • نمط العمل 8bit: وفيه يتم توصيل جميع خطوط المعطيات مع المتحكم وبالتالي سنحتاج إلى عشرة أقطاب من المتحكم لتوصيل الشاشة: DB0 وDB1 وDB2 وDB3 وDB4 وDB5 وDB6 وDB7 وE وRS.

 


برمجة شاشة الإظهار المحرفية LCD في Bascom-AVR

تعليمات التعامل مع شاشة الإظهار الكريستالية LCD في البيئة Bascom-AVR على قسمين:

  1. تعليمات التهيئة (Configuration).

  2. تعليمات الإظهار (Display).

تعليمات التهيئة تتضمن:

  • تحديد أبعاد الشاشة:

ConfigLcd= 16 * 2

  • تحديد نمط العمل والأقطاب الموصولة مع الشاشة

  1. نمط العمل 4bit:من Db4 إلىDb7 تمثل الأقطاب الموصولة مع خطوط المعطيات للشاشة، Rs E, خطوط التحكم.

Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4

  1. نمط العمل 8bit:تمثل Port أقطاب البوابة الموصولة مع خطوط المعطيات للشاشة، Rs E, خطوط التحكم.

Config Lcdpin = Pin , Port =Portc, E =Portd.3 , Rs =Portd.4

تعليمات الإظهار تتضمن مجموعة من التعليمات:

عرض متحول

Lcd var

عرض عبارة نصية

Lcd“Hello World”

إطفاء الشاشة

DisplayOff

تشغيل الشاشة

DisplayOn

إزاحة المحتوى إلى اليمين خانة

ShiftlcdRight

إزاحة المحتوى إلى اليسار خانة

ShiftlcdLeft

تفعيل مؤشر الكتابة – خفقان

CursorOn [Blink]

إخفاء مؤشر الكتابة

CursorOff

إزاحة مؤشر الكتابة خانة إلى اليمين

ShiftcursorRight

إزاحة مؤشر الكتابة خانة إلى اليسار

ShiftcursorLeft

وضع مؤشر الكتابة عند نقطة محددة (سطر/عمود)

Locate X , Y

الانتقال إلى السطر/العمود الأول (نقطة البداية)

HomeUpper

تحريك مؤشر الكتابة إلى السطر التالي

Lowerline

الانتقال إلى السطر الثالث

Thirdline

الانتقال إلى السطر الرابع

Fourthline

وضع مؤشر الكتابة في بداية السطر الثالث

HomeThird

وضع مؤشر الكتابة في بداية السطر الرابع

HomeFourth

تعريف محرف إضافي باستخدام الأداة LCD Designer

Deflcdchar 0, 14, 17,...

إظهار المحرف الإضافي على الشاشة

LcdChr(x)

 

التجربة الرابعة عشرة

المطلوب كتابة برنامج لتشغيل شاشة إظهار محرفية كريستالية في النمط 4bit موصولة إلى متحكم مصغر ATmega32A وفقاً لمخطط التوصيل للوحة التعليمية.

 

ملاحظة: هذا البرنامج يمكن تشغيله مباشرة على اللوحة التعليمية.

الشكل 5: توصيل شاشة LCD مع المتحكم ATmega32 للتجربة 14

البرنامج Exp.14.bas في بيئة BASCOM-AVR:

'****************************************************************************
' * Title : Exp.14.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : 16 x 2 LCD *
' * Description : 4 bit LCD Mode *
'****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Db4 =Portc.2 , Db5 =Portc.3 , Db6 =Portc.4 , Db7 =Portc.5 , E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim I AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Cls
Upperline:Lcd"~~Hello World!~~":Wait 1
Lowerline:Lcd"(LCD 4-bit Mode)":Wait 1

Gosub Shift2right :Gosub Shift2left

Locate 1 , 8 :Lcd":":Wait 1
Locate 2 , 1 :Lcd">":Wait 1

ShiftcursorRight:Wait 1 :ShiftcursorLeft

CursorOffNoblink:Wait 1 :CursorOnBlink

DisplayOff:Wait 1 :DisplayOn

HomeUpper:Wait 1 :Cls

Deflcdchar 0 , 32 , 32 , 10 , 21 , 17 , 10 , 4 , 32
Deflcdchar 1 , 4 , 10 , 17 , 10 , 10 , 17 , 10 , 4
Locate 1 , 9 :LcdChr(0):Wait 1
Locate 2 , 9 :LcdChr(1):Wait 1
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Shift LCD Char to Right]
Shift2right
:
For I = 1 To 8
ShiftlcdRight:Waitms 500
Next I
Return
'-----------------------
'--->[Shift LCD Char to Left]
Shift2left
:
For I = 1 To 8
ShiftlcdLeft:Waitms 500
Next I
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

التجربة الخامسة عشرة

المطلوب كتابة برنامج لتشغيل شاشة إظهار محرفية كريستالية في النمط 4bit موصولة إلى متحكم مصغر ATmega32A وفقاً لمخطط التوصيل للوحة التعليمية.

 

ملاحظة: هذا البرنامج لا يمكن تشغيله على اللوحة التعليمية.

الشكل 6: توصيل شاشة LCD مع المتحكم ATmega32 للتجربة 15

البرنامج Exp.15.bas في بيئة BASCOM-AVR:

'****************************************************************************
' * Title : Exp.15.bas *
' * Target Board : Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : 16 x 2 LCD *
' * Description : 8 bit LCD Mode *
' ***************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[LCD Configurations]
Config Lcdpin = Pin , Port =Portc, E =Portd.3 , Rs =Portd.4
ConfigLcd= 16 * 2
'-----------------------
'-----------------------[Variables]
Dim I AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Cls
Upperline:Lcd"~~Hello World!~~":Wait 1
Lowerline:Lcd"(LCD 8-bit Mode)":Wait 1

Gosub Shift2right :Gosub Shift2left

Locate 1 , 8 :Lcd":":Wait 1
Locate 2 , 1 :Lcd">":Wait 1

ShiftcursorRight:Wait 1 :ShiftcursorLeft

CursorOffNoblink:Wait 1 :CursorOnBlink

DisplayOff:Wait 1 :DisplayOn

HomeUpper:Wait 1 :Cls

Deflcdchar 0 , 32 , 32 , 10 , 21 , 17 , 10 , 4 , 32
Deflcdchar 1 , 4 , 10 , 17 , 10 , 10 , 17 , 10 , 4
Locate 1 , 9 :LcdChr(0):Wait 1
Locate 2 , 9 :LcdChr(1):Wait 1
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Shift LCD Char to Right]
Shift2right
:
For I = 1 To 8
ShiftlcdRight:Waitms 500
Next I
Return
'-----------------------
'--->[Shift LCD Char to Left]
Shift2left
:
For I = 1 To 8
ShiftlcdLeft:Waitms 500
Next I
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

المؤلف: وليد بليد (سوريا)

البريد الإلكتروني: walidbalid81@gmail.com


 


]]>
walidbalid81@gmail.com (وليد بليد) البرمجة في bascom-AVRه Sun, 08 Sep 2013 00:00:00 +0000
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 3 http://www.isnaha.com/isnaha_new/برمجها/item/1047-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-3 http://www.isnaha.com/isnaha_new/برمجها/item/1047-برمجة-الأنظمة-المدمجة-ببيئة-bascom-avr-–-الدرس-3

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 3

هذه المحاضرة تشرح تعليمات الإزاحة والدوران وتقدم مثالاً تطبيقياً عليها. ثم تقدم القواطع في متحكمات AVR وأنواعها وتشرع في القواطع الخارجية ومبدأ عملها ولمحة عن المسجلات الداخلية للقواطع الخارجية. ثم تقدم تطبيقاً عملياً لاستثمار القواطع الخارجية في متحكمات AVR وبرمجتها في البيئة BASCOM-AVR ومحاكاتها في البيئة Proteus. وأخيراً طريقة توصيل لوحة مفاتيح مصفوفية ومنهجية المسح.

 


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.

 


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_05_PPTX

Session_05_codes

 


محاضرة المقال

{youtube}baWQbjt6Z3s{/youtube}

 


الإزاحة (Shifting)

تستخدم تعليمات الإزاحة والدوران بهدف إزاحة زوج واحد أو أكثر - من ثمن أو أكثر – إلى اليمين أو إلى اليسار؛ وهناك فرق بين عملية الإزاحة وعملية الدوران لقيمة ما حيث:

  • في الإزاحة كل زوج يخرج (من اليمين أو اليسار) يدخل مكانه صفر. مثال ذلك: إذا تم إزاحة القيمة B11111111& ثمان مرات إلى اليمين أو اليسار فستصبح القيمة عندها B00000000&.

مثال: A = &B11011011

Shift A ,Right, 1

0

1

1

0

1

1

0

1

Shift A ,Right, 4

0

0

0

0

1

1

0

1

 


التدوير (Rotating)

  • في الدوران كل زوج يخرج (من اليمين أو اليسار) يدخل من الطرف الآخر – أي يتم تدوير القيمة. مثال ذلك: إذا تم تدوير القيمة B11111111& ثمان مرات إلى اليمين أو اليسار فستبقى القيمة على حالها. وإذا تم تدوير القيمة B00001111& أربع مرات إلى اليمين أو اليسار فستصبح B11110000&.

مثال: A = &B11011011

Rotate A ,Right, 1

1

1

1

0

1

1

0

1

Rotate A ,Right, 4

1

1

0

1

1

1

0

1

 


تعليمات الإزاحة والتدوير في Bascom

شرح التعليمة

التعليمة البرمجية

إزاحة زوج من متغير (var) إلى اليمين أو اليسار وعدد خانات الإزاحة محددة بـ [, shift]

Shift var ,Right/Left [, shift]

تدوير زوج من متغير (var) إلى اليمين أو اليسار وعدد خانات الدوران محددة بـ [, shift]

Rotate var ,Right/Left [, rotate]

 

التجربة الحادية عشرة

استخدم المفاتيح اللحظية S1-S2 (PIND.3, PIND.2)iعلى اللوحة التعليمية لإزاحة وتدوير قيمة تظهر على الصمامات الضوئية الثمانية (LEDs) الموصولة بالبوابة PORTC.

الشكل 1: توصيل الثنائيات والمفاتيح مع المتحكم للتجربة 11

 

البرنامج Exp.11.bas في بيئة BASCOM-AVR:

' ******************************************************************************
' * Title : Exp.11.bas *
' * Target MCU : ATMega128A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : DIP-Switch *
' * Description : Shift/Rotate *
' ******************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPortc=Output: Leds AliasPortc

ConfigPind.2 =Input: Sw_1 AliasPind.2 :Portd.2 = 1 'PU Internal Resistor
ConfigPind.3 =Input: Sw_2 AliasPind.3 :Portd.3 = 1
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Leds
=&B11011011
Do
Debounce Sw_1 , 0 , Shift_r ,Sub
Debounce Sw_2 , 0 , Shift_l ,Sub
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Shift LEDs to Right]
Shift_r
:
Shift Leds ,Right, 1
'Rotate Leds , Right , 1
Return
'---<
'--->[Shift LEDs to Left]
Shift_l
:
Shift Leds ,Left, 1
'Rotate Leds , Left , 1
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


القواطع في متحكمات AVR

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

  1. الطريقة التقليدية (Polling):
    يمكن أن نطلق على هذه الطريقة القاطعة البرمجية (Software Interrupts) وتتم بالفحص الدوري لحالة القطب (IfSw = 0 Then) من أجل اكتشاف تغير حالة المفتاح ويتم هذا بشكل برمجي، وبالتالي سوف يشغل المتحكم في عملية الفحص الدوري المتكرر للتحقق من حالة المفتاح بشكل دائم، الأمر الذي سيؤدي إلى ضياع في قدرة المعالجة للمتحكم واستهلاك في الطاقة.

  2. طريقة القاطعة (Interrupt):
    يمكن أن نطلق على هذه الطريقة قاطعة الكيان الصلب (Hardware Interrupts) وتتم من خلال آلية مستقلة مبنية ضمن المتحكم تقوم على قاطعة المتحكم عندما تتحقق الحالة المطلوبة فقط، وبالتالي لن ينشغل المتحكم بتفحص المفاتيح من أجل معرفة فيما إذا تغيرت حالة المفتاح أم لا، وإنما عندما تتغير الحالة المنطقية للمفتاح على قطب القاطعة سوف يتم قاطعة المتحكم ويقفز إلى برنامج خدمة القاطعة الخارجية المتعينة من أجل تنفيذها.

الشكل 2: تمثيل عملية القاطعة والقفز من البرنامج الرئيسي إلى برنامج القاطعة والعودة إلى البرنامج الرئيسي

 


مصادر القواطع في متحكمات AVR

تمتلك العائلة AVR مجموعة كبيرة من مصادر القاطعة المختلفة، وتمتلك كل من هذه القواطع عنوان مستقل في حيز ذاكرة البرنامج، ولكل قاطعة خانة تمكين مستقلة، فعندما نرغب بتفعيل إحدى القواطع فإنه يتوجب علينا تفعيل الخانة المخصصة لها في مسجل التحكم بالقاطعة المعنية إلى جانب تفعيل خانة تمكين القاطعة العامة Iفي مسجل الحالة SREG.

الشكل 3: الخانة 7 شعاع القواطع العام (Global Interrupt Vector) في مسجل الحالة SREG

يمكن تمثيل شعاع القواطع العام (Global Interrupt Vector) بقاطع رئيسي، وباقي القواطع كقواطع فرعية، وبالتالي لا يكفي تفعيل القاطعة الفرعية وإنما يجب أيضاً تفعيل شعاع القواطع العام معها كما هو مبين على الشكل التالي.

الشكل 4: تمثيل لحالة شعاع القواطع العام (Global Interrupt Vector) والقواطع الفرعية الأخرى

 


تصنيف القواطع في متحكمات AVR

يمكن تقسيم القواطع في العائلة AVR إلى مجموعتين رئيسيتين، تضم كل مجموعة من المجموعتين مجموعات فرعية أخرى:

  • قواطع خارجية (External Interrupts):
    لها ارتباط مباشر مع الأقطاب الفيزيائية للمتحكم وتستجيب لأحداث خارجية مطبقة على أقطاب المتحكم وهي:

    • قاطعة التصفير (Reset).

    • قواطع الطلب الخارجي (INT0 إلى INT7).

  •  
  • قواطع داخلية (Internal Interrupts):
    لها ارتباط مع الوحدات المحيطية الداخلية فقط للمتحكم وهي:

    • قواطع المؤقتات (OV, COMP).

    • قواطع حادثة المسك للمؤقتات/عدادات (ICP).

    • قواطع العدادات.

    • قاطعة اكتمال التحويل للـADC.

    • قاطعة اكتمال الإرسال للنافذة التسلسلية SPI (STC)i.

    • قواطع النافذة التسلسلية USART (RX,TX,UDR)i.

    • قاطعة المقارن التشابهي (ANALOG COMP).

    • قاطعة اكتمال كتابة المعطيات إلى الذاكرة EEPROM.

    • قاطعة النافذة التسلسلية TWI.

    • وغيرها...

 


مبدأ عمل القواطع في متحكمات AVR

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

الشكل 5: عناوين أشعة القواطع في المتحكم ATmega32A

 

الشكل 5 يبين القائمة الكاملة للقواطع في المتحكم ATmega32Aوعناوين الأشعة لهذه القواطع، كما تحدد هذه القائمة أيضاً مستويات الأولوية للقواطع، فالعنوان الأخفض ($000) هو الشعاع ذو الأولوية الأعلى، فلقاطعة التصفير مثلاً الأولوية الأعلى ومن ثم القاطعة الخارجية INT0وهكذا...

 

عندما تحدث قاطعة ما فإنه يتم تلقائياً تصفير خانة تمكين القاطعة العامة (I = 0)، وبالتالي تحجب جميع القواطع الأخرى إلى حين الانتهاء من القاطعة الحالية، إلا أن المبرمج يستطيع أن يُفعّل خانة تمكين القاطعة العامة (I = 1) داخل برنامج خدمة القاطعة في حال أريد الإبقاء على القواطع الأخرى. وعندما ينفذ المتحكم تعليمة العودة RETURN الواقعة في نهاية برنامج خدمة القاطعة، فإنه يتم تلقائياً تفعيل خانة تمكين القاطعة العامة (I = 1).

 


ملاحظات هامة حول القواطع في متحكمات AVR

  • عند استخدام أي قاطعة فإنه يجب تفعيل شعاع القواطع العام I والذي يمكن تمثيله كقاطع رئيسي لجميع القواطع.

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

  • إذا تحقق شرط إحدى القواطع أو أكثر، وكانت خانة تمكين القاطعة العامة غير مفعلة (I = 0)، فإن أعلام القاطعة التي حدثت ستفعل (“1”) تلقائياً وتبقى كذلك إلى أن يتم تأهيل خانة القاطعة العامة (I = 1)، فإذا ما تم تفعيل خانة القاطعة العامة (I = 1) عندها يبدأ المتحكم بتنفيذ برامج خدمة القاطعة بحسب أولويات أشعتها.

  • في حال كان المتحكم يقوم بتنفيذ برنامج خدمة قاطعة ما، وفي نفس الوقت حصلت قاطعة أخرى، فإن المتحكم سوف يكمل القاطعة الجارية ويقوم بتخزين القاطعة الطارئة حتى إذا انتهى من القاطعة الجارية عاد إلى البرنامج الرئيسي ونفذ تعليمة واحدة على الأقل من البرنامج الرئيسي ثم سيستدعى القاطعة الطارئة ويقوم بتنفيذها. وأما في حال حصلت عدة قواطع أثناء عمل المتحكم في برنامج خدمة قاطعة ما، فإنه يقوم بمراكمتها حسب أولويتها ويقوم بتنفيذها وفق تسلسل الأولوية بعد انتهائه من برنامج خدمة القاطعة الجارية.

  • عندما ينتهي تنفيذ برنامج خدمة قاطعة ما، فإن سيتم العودة إلى البرنامج الرئيسي وينفذ المتحكم تعليمة واحدة على الأقل قبل أن ينتقل لتنفيذ قاطعة أخرى في حال وجود قواطع متراكمة أثناء برنامج خدمة القاطعة الأخيرة.

  • ينصح بأن يكون برنامج خدمة القاطعة قصيراً جداً (يمكن تفعيل علم تحقق القاطعة وتفحص العلم في البرنامج الرئيسي وتنفيذ جملة تعليمات تبعاً لحالة علم القاطعة) وجميع المعالَجات تتم في البرنامج الرئيسي من أجل الاستجابة المباشرة للقواطع الأخرى حال حصولها.

 


زمن استجابة القاطعة

إن الاستجابة الزمنية عند تنفيذ القواطع بالنسبة لمتحكمات عائلة AVR هي على الأقل أربع دورات ساعة (4-Cycle) يتم خلالها دفع (Push) محتوى عداد البرنامجPC (Program Counter)i إلى المكدس SP ويستهلك الدفع 2-Cycle، ومن ثم يقفز البرنامج إلى برنامج خدمة القاطعة ويستهلك القفز 2-Cycle. وإذا حدثت القاطعة أثناء تنفيذ إحدى التعليمات التي زمن تنفيذها أكبر من دورة واحدة، فإنه يتم استكمال تنفيذ التعليمة قبل الانتقال إلى برنامج خدمة القاطعة. إن العودة من برنامج خدمة القاطعة تستهلك أربع دورات ساعة (4-Cycle) أيضاً يتم خلالها سحب (Pull) قيمة عداد البرنامجPC من المكدس SP ويستهلك السحب 2-Cycle، ومن ثم يقفز إلى البرنامج الرئيسي ويستهلك القفز 2-Cycle، وينفذ ابتداءً من التعليمة التالية للتعليمة التي حدثت عندها القاطعة.

 


القواطع الخارجية في متحكمات AVR

تمتلك متحكمات العائلة AVR أقطاب مخصصة للقواطع الخارجية والتي يرمز لها INT0 و INT1 و… و INT7. الهدف من هذه القواطع الخارجية هو الاستجابة لأحداث معينة تطبق على أقطاب هذه القواطع. تملك هذه القواطع الخارجية أنماط استجابة متعدة للجبهات المطبقة عليها وكذلك يمكن تفعيلها أو إلغاء تفعيلها من خلال مجموعة من مسجلات التحكم الخاصة بهذه القواطع.

 

  مسجلات التحكم بالقواطع الخارجية في متحكمات AVR

تملك القواطع الخارجية ثلاث مسجلات تحكم وهي:

  • GIFR: مسجل أعلام القواطع الخارجية، اختصار لجملة Global Interrupt Flag Register

  • GICR: مسجل التحكم بالقواطع الخارجية، اختصار لجملة Global Interrupt Mask Register

  • MCUCR: مسجل التحكم بنمط عمل القاطعة الخارجية، اختصار لجملة MCU Control Register

 

  1. مسجل التحكم بنمط عمل القاطعة الخارجية MCUR: يتم من خلاله التحكم بحساسية أو نمط استجابة القاطعة للحدث الخارجي المطبق على قطب القاطعة ويوجد أربع حالات وهي:

  1. تقدح عن مستوى الحافة (Low Level)

  2. تقدح عن تغير المستوى (Level Change)

  3. تقدح عن الحافة الهابطة (Falling Edge)

  4. تقدح عن الحافة الصاعدة (Rising Edge)

الشكل 6: مسجل التحكم بنمط عمل القاطعة الخارجية MCUR للقواطع