Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение coredumped »

Gudd-Head писал(а):Повторюсь: http://www.mymcu.ru/

Попросил Cortex-M4 на частоту больше 160МГц - не нашел. А они есть. Даже больше 100Мгц нашлись только Atmel и Infinion. А куда делись ST, NXP, TI? :dont_know:
Не доделано. Пока фтопку :kill:
Все будет только лучше, в крайнем случае - хуже.
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

что лучше использовать при настройке регистров, логическое ИЛИ,или операцию '+' ....?)) т.е.:
TA0CTL|=TASSEL1|MC0|TAIE;
или
TA0CTL=TASSEL1+MC0+TAIE;
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

лучше побитовое ИЛИ

Код: Выделить всё

TA0CTL|=TASSEL1|MC0|TAIE; 
исключает ошибки при случайном повторении одного и того же значения.
вот например в коде случайно указали дважды бит MC0

Код: Выделить всё

#define TASSEL1 0x01
#define MC0 0x02
#define TAIE 0x04
TA0CTL  = TASSEL1 + MC0 + TAIE + MC0; // здесь результат будет равен = 0x01 + 0x02 + 0x04 + 0x02 = 0x09 = 0b00001001
TA0CTL |= TASSEL1 | MC0 | TAIE | MC0; // здесь результат будет равен = 0x01|0x02|0x04|0x02 = 0x07 = 0b00000111    
в итоге в первом выражении получим установку битов №0 и №3, а во втором - №0, №1 и №2, что собственно и хотелось сделать.
Ставим плюсы: )
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

спасибо, я ещё вроде где-то читал (или не знаю в памяти осталось откуда-то) что ИЛИ быстрее выполняется, сейчас конечно это уже неактуально в век МГц, но всё же интересно знать так ли это)
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

что побитовое ИЛИ, что сложение в операциях между двумя регистрами выполняются равное кол-во времени.
Ставим плюсы: )
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

очередной глупый вопрос))

Допустим у меня таймер, в котором куча флагов, и по ним вызываются прерывания, +к примеру прерывание по кнопке ну т.е. внешнее
Как это описывается в коде...т.е. каждое прерывание для себя имеет конструкцию

Код: Выделить всё

__interrup void event1(void)
{
//операторы
}

__interrup void event2(void)
{
//операторы
}
//и так далее

или это вызывает 1 обработчик прерываний

Код: Выделить всё

__interrup void eventGlobal(void)
{
//операторы както расписанные по условиям для тех или иных прерываний
}


...вот в голове не очень укладваетсякак это всё выглядит и как устроено, т.е. как например 1 событие вызывает такое-то прерывание...
ну т.е. я выставляю кучу флагов и в swithc() проверяю и по флагам уже всё делаю....
Последний раз редактировалось dzrkot Пт дек 06, 2013 13:55:24, всего редактировалось 1 раз.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Почитайте про вектор прерываний и что происходит в МК когда происходит разрешённое прерывание.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

Gudd-Head писал(а):Почитайте про вектор прерываний и что происходит в МК когда происходит разрешённое прерывание.

я не могу найти толковый источник))) я умею пользоваться гуглом, но блин...))
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Даташит на контроллер вам в руки.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

Gudd-Head писал(а):Даташит на контроллер вам в руки.

вот там как-раз подразумевают что я уже втыкаю что это такое)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Да ну? Ссылочку можно?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

dzrkot писал(а):http://www.ti.com/lit/ug/slau208m/slau208m.pdf
MSP430x5xx and MSP430x6xx Family
User's Guide

1.3.6 Interrupt Vectors:
.... See the device-specific data sheet for the complete interrupt vector list.
Чуете разницу? Так что не надо...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

я дал 2 ссылки,в одной User Guide, в другой собственно сам Datasheet.
Последний раз редактировалось dzrkot Пт дек 06, 2013 14:24:17, всего редактировалось 1 раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Аlex »

dzrkot писал(а):в другой собственно сам Datasheet
который Вы, скорее всего не открывали. А если и открыли, то даже не пытались найти таблицу векторов, иначе наткнулись бы на неё в самом начале даташита.
Эти МК мне незнакомы, но мне понадобилось секунд 30, чтобы найти эту таблицу - стр. №16
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

вы читали мой вопрос и вообще что я написал?)
Последний раз редактировалось Аlex Пт дек 06, 2013 14:32:10, всего редактировалось 1 раз.
Причина: -
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Аlex »

Читал.
dzrkot писал(а):
Gudd-Head писал(а):Почитайте про вектор прерываний и что происходит в МК когда происходит разрешённое прерывание.
я не могу найти толковый источник)))
Вам сказали - ищите в Даташите, всё там есть.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

dzrkot писал(а):Всётаки я очень надеялся что мне на простом примитивном языке это подскажут, и в голове вся картина соберётся воедио.

Вектор прерываний — это адреса ячеек памяти программ, которые загружаются в счётчик команд при возникновении прерывания.
Другими словами, МК начинает выполнять команды, расположенные по соотв. адресу прерывания.
Т.е. если у вас будет прерывание DMA, то будет выполняться команда по адресу 0FFE4h.
Обычно вектор прерываний содержит команды безусловного перехода на области памяти, где непосредственно находятся процедуры обработки прерываний.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение dzrkot »

Сейчас просто не надо меня критиковать, скажите правильно ли я переварил) для конкретного моего случая)
В таблице векторов прерываний я нашёл флаг TA0CCR0 CCIFG0, который отвечает за таймер ТА0, по его адресу 0FFECh в IAR в самом хедере этого контера я нашёл такую строку

Код: Выделить всё

#define TIMER0_A0_VECTOR    (54 * 2u) /* 0xFFEC Timer0_A5 CC0 */

т.е. TIMER0_A0_VECTOR - это и есть то, что должно быть в процедуре обработки этого вектора т.е. в Си это будет иметь вид:

Код: Выделить всё

__interrupt void TIMER0_A0_VECTOR (void) 
        {
        //операторы
        }


т.е. для того же DMA я делаю примерно тоже самое, но у меня будет отдельная конструкция

Код: Выделить всё

__interrupt void DMA_VECTOR (void) 
        {
        //операторы
        }
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

что такое прерывание в общих чертах Вы, полагаю уже знаете.
Я могу чуть подробнее рассказать:
В контроллере есть таблица векторов, в которой находятся команды перехода на обработчики прерываний.
Обработчик прерывания - обычная функция, выполняемая в прерывании.
Контроллер в обычном режиме двигает указатель по программной памяти и последовательно считывает и выполняет команды, одна за другой. В момент возникновения какого-либо события (например переполнения счетчика таймера) устанавливается аппаратный флаг. В случае если разрешены глобальные прерывания и разрешено прерывание от возникшего события, указателю программной памяти аппаратно присваивается значение из области таблицы векторов прерываний. Какое именно значение зависит от возникшего события. По соответствующему адресу должен стоять вектор, который направляет указатель на обработчик прерывания.... надеюсь понятно))))


PS пока строчил, тут уже все объяснили)
Последний раз редактировалось ibiza11 Пт дек 06, 2013 14:47:26, всего редактировалось 1 раз.
Ставим плюсы: )
Ответить

Вернуться в «Разные вопросы по МК»