Курсовая работа: Разработка специализированного процессора для исполнения элементарных функций
Описание алгоритма программы микроконтроллера:
1. Подача напряжения питания на устройство, автоматически происходит сброс и запуск внутреннего генератора тактовых импульсов;
2. Инициализация режимов работы контролера и его внутренних устройств (портов, интерфейсов и т.д.);
3. Переход в энергосберегающий режим ожидания Power Down;
4. Ожидание прерывания INT1, выводящего контролер из спящего режима;
5. При приходе сигнала SS происходит загрузка регистров SPI и прием данных по MISO от УКС.
6. Анализ полученных данных. Если получена команда 1 – запуск вычисления функции arcth Z, если получена команда 2 – функции arcsin Z.
7. Начало вычисления заданной функции:
1 этап вычислений - расчет ri , Xi (для функции arcth Z) или ri , Qi (для функции arcsin Z);
2 этап вычислений – расчет Yi , Qi или Xi
8. Установка флага завершения вычислений;
9. Выдача результата по MOSI;
10. Ожидание прерывания либо INT0 переводящего в спящий режим контроллер, либо INT1 запускающего следующий расчёт.
3.2 Разработка программного обеспечения
Листинг программы на языке C++ для микроконтроллера ATmega16:
//== Библиотеки ========================================
#include <mega16.h>
#include <delay.h>
#include "ctype.h"
#include "stdlib.h"
//== Global Variables =====================================
#define TRUE 1
#define FALSE 0
#define COM1 0x01//команда начала вычислении arCthZ
#define COM2 0x02 //команда начала вычислении arcsinZ
#define GICRMask 0xC0 //разрешение прерываний Int0 Int1
#define MCUCRMask 0xCF //спящий режим POWER Down прерывания по низкому уровню
#define nMCUCRMask 0x0F //запретрежима POWER Down
// биты для настройки SPI
#define MOSI 5 //выходный данные передаются по 5 биту порта В