Обробка прийнятих за протоколом USART даних на прикладі ATmega8, AVR Lab пристрою
Форум з AVR
Обробка прийнятих за протоколом USART даних на прикладі ATmega8
Дуже часто доводиться здійснювати зв'язок з різними пристроями через модуль USART мікроконтролера, приймати та надсилати дані. Ось якраз можна обробляти дані і наведу приклад обробки даних прийнятих за протоколом USART.
Для реалізації нам знадобляться навички роботи з перериваннями, а саме нам знадобиться вектор переривання, що спрацьовує на прихід байта каналом USART . Заглянувши, наприклад, у datasheet на мікроконтролер ATmega8 на сторінці 44 розташована таблиця переривань даного мікроконтролера.

Нам знадобиться вектор номер 12 у таблиці. У програмі він буде позначений як:USART_RXC_vect
Якщо коротко, то переривання - це подія і під час виконання якого основна програма на якийсь час зупиняється, і починає виконуватися підпрограма, яка за алгоритмом повинна виконуватися при спрацьовуванні даного переривання.
У таблиці переривань мікроконтролера показано, що вектор переривання (вектор - це по суті джерело, причина переривання) може бути від натискання кнопки підключеної до одного з двох входівInt0 іInt1 до спрацьовування на переповнення внутрішнього 16-ти бітного лічильника мікроконтролера.
шматок коду для переривання після приходу байта за протоколомUSART :
І так основи пройшли, тепер сама програма. Для більш наближеного знайомства давайте зробимо програму, яка визначатиме що ми прийняли і відповідно до цього вона виконуватиме певну дію. У даній програмі алгоритм наступний: якщо ми отрималиUSART "1" - відправляємо поUSART букву"R", а якщо прийняли "2" - то відправляємопоUSART літеру"L".