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

 
 
> FreeRTOS + прерывания
3.14
сообщение Nov 13 2006, 09:54
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Пользуюсь FreeRTOS+SAM7x256
Разъясните плиз попопулярнее как засовывать свои обработчики прерывания и какие тонкости в контексте операционки следует учитывать.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
3.14
сообщение Nov 13 2006, 18:31
Сообщение #2


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



А в чем тогда смысл этих оберток (это кейловское "наследие")?
Просто в примере с uIP сокетом, обработчик прерывания MAC-а написан по вышеупомянутой схеме.

Насчет AVR, хотите сказать что в периферии SAM7 многое от AVR?
Меня, если честно, больше на филлипс тянет но пока ни образцев ни тем более серийных экземпляров их арм-ов с MAC-ами нет.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 13 2006, 18:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(3.14 @ Nov 13 2006, 20:31) *
А в чем тогда смысл этих оберток (это кейловское "наследие")?

Для тех, кто без __irq

Цитата
Насчет AVR, хотите сказать что в периферии SAM7 многое от AVR?

Хотел написать Atmel :-)

Цитата
Меня, если честно, больше на филлипс тянет но пока ни образцев ни тем более серийных экземпляров их арм-ов с MAC-ами нет.

Внешний на SPI - и все проблемы..


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
3.14
сообщение Nov 13 2006, 22:31
Сообщение #4


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Цитата(zltigo @ Nov 13 2006, 22:40) *
Цитата

Меня, если честно, больше на филлипс тянет но пока ни образцев ни тем более серийных экземпляров их арм-ов с MAC-ами нет.

Внешний на SPI - и все проблемы..
Не нравится.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 19 2006, 22:41
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Вчера нарвался на грабли с IARом.

Суть такая. Беру FreeRTOS, из него - демку под SAM7S64, которая USB-джойстик.
Для начала все выкинул лишнее, оставил только USB и мигание диодами.
Потом решил добавить обработчик на ADC. Сделал все точно так-же, как у них в демке сделано для USB. Единственная разница - я не запускаю отдельной задачей весь "пакет" с инициализацией, а просто инициализирую ADC, разрешаю прерывание и все. Да, необходимое уточнение. Файлы я назвал ADC.s79 и ADC.c. В первом - асмовая обертка, во втором - инициализация и собственно обработчик.

Дальше компилю, заливаю во флеш (тут еще один вопрос, задам в отдельной ветке), и..... глухо, даже диоды не моргают.

Удивляюсь, оставляю код, но выкидываю запуск инициализации (по идее, все по дефолту - прерывания не разрешены, и т.д. и т.п., просто есть кусок кода в бинарнике, который никогда не выполняется) - те-же грабли.

Попробовал в отладчике запустить и, что меня удивило, запуск начинается почему-то не в Cstartup.s79, а в ассемблерной обертке обработчика ADC. Ну в общем меня посетила странная мысль и я переименовал файлы из ADC.* в xADC.*. После этого все заработало.

Это что, такая мода у компилятора - менять точку входа в зависимости от имени файлов?
Ну и, заодно, вопрос. Правомерно ли после инициализации ADC выполнять AT91F_AIC_ConfigureIt и AT91F_AIC_EnableIt и забывать о всех проблемах? Достаточно ли этого?
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 20 2006, 01:20
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Дело было не в бобине wink.gif

Я не учел, что четыре из восьми каналов АЦП завернуты на кнопки и светодиоды wink.gif Соответственно, ничего не жило и не моргало.

Вот только теперь - вопрос.

Вот обработчик:
Код
static __arm __irq void vADC_ISR(void)
{
  unsigned portCHAR i = 0;
  unsigned portCHAR sr =0;
  
  // Read status register
  sr = a_pADC->ADC_SR & 0xff;
  
  /*
  sADC_RAW[0]=a_pADC->ADC_CDR4;
  sADC_RAW[1]=a_pADC->ADC_CDR5;
  sADC_RAW[2]=a_pADC->ADC_CDR6;
  sADC_RAW[3]=a_pADC->ADC_CDR7;
  */
  
  sBUTTONS[7]=sr;
  for (i=0;i<8;i++)
   {
     if ( (sr >> i) & 0x01)
      {
        // Bit is set, put data to array
        sADC_RAW[i]= (*( AT91C_ADC_CDR0 + (0x04*i))) & 0xff;
      }
   }
  
  // Start new conversion
  a_pADC->ADC_CR = 0x2;
  
  /* End the interrupt in the AIC. */  
  AT91C_BASE_AIC->AIC_EOICR = 0;
}


Что не так в цикле? wink.gif Не работает wink.gif
Go to the top of the page
 
+Quote Post
megaloki
сообщение Nov 21 2006, 11:28
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 28-09-05
Пользователь №: 9 057



Цитата(Kitsok @ Nov 20 2006, 01:20) *
/* End the interrupt in the AIC. */
AT91C_BASE_AIC->AIC_EOICR = 0;

Скажы зачем ты вызываеш ету команду ведь у тебя директива перед функцией стоит __irq?


--------------------
Было бы железо софт напишем
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 21 2006, 13:16
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(megaloki @ Nov 21 2006, 11:28) *
Цитата(Kitsok @ Nov 20 2006, 01:20) *

/* End the interrupt in the AIC. */
AT91C_BASE_AIC->AIC_EOICR = 0;

Скажы зачем ты вызываеш ету команду ведь у тебя директива перед функцией стоит __irq?


Я смотрел листинг, там одно присвоение идет. Т.е. выкидывать EOICR=0 я не пробовал, но так - работает wink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 3.14   FreeRTOS + прерывания   Nov 13 2006, 09:54
- - zltigo   Цитата(3.14 @ Nov 13 2006, 11:54) Разъясн...   Nov 13 2006, 10:05
- - 3.14   1) создал асмову обложку Код RSEG ICODE:CODE ...   Nov 13 2006, 10:44
- - 3.14   Блин, сижу как дыбыл ничего не понимаю, за соседни...   Nov 13 2006, 15:07
|- - zltigo   Цитата(3.14 @ Nov 13 2006, 17:07) Блин, с...   Nov 13 2006, 17:19
- - Пришелец   Код /* End the interrupt in the AIC. */ AT91C_B...   Nov 13 2006, 15:07
- - 3.14   пробовал, поведение не меняется   Nov 13 2006, 15:10
- - 3.14   Под IAR-ом.   Nov 13 2006, 17:56
|- - zltigo   Цитата(3.14 @ Nov 13 2006, 19:56) Под IAR...   Nov 13 2006, 18:10
|- - AVR   Цитата(zltigo @ Nov 13 2006, 18:10) Тогда...   Nov 24 2006, 03:21
|- - zltigo   Цитата(AVR @ Nov 24 2006, 02:21) Я, честн...   Nov 24 2006, 10:40
|- - Kitsok   Цитата(AVR @ Nov 24 2006, 03:21) Я, честн...   Nov 24 2006, 13:05
|- - Сергей Борщ   Цитата(megaloki @ Nov 21 2006, 10:28) Цит...   Nov 22 2006, 12:13
- - vmp   Цитата(Kitsok @ Nov 19 2006, 22:41) Вчера...   Nov 20 2006, 11:19
- - IgorKossak   Цитата(vmp @ Nov 20 2006, 10:19) Цитата(K...   Nov 20 2006, 11:32
- - Kitsok   ЦитатаВ очередной раз удивляюсь тому, как программ...   Nov 20 2006, 13:35


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

 


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


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