Изброяване - втора част

Програмирането, управлявано от събития, е това, от което се нуждаете, за да разберете по-добре работата на програмите за микроконтролер с хардуерна поддръжка за USB. С други думи, такива програми се наричат ​​програми, управлявани от събития. Логиката на програмата е внедрена като най-изолираните манипулатори за спонтанни събития. В много обектно-ориентирани среди за разработка тази парадигма се прилага. Когато програмират микроконтролери, такива манипулатори на събития могат да бъдат манипулатори на прекъсвания и основната програма може да се дегенерира в космически товарач, да изпълни празен цикъл. Завършените манипулатори на прекъсвания комуникират помежду си през областта на паметта, достъпна за всички манипулатори. Особено ефективно се решават проблеми, чийто алгоритъм е описан от машина на крайно състояние. Такива задачи често възникват при описване на комуникационни протоколи и работата на технологичните механизми.

Понякога събитията след първоначалната обработка се изпращат до един манипулатор на събития, който се занимава с тяхното разделяне и обработка. Графиката на преходите между състоянията на USB устройство, в процеса на функциониране, моли да бъде анализирана сама от гледна точка на парадигмата за програмиране, управлявана от събития.

част

По-горе говорихме за процеса на изброяване, но процесът на изброяване е само част от жизнения цикъл на устройство в шината, събитията могат да възникнат спонтанно по всяко време и USB устройството трябва да реагира правилно на тях.

Необходима е глобална променлива за съхраняване на текущото състояние на USB устройството. Когато възникне събитие, манипулаторът ще определи текущото състояние по стойността на глобалната променлива, ще предприеме необходимите действия и ще зададе новата стойност на тази променлива в съответствие с новото състояние на USB устройството.

Съществуват различни методи за наблюдение на събитията. Организирайте се като манипулатор на прекъсвания или анкетирайте състоянието на регистрите или като прекъснете таймера, извикайте монитора и анкетирайте регистрите.

Нека изброим събитията на шината, които трябва да доведат до преминаване на USB устройство от едно състояние в друго.

Преход на напрежение от "0" на "1" на шината VBUS. Когато свързвате USB устройство към хоста. Преминава от "свързано" в "захранвано" състояние.

Преход на напрежение от "1" на "0" на шината VBUS. От всяко състояние преминава в „свързано“ състояние.

Команда за нулиране на шината. От всяко състояние, с изключение на „свързано“, то преминава в състояние „в режим на готовност“.

Хостът постави сегмента на шината с USB устройството в „Suspended state“, състоянието на Bus Idle е повече от 3 милисекунди. Преходът в „спряно“ състояние е възможен от всяко състояние, различно от „свързано“.

Хостът извежда USB устройството от спряно състояние. Хостът изпраща специална команда "събуди се" (Resume). Същността на командата, от J състояние, шината се прехвърля в K състояние за 20 милисекунди, а след това в състояние SE0 за 1,33 микросекунди и отново в J състояние за 0,66 микросекунди. Фигура 21 е времева диаграма. След тази команда USB устройството трябва да е готово за получаване на SOF пакети. Тази команда се връща в активно състояние, от което USB устройството преминава в "спряно" състояние.