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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
russo_turisto
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

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

Сообщение russo_turisto »

Подскажите, правильно ли написал?

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

OPTION_REG = (0<T0CS)|(0<PSA)|(1<PS2)|(1<PS1)|(1<PS1);                  // внутр тактовый генератор ТМРО, предделитель перед ТМРО, 1:256


Понимаю что неправильно. Нулевые биты умножать надо,
как записать?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

так используйте тогда на последней микросхеме, на нее есть даташит по любому.

И супервизор добавьте. Что-то типа MC33064. Для крутизны самое то.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

russo_turisto, записи вида (0<T0CS)|(0<PSA) не имеют смысла чуть более, чем полностью. Имена "T0CS" и подобные - просто номера битов, и это выражение просто обычная битовая маска, так что "0" нет смысла писать.
russo_turisto
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

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

Сообщение russo_turisto »

Да ведь сдвиг неужен <<

Хотел в одной строке битовую маску наложить нулей и едениц.

OPTION_REG |= (0<<T0CS)|(0<<PSA)|(1<<PS2)|(1<<PS1)|(1<<PS1);
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Так установить биты можно просто так: (1<PS2)|(1<PS1)|(1<PS1)
Нули не помешают, а вот почему не работает подсказать не смогу. Надо даташит смотреть.
russo_turisto
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

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

Сообщение russo_turisto »

Это получается строку придется на две разбивать?

Для едениц OPTION_REG |= (1<<PS2)|(1<<PS1)|(1<<PS1);

Для нулей OPTION_REG &= (0<<T0CS)|(0<<PSA); //Это надо проверить!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

В одной строке записать не получиться?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Нули записывать не надо, они просто игнорируются. Запись вида (1<<PS2)|(1<<PS1) интерпретируется в (1<<5)|(1<<3) и далее в 0b00101000 (установить третий и пятый бит, считая с нуля). И это число пишется в регистр.
3 и 5 я для примера привёл. В оригинале надо смотреть, как объявлены PS1 и PS2
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

russo_turisto писал(а):Для нулей OPTION_REG &= (0<<T0CS)|(0<<PSA); //Это надо проверить!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Не правильно возьмите калькулятор и проверьте при сдвиге вдвигаются нули, так что ваша запись не поможет, в отличие от этой:

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

OPTION_REG &= ~((1<<T0CS)|(1<<PSA)); 

Так ваши биты точно сбросятся.Можно обойтись и одной строкой, но все равно биты для очистки придется отделять от битов для установки.
Типа такого

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

 OPTION_REG = (OPTION_REG&~((1<<T0CS)|(1<<PSA)))|(1<<PS2)|(1<<PS1)|(1<<PS1); 

Это если остальные биты неохота трогать.Они хоть и перезапишутся, но останутся в том же состоянии, что и до записи. Причем должны записаться одновременно очистка и установка.
Последний раз редактировалось vitalik_1984 Чт янв 03, 2013 04:07:35, всего редактировалось 1 раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

vitalik_1984 писал(а):в отличие от этой:

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

OPTION_REG &= !((1<<T0CS)|(1<<PSA)); 

Так ваши биты точно сбросятся.
На сколько мне известно, символ "!" обозначает логическое НЕ, а не инверсию. Для инверсии нужно использовать оператор "~". :roll:
russo_turisto, компилятор какой ?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Был не прав :) исправил.
russo_turisto Ваш вариант очистит все биты данного регистра.
russo_turisto
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

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

Сообщение russo_turisto »

Спасибо за ответы, проверю.

А пока записал так

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

T0CS_bit = 0;
  PSA_bit = 0;
  PS0_bit = 1;                    //1:64
  PS1_bit = 0;
  PS2_bit = 1;


Компилятор микроси.

Кстати вопрос по этому компилятору, там нет отладки с помощью пиккит2?

Приходиться отлаживать в протеусе с COFF файлом.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

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

typedef enum {TOGGLE, SET, CLEAR}eBITCHANGES;

unsigned char changeBit(unsigned char byte, unsigned char bitNr,
      eBITCHANGES how)
{
   if (how == TOGGLE)
      byte ^= 1 << bitNr;
   else if (how == SET)
      byte |= 1 << bitNr;
   else if (how == CLEAR)
      byte &= ~(1 << bitNr);

   return byte;
}
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Изучал инфу про ПЛИС и возник у меня довольно тривиальный вопрос. Память ПЛИС энергозависимая. Это относится к структуре тригеров и SRAM или только к SRAM?
Собираю самопальный мини-компьютер
Chettuser

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

Сообщение Chettuser »

И к тому и к другому.
Если FPGA, то конфигурация пишется в отдельное ЗУ. При включении считывается в FPGA, при выключении всё внутри FPGA пропадает.
Если CPLD, то как правило всё пишется во внутреннюю EEPROM память.
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

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

Сообщение Грендайзер »

Уважаемые коты, всех с наступившим 2013 годом... понимаешь! Недавно появилась необходимость поработать с контроллерами AVR. Я в них совсем не спец (нет ну диодиками моргал и всё такое но...). В своё время делал для них программатор LPT однако куда то он делся, да и как то он уже не катит. Посему, хочу сварганить программатор USB, однако разбираться с ним нет времени и желания, посему может кто нибудь посоветует "железный" такой, который сто пудов работает, что б собрать и не думать. А то на какой сайт не залезу так везде написано то это не работает, то то отвалилось и пр. Заранее спасибо.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Нормально можно только купить могу от себя посоветовать AVR Dragon.Все есть за ~3000 рублей.
А если собирать то вот это AVRISP mkII новый клон (поддерживает XMEGA)
Там вроде не требуется первоначальный программатор все через вложенный интерфейс.
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

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

Сообщение Грендайзер »

Ясно, спасибо
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Chettuser писал(а):И к тому и к другому.
Если FPGA, то конфигурация пишется в отдельное ЗУ. При включении считывается в FPGA, при выключении всё внутри FPGA пропадает.
Если CPLD, то как правило всё пишется во внутреннюю EEPROM память.


Благодарю за ответ. То есть в FPGA есть какие-то стандартные интерфейсы загрузки прошивки, например, из внешней flash памяти?
Не подскажите какие-нибудь принципиальные схемы для подключения минимальной обвязки плис ALTERA? Конкретно интересует EP3C5E144C8N или EP2C5T144C8N.
В гугле одни только платы без схем.
Собираю самопальный мини-компьютер
Chettuser

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

Сообщение Chettuser »

Интерфейс по которому загоняется прошивка называется JTAG.
Схему обвязки можете взять здесь, правда там под другой камень.

По поводу внешней микросхемы для конфигурации точно сказать не смогу - я в основном имел дело с CPLD MAX II, у них всё внутри. И с XILINIX на работе - у той есть маленькая микрушка рядом - это и есть конфигурационная память. общаются по последовательному протоколу, возможно разновидность SPI.
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Chettuser писал(а):Интерфейс по которому загоняется прошивка называется JTAG.
Схему обвязки можете взять здесь, правда там под другой камень.

По поводу внешней микросхемы для конфигурации точно сказать не смогу - я в основном имел дело с CPLD MAX II, у них всё внутри. И с XILINIX на работе - у той есть маленькая микрушка рядом - это и есть конфигурационная память. общаются по последовательному протоколу, возможно разновидность SPI.


У марсохода я уже рассматривал их схемы, в частности их программатор и собираюсь собирать под неё. Но там схема несколько запутанная для их основной платы.
Там питание разводится, как я понял, отдельно для ядра и отдельно для пинов, на 3.3v и 1.2v соответственно. Не понятно, можно ли подать с одного преобразователя питание и туда и туда? К тому же там стоит преобразователь на 0.8 ампер, подойдёт ли преобразователь на 0.5? В частности LM2937IMP-3.3. И как делится ток между пинами тоже осталось загадкой для меня...

Конфигурационная память в терре нашлась достаточно быстро, хотя я надеялся обойтись обычной flash памятью, чтобы место было с запасом, но, видимо, не получится. Конфигурационная память хранит только соединения триггеров или может хранить и код для SRAM в ПЛИС? Например, программный код для софтварного процессора.
Собираю самопальный мини-компьютер
Ответить

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