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

 
 
> spi_slave в Nios
_Anatoliy
сообщение Dec 4 2013, 13:34
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Подскажите,плз,как его нужно делать?Если с мастером более-менее понятно,то со слейвом у меня основная проблема - прерывания.Хочу написать свой обработчик,нужно чтобы по каждому принятому байту происходило прерывание основной программы.Как подключить обработчик?Нужен ли для этого VIC или можно обойтись без него?Литературу,конечно,читаю но как-то тяжело идёт процесс...С Nios раньше практически не работал.Может есть у кого похожий пример?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Stewart Little
сообщение Dec 4 2013, 16:24
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(_Anatoliy @ Dec 4 2013, 17:34) *
Подскажите,плз,как его нужно делать?Если с мастером более-менее понятно,то со слейвом у меня основная проблема - прерывания.Хочу написать свой обработчик,нужно чтобы по каждому принятому байту происходило прерывание основной программы.Как подключить обработчик?Нужен ли для этого VIC или можно обойтись без него?Литературу,конечно,читаю но как-то тяжело идёт процесс...С Nios раньше практически не работал.Может есть у кого похожий пример?

Можно и без VIC, если не нужно быстрого отклика на прерывание. Используйте Internal контроллер (т.е. софтовый).
Обработчик подключается специальной сишной функцией. Вот пример ниосовского кода с использованием пркрываний:
Код
#include "sys/alt_irq.h"
#include "system.h"

#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"

#include "pwm_avalon_interface_regs.h"
#include "pwm_avalon_interface.h"
#include "pwm_avalon_interface.c"

//********************** Global Variables ***********************************************
volatile unsigned short int led_dir;
volatile int return_code;
volatile unsigned char i = 0;
volatile unsigned int duty_cycle[8] = {499999, 150000, 60000, 10000, 5000, 2500, 800, 1};

//********************** ISR functions **************************************************
static void timer_isr (void * context)
{ volatile unsigned char* led_ptr;
  volatile unsigned char* dir_ptr;

  IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);

  dir_ptr = (volatile unsigned char*)context;
  led_ptr = dir_ptr + 1;

  return_code = altera_avalon_pwm_change_duty_cycle(LED_PWM_BASE, duty_cycle[i]);
  IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, *led_ptr);

  if(*dir_ptr)
    { *led_ptr >>= 1;
      i--;
    }
  else
    { *led_ptr <<= 1;
      i++;
    }
  if(*led_ptr & 0x81)
    *dir_ptr ^= 0x1;

}

//********************** Auxiliary functions ********************************************
void check_return_code(unsigned int address, int return_code)
{ if(return_code != ALTERA_AVALON_PWM_OK)
;
//          print_error(address, return_code);
}

//********************* Main function ***************************************************
int main (void)
{ void* led_dir_ptr = (void*)&led_dir;

  led_dir = 0x0100;

  //Timer Initialization
  IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x0003);
  IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);

  IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_BASE, 0x9f00);
  IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_BASE, 0x0055);//0x0014);

  //Register ISR for timer event
  alt_ic_isr_register(TIMER_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_IRQ, timer_isr, led_dir_ptr, 0);

  //Initialize PWM and Check Return Code
  return_code = altera_avalon_pwm_init(LED_PWM_BASE, 500000, 1);
  check_return_code(LED_PWM_BASE, return_code);

  //Enable PWM and Check Return Code
  return_code = altera_avalon_pwm_enable(LED_PWM_BASE);
  check_return_code(LED_PWM_BASE, return_code);

  //Start timer and begin the work
  IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x0007);

//  IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);

  while (1)
   check_return_code(LED_PWM_BASE, return_code);

}



--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Dec 5 2013, 07:11
Сообщение #3


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Stewart Little @ Dec 4 2013, 18:24) *

Большое спасибо,буду пробовать.
По ходу вопрос:какой смысл несёт передаваемый параметр context?Кто его формирует?
Код
static void timer_isr (void * context)


А нет ли у Вас такого же примера для VIC?Или там всё аналогично,только функции другие?
Go to the top of the page
 
+Quote Post
alexPec
сообщение Dec 5 2013, 08:31
Сообщение #4


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(_Anatoliy @ Dec 5 2013, 11:11) *
По ходу вопрос:какой смысл несёт передаваемый параметр context?Кто его формирует?


Сами ставим вроде. Можно поставить указатель на статическую переменную, структуру, внешний порт, или еще чего, чтобы в обработчике брать/писать данные в контекст.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Dec 5 2013, 08:58
Сообщение #5


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(alexPec @ Dec 5 2013, 10:31) *
Сами ставим вроде. Можно поставить указатель на статическую переменную, структуру, внешний порт, или еще чего, чтобы в обработчике брать/писать данные в контекст.

Да,спасибо,я уже понял что указатель задаётся здесь как led_dir_ptr.

Код
alt_ic_isr_register(TIMER_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_IRQ, timer_isr, led_dir_ptr, 0);
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Anatoliy   spi_slave в Nios   Dec 4 2013, 13:34
||- - _Anatoliy   Что-то никак не получается подружиться с эклипсом....   Dec 5 2013, 13:44
|- - Stewart Little   Цитата(_Anatoliy @ Dec 5 2013, 11:11) А н...   Dec 5 2013, 15:33
- - Копейкин   М.б. компилятор не видит декларации прототипа функ...   Dec 5 2013, 15:01
|- - _Anatoliy   Цитата(Копейкин @ Dec 5 2013, 17:01) М.б....   Dec 5 2013, 15:58
|- - gosu-art   Цитата(_Anatoliy @ Dec 5 2013, 18:58) А к...   Dec 6 2013, 05:22
|- - _Anatoliy   Цитата(gosu-art @ Dec 6 2013, 07:22)...   Dec 6 2013, 08:30
|- - Konst_777   Цитата(_Anatoliy @ Dec 6 2013, 11:30) Есл...   Dec 6 2013, 09:07
|- - _Anatoliy   Коллеги,подскажите синтаксис вызова в WinXP Nios I...   Dec 9 2013, 15:52
- - Konst_777   Цитата(_Anatoliy @ Dec 4 2013, 17:34) ......   Dec 5 2013, 15:05
- - Копейкин   В *.h обычно ставят "предохранители" от ...   Dec 6 2013, 08:59
|- - _Anatoliy   Цитата(Копейкин @ Dec 6 2013, 10:59) На ...   Dec 6 2013, 09:05
- - Kuzmi4   2 _Anatoliy пробелы ему не нравятся я так понял, о...   Dec 9 2013, 17:23
|- - _Anatoliy   Цитата(Kuzmi4 @ Dec 9 2013, 19:23) 2 _Ana...   Dec 10 2013, 08:05
- - Kuzmi4   Прицепил батник и скрипт У меня он рабоатет без п...   Dec 10 2013, 08:21
|- - _Anatoliy   Цитата(Kuzmi4 @ Dec 10 2013, 10:21) Прице...   Dec 10 2013, 08:37
- - Kuzmi4   2 _Anatoliy теперь ясно - путей нет к sof2flash/el...   Dec 10 2013, 08:53
|- - _Anatoliy   Цитата(Kuzmi4 @ Dec 10 2013, 10:53) 2 _An...   Dec 10 2013, 09:11
- - Kuzmi4   2 _Anatoliy попробуйте везьде явно все пути указат...   Dec 10 2013, 09:14
|- - _Anatoliy   Цитата(Kuzmi4 @ Dec 10 2013, 11:14) 2 _An...   Dec 10 2013, 09:27
|- - _Anatoliy   Всё получилось,благодарю за внимание.   Dec 10 2013, 11:58
|- - gosu-art   Цитата(_Anatoliy @ Dec 10 2013, 14:58) Вс...   Dec 10 2013, 12:50
|- - _Anatoliy   Цитата(gosu-art @ Dec 10 2013, 14:50...   Dec 10 2013, 13:17
|- - _Anatoliy   А как понять вот этот перл от эклипса?Файл alt_typ...   Jan 31 2014, 09:09
|- - Stewart Little   Цитата(_Anatoliy @ Jan 31 2014, 13:09) А ...   Jan 31 2014, 09:59
|- - _Anatoliy   Цитата(Stewart Little @ Jan 31 2014, 11:5...   Jan 31 2014, 10:11
|- - gridinp   Цитата(_Anatoliy @ Jan 31 2014, 14:11) Ku...   Jan 31 2014, 10:46
- - Kuzmi4   2 _Anatoliy у меня такая же ситуация случается на ...   Jan 31 2014, 09:21
|- - _Anatoliy   Цитата(Kuzmi4 @ Jan 31 2014, 11:21) 2 _An...   Jan 31 2014, 09:26
- - Kuzmi4   2 _Anatoliy нет, заново в IDE компоную проект с ну...   Jan 31 2014, 09:36


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:21
Рейтинг@Mail.ru


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