Василий_гость (17.02.2010 17:04, просмотров: 2525)
Быстрая обработка прерывания на PIC18 на языке С. Необходимо максимально быстро обработать прерывание от SPI в PIC18(выгрузить полученный байт из регистра SSPBUF в память, положить в этот регистр новые данные для отправки). Весь обработчик должен уместиться в 10-15 асемблерных строк. Это требование связано с тем, что посылки от мастера по SPI приходят с очень маленьким интервалом времени 5 байт с интервалом 1,5 мкс. Учитывая аппаратную часть устройства этого времени хватит на выполнение приблизительно 15 асемблерных комманд.
Если писать весь проект на Ассемблере, то прерывание реально обработать за 10 ассемблерных операций, потому что можно заранее подготовить прерыванию указатели на ячейки памяти в FSR регистрах.
Если писать проект на С, то при входе в прерывание компилятор сохраняет состояние FSR регистров, а при выходе из прерывания компилятор возвращает сохранённые значения обратно. Таким образом, длинна обработчика прерывания уже имеет 8-10 асемблерных строк.
Подскажите как можно сократить длинну обработчика прерывания. Может в каких-то компиляторах есть возможность настроить быстрый вход и выход в обработку прерывание??