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

 
 
> затыкается stdout в NiosII, из-за прерываний
torik
сообщение Feb 24 2011, 15:13
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Возникла проблема.

В программе под NiosII используется вывод в консоль fprintf. Очень удобно для отладки.

Добавил в систему VIC и написал обработчик прерываний для таймера. Таймер генерит прерывание с периодом 1мс.

И тут у меня начал затыкаться вывод в stdout (в функции main в бесконечном цикле). Как только я закоментил код обработчика прерываний, все заработало:

Код
//********************** ISR functions **************************************************
//void timer_interrupt_init (void* base, alt_u32 irq_controller_id, alt_u32 irq)
//{
//  /* Register the interrupt */
//  alt_ic_isr_register(irq_controller_id, irq, timer_interrupt_irq, base, NULL);
//
//  irq_cnt = 0;
//
//  /* Start timer */
//  IOWR_ALTERA_AVALON_TIMER_CONTROL(base, ALTERA_AVALON_TIMER_CONTROL_ITO_MSK
//  | ALTERA_AVALON_TIMER_CONTROL_START_MSK);
//}
//
//void timer_interrupt_irq (void* base)
//{
//  /* Clear TO bit in status register */
//  IOWR_ALTERA_AVALON_TIMER_STATUS (base, 0);
//
//  if (irq_cnt < 1000) {
//      irq_cnt++;
//  } else {
//      irq_cnt = 0;
//      send_tx_buffer(&tx);
//  }
//
//  /*Start timer */
//  IOWR_ALTERA_AVALON_TIMER_CONTROL(base, ALTERA_AVALON_TIMER_CONTROL_ITO_MSK
//  | ALTERA_AVALON_TIMER_CONTROL_START_MSK);
//
//}


Это как-то лечится, не? Отчего происходят такие сбои?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Reanimator++
сообщение Feb 25 2011, 14:18
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763



Можно в прерывании взводить семафор (есть отправка на SPI) а потом вызывать функцию отправки которая его проверяет, тогда неточность вызова таймера заменится на неточность во времени отправки данных.
Впрочем тот же микриум должен это дело достаточно быстро обработать (вытесняющая ос все-таки).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- torik   затыкается stdout в NiosII   Feb 24 2011, 15:13
- - vadimuzzz   точно помню, делал и тут выкладывал. а найти не мо...   Feb 24 2011, 15:31
- - vadimuzzz   во, нашел. ваш косяк, думаю, видно где: Код#includ...   Feb 25 2011, 04:44
- - torik   Не вкурил, где конкретно? Прерывания срабатывают с...   Feb 25 2011, 06:34
|- - vadimuzzz   Цитата(torik @ Feb 25 2011, 12:34) Не вку...   Feb 25 2011, 06:45
- - torik   Да, да, заметил уже. Но... не помогло. Несколько p...   Feb 25 2011, 06:50
- - vadimuzzz   а что в main? есть ли другие прерывания? есть ли з...   Feb 25 2011, 07:04
- - torik   Других прерываний нет. А не может ли это быть из-...   Feb 25 2011, 07:25
|- - vadimuzzz   Цитата(torik @ Feb 25 2011, 13:22) функци...   Feb 25 2011, 07:26
- - torik   Запретил прерывания в main на момент выполнения фу...   Feb 25 2011, 07:36
|- - vadimuzzz   Цитата(torik @ Feb 25 2011, 13:36) И вооб...   Feb 25 2011, 07:46
- - torik   пока еще в стадии формирования   Feb 25 2011, 09:10
- - vetal   ЦитатаПобочный эффект - неточность вызова прерыван...   Feb 25 2011, 10:48
- - torik   Спасибо! Я еще вернусь к теме, когда алгоритм ...   Feb 26 2011, 19:19
- - gosu-art   А при выполнении подпрограммы обработки прерывания...   Jul 6 2011, 17:10
- - WitFed   Ох, мужики, это опасное дело -- вызывать файловые ...   Dec 8 2011, 15:51


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

 


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


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