МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

Такой подход приводит к необходимости использования всего 26 дополнительных команд, что является весьма впечатляющим результатом, который обеспечивает очень быстрое переключение задач.

Более традиционный способ, при котором происходит сохранение всех регистров, также возможен. Но он имеет недостаток - очень большой требуемый объем памяти SRAM, используемой для записи всех регистров контекста задачи. Например, в микроконтроллерах AVR, которые имеют память SRAM объемом 512 байт, а сохранение содержимого всех регистров для каждой задачи требует минимум 32 байта, при использовании этого метода может поддерживаться не более 12 задач. Другим его недостатком является значительное время, необходимое для сохранения и восстановления всех регистров каждый раз, когда происходит прерывание или переключение задач. Я пробовал использовать этот вариант и обнаружил, что для его реализации необходимо 83 команды - это более чем в три раза превышает размер приведенного выше кода.

Рис. 34.3. Пример использования регистров AVR для реализации ОСРВ

Обратите внимание еще на одну вещь — явное использование команд «cli» и «reti» в программе ОСРВ. В AVR нет команды программного прерывания, поэтому бит 1 в регистре SREG не будет автоматически замаскирован при переключении задач. Поэтому при вызове процедуры ОСРВ надо замаскировать прерывания и сохранить содержимое SREG.

Go to Top