Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Закрытая тема
 
Опции темы Опции просмотра
Старый 11.01.2011, 18:11   #1
Клякса
Junior Member
 
Регистрация: 19.11.2010
Сообщений: 17
Вес репутации: 100/37
Клякса will become famous soon enoughКлякса will become famous soon enough
По умолчанию Работа с SPI по прерыванию от таймера. PIC18, HiTech

Скажите вот есть таймер0 у PIC18. Период переполнения/прерывания 1ms. Я хочу внутри обработчика поместить функцию, которая отправит и одновременно получит 4 байта по аппаратному SPI. Скорость SPI достаточна для того чтоб передать 20 байт в течении 1ms.

Цитата:
...
IPEN = 1; /* Включаем приоритетную систему прерываний */
GIEH = 1; /* Разрешаем прерывания высокого уровня */
GIEL = 1; /* Разрешаем прерывания низкого уровня */
TMR0IP = 0; /* Устанавливаем низкий приоритет таймеру 0 */
TMR0IE = 1; /* Разрешаем прерывание от таймера 0 */

T0CON &= 0x00;
T08BIT = 1;
TMR0ON = 1;
T0PS0 = 1;
...
void SPI_Led_Key ( void ) {

CLR_PL();
SET_PL();

Array_Keys[0] = SPIRWChar(Array_Leds[0]);
Array_Keys[1] = SPIRWChar(Array_Leds[1]);
Array_Keys[2] = SPIRWChar(Array_Leds[2]);
SPIRWChar(Array_Leds[3]);

SET_ST_CP();
CLR_ST_CP();

}
...
void SPIHardInit(CHAR mode, CHAR speed){



TRISC3 = 0;
TRISC4 = 1;
TRISC5 = 0;

switch (mode)
{
case SPI_MODE0 : CKP = 0; CKE = 1; break;
case SPI_MODE1 : CKP = 0; CKE = 0; break;
case SPI_MODE2 : CKP = 1; CKE = 1; break;
case SPI_MODE3 : CKP = 1; CKE = 0; break;
}

SMP = 0;
speed &= 0x0F;
SSPCON1 = (SSPCON1 & 0xF0) | speed;
SSPEN = 1;
SSPIP = 1; /* Установка высокого приоритета прерывания от SPI */
SSPIE = 1;
}

INT08U SPIRWChar(INT08U spi_out) {

SSPBUF = spi_out;
while (!SPI_FLAG);
SPI_FLAG = 0;

return SSPBUF;
}
...

void interrupt my_high_isr(void) { /* Функция высокого уровня прерывания */

if ((SSPIE)&&(SSPIF)) { /* Проверка флагов прерывания от SPI */
SSPIF=0;
SPI_FLAG=1;
}
}


void interrupt low_priority my_low_isr(void) { /* Функция низкого уровня прерывания */

if ((TMR0IE)&&(TMR0IF)) { /* Проверка флагов прерывания от таймера */
TIMER0_TC++;
TMR0IF=0;
SPI_Led_Key();
}
}
Программа затыкается ожидая SPI_FLAG, шо делать? Спасибо!
Клякса вне форума  
Старый 11.01.2011, 19:41   #2
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/105
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Работа с SPI по прерыванию от таймера. PIC18, HiTech

http://caxapa.ru/233043.html
DL36 вне форума  
Старый 12.01.2011, 11:07   #3
Клякса
Junior Member
 
Регистрация: 19.11.2010
Сообщений: 17
Вес репутации: 100/37
Клякса will become famous soon enoughКлякса will become famous soon enough
По умолчанию Re: Работа с SPI по прерыванию от таймера. PIC18, HiTech

Цитата:
Сообщение от DL36 Посмотреть сообщение
всем спасибо, разобрался.
Клякса вне форума  
Закрытая тема


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сново проблема с счётчиком на pic16f84 ChiperKO Вопросы начинающих 41 16.10.2009 21:07
Помогите с настройкой SPI для PIC18 LWA Продукция MICROCHIP 5 14.05.2009 12:34
как отловить момент изменения сигнала PIC16F84 vas38 Продукция MICROCHIP 14 25.03.2008 16:18
PIC18F4520 проблемы с UART-ом AlHakim Продукция MICROCHIP 4 30.10.2007 07:31
Программная симуляция pic16F876 в MPLAB Timik Продукция MICROCHIP 2 12.10.2007 15:12


Часовой пояс GMT +3, время: 17:27.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot