реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SPI Slave, stellaris launchpad
KA_ru
сообщение Jan 19 2013, 23:08
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



может кто поделиться примером реализации SPI Slave.
Взял на попробовать stellaris launchpad. Как мастер запустил, а как Slave не выходит.
Go to the top of the page
 
+Quote Post
KA_ru
сообщение Jan 22 2013, 21:15
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



со Slave разобрался.
разбираюсь теперь с прерываниями.
Вроде сделал все по аналогии с примерами.
Только надо прерывание по двум пинам, а получаю только одно.
Может кто подскажет?

CODE
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,ALL_BUTTONS);
GPIOPadConfigSet(GPIO_PORTF_BASE,ALL_BUTTONS,
GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOIntTypeSet(GPIO_PORTF_BASE,KEY,GPIO_RISING_EDGE);
GPIOIntTypeSet(GPIO_PORTF_BASE,KEY2,GPIO_FALLING_EDGE);

GPIOPinIntEnable(GPIO_PORTF_BASE,ALL_BUTTONS);
IntEnable(INT_GPIOF);

///ISR*****************************

void directionISR(void)
{
state_dir = 1;
key_value = GPIOPinIntStatus(GPIO_PORTF_BASE,true);
GPIOPinIntClear(GPIO_PORTF_BASE,ALL_BUTTONS); //key_value);
UARTprintf("%X,", key_value);
}


Сообщение отредактировал IgorKossak - Jan 23 2013, 08:36
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
nowhow
сообщение Jan 23 2013, 05:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 29-03-11
Из: Санкт-Петербург
Пользователь №: 63 968



Цитата(KA_ru @ Jan 23 2013, 01:15) *
со Slave разобрался.
разбираюсь теперь с прерываниями.
Вроде сделал все по аналогии с примерами.
Только надо прерывание по двум пинам, а получаю только одно.
Может кто подскажет?

Попробуйте по отдельности вызывать прерывания по каждому пину.
И кстати, в библиотеке есть ошибки (напр. в функции GPIOIntTypeGet, по крайней мере в rev 9453), так что аккуратнее).
Как определены KEY и KEY2? должны быть pin^2.

Сообщение отредактировал nowhow - Jan 23 2013, 05:23
Go to the top of the page
 
+Quote Post
KA_ru
сообщение Jan 23 2013, 07:44
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



Извините? как сделать обработчик на каждое прерывание?
Вектор я могу повесить только один. sad.gif
Пины объявляю вот так.

#define KEY GPIO_PIN_4 //USE_SW1
#define KEY2 GPIO_PIN_0 //USE_SW2
#define ALL_BUTTONS (KEY | KEY2)
Go to the top of the page
 
+Quote Post
nowhow
сообщение Jan 23 2013, 08:24
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 29-03-11
Из: Санкт-Петербург
Пользователь №: 63 968



Цитата(KA_ru @ Jan 23 2013, 11:44) *
Извините? как сделать обработчик на каждое прерывание?
Вектор я могу повесить только один. sad.gif

не правильно выразился. Внутри прерывания разделите обработку по каждому пину, и смотрите в какой из обработчиков не заходит.
У меня вот так.
инициализация.
Код
[/code]
       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
    
    ROM_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);
    ROM_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_5);
    
    GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
    GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_5, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
    
    GPIOPinIntEnable(GPIO_PORTC_BASE, GPIO_PIN_4);
    GPIOIntTypeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_BOTH_EDGES);
    GPIOPinIntEnable(GPIO_PORTC_BASE, GPIO_PIN_5);
    GPIOIntTypeSet(GPIO_PORTC_BASE, GPIO_PIN_5, GPIO_BOTH_EDGES);    
    IntEnable(INT_GPIOC);
[code]

тело прерывания
Код
[/code]
    if (GPIOPinIntStatus(GPIO_PORTC_BASE, true) & GPIO_PIN_4)
{
        GPIOPinIntClear(GPIO_PORTC_BASE, GPIO_PIN_4);
...
}
    
    if (GPIOPinIntStatus(GPIO_PORTC_BASE, true) & GPIO_PIN_5)
{
        GPIOPinIntClear(GPIO_PORTC_BASE, GPIO_PIN_5);
...
}[code]


Go to the top of the page
 
+Quote Post
KA_ru
сообщение Jan 23 2013, 08:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



спасибо!!
попробую для инициализации использовать ROM_GPIOPinTypeGPIOInput.
Go to the top of the page
 
+Quote Post
nowhow
сообщение Jan 23 2013, 08:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 29-03-11
Из: Санкт-Петербург
Пользователь №: 63 968



Цитата(KA_ru @ Jan 23 2013, 12:42) *
спасибо!!
попробую для инициализации использовать ROM_GPIOPinTypeGPIOInput.

Не думаю, что проблема в этом.
Просто проверьте значения регистров, которые отвечают за модуль gpio, при пошаговом исполнении программы.
Go to the top of the page
 
+Quote Post
KA_ru
сообщение Jan 23 2013, 23:02
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



Пришлось перебросить прерывание на другой пин. sad.gif
Все заработало.
Не подскажите можно ли организовать двунаправленный SPI с одним проводом данных.
Единственное что приходит в голову подключить два SSI или делать SPI пешком.
Go to the top of the page
 
+Quote Post
nowhow
сообщение Jan 24 2013, 05:14
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 29-03-11
Из: Санкт-Петербург
Пользователь №: 63 968



Не торопитесь на другой пин пересаживать). У вас же используется пин F.0, а он сидит на NMI, поэтому там нужно пляски с бубном устраивать - снимать защиту.
По SPI не подскажу, так как SPI в этом контроллере не задействовал.

Сообщение отредактировал nowhow - Jan 24 2013, 05:17
Go to the top of the page
 
+Quote Post
KA_ru
сообщение Jan 29 2013, 18:27
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 424
Регистрация: 4-10-04
Из: Berlin
Пользователь №: 775



Надо проверит CLK на периодичность. sad.gif
Думаю задействовать таймер.
не подскажите как запускать таймер в ONE_SHOT каждый раз.
можно ли запуск таймера вывести на Pin.
нужно ли его каждый раз инициализировать или достаточно включить выключить.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 12:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016