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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

Собрал на 74HC165 клавиатурку по такой схеме:
Изображение

программа-обработчик (по таймеру):

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

   #define KB_ANTIDREB 1
   uint8_t i;
   uint8_t kb_buff=0;
   uint8_t kb_out=0;
   KB_PORT &= ~(1<<KB_LOAD); // дергаем LD схемы в ноль - в порт вывода загружаются данные
   KB_PORT |= (1<<KB_LOAD);    // поднимаем LD
   if(KB_PIN&(1<<KB_Q7)) kb_buff|=1; //считываем первый пин (нога D7)
   for(i=0;i<7;i++)
   {
      KB_PORT &= ~(1<<KB_STROBE); // дергаем ножкой строба
      KB_PORT |= (1<<KB_STROBE);
      kb_buff<<=1; // делаем сдвиг в буферном байте
      if(KB_PIN&(1<<KB_Q7)) kb_buff|=1; //считываем последующие пины (D6..D0)
   }
   // обработка на дребезг
   for(i=0;i<8;i++) //в цикле просматриваем kb_buff
   {
      if(kb_buff&(1<<i)) kb_flags[i]+=1; else kb_flags[i]=0;
      if(kb_flags[i]>=KB_ANTIDREB)
      {
         kb_out |=(1<<i);
         kb_flags[i]-=1;
      }
   }
   keyboard = kb_out;


получаю глюк: при одновременном нажатии кнопки 0 и 7 МК считывает все кнопки как нажатые (лог. 1), зажатая кнопка 0 "мерцает", т.е. попеременно считывается то как 0 то как 1.
Не вызвано ли такое поведение подтяжкой кнопок на землю? Как на самом деле правильно проектировать "цифровые" кнопки?

Решил проблему - пятнадцатую ногу микросхемы надо было завести на землю.
Последний раз редактировалось Shurf Чт мар 10, 2011 18:35:31, всего редактировалось 1 раз.
Аватара пользователя
Av4arik
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Чт янв 20, 2011 16:47:18
Откуда: Старый Оскол
Контактная информация:

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

Сообщение Av4arik »

Программатор stk200/300
мк Аttiny2313
вопрос:
Внешний кварц (4МГц) при первом программировании мешать не будет запуску внутреннего генератора? Или нужно убрать пока не переведу на тактирование от внешнего источника?
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

Av4arik писал(а):Внешний кварц (4МГц) при первом программировании мешать не будет запуску внутреннего генератора?

Не будет.
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

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

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

Всем доброго здоровичка :) Небольшой вопросик по VHDL, никак не могу понять что за тип данных такой Usigned, и чем он отличается от Std_logic_vector? И ещё вопрос, при указании в программе типа Usingned, там с подключением библиотек какая то замута не понятная, необходимо именно numeric какуюто подключать, можно поподробней?
Аватара пользователя
Necroteeth
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

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

Сообщение Necroteeth »

как выглядят индуктивности, что для АЦП используются в атмегах и есть ли их картинки в Sprint Layout?
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

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

Сообщение sachok »

Есть способ сделать програмный сброс (ресет) atmega? (что то похоже на кратковременое заземление пина reset)
Я не Сашок!!!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

sachok, нет, такой возможности нет. Хард ресет ничто не заменит. Но если есть ватчдог, то можно использовать его.
PS: Вопрос уже многократно обсуждался, в следующий раз не поленитесь воспользоваться поиском :wink:
neon_613
Встал на лапы
Сообщения: 147
Зарегистрирован: Пн авг 16, 2010 01:07:29

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

Сообщение neon_613 »

Народ, как узнать что контроллер умер?
у меня есть плата sk-mlpc2368 с контроллером lpc 2368 так вот все работало пока не отвалился стабилизатор напряжения. он отвалился в процессе работы... вот теперь контроллер шьется и читается с памяти то что зашил и можно прочесть версию загрузчика, но он не работает. не подает признаков жизни. он помер?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

AI_Disable писал(а):sachok, нет, такой возможности нет. Хард ресет ничто не заменит. Но если есть ватчдог, то можно использовать его.
PS: Вопрос уже многократно обсуждался, в следующий раз не поленитесь воспользоваться поиском :wink:

По моему вопрос стоял о СОФТОВОМ ресете...
Это довольно полезный инструмент программирования...
Конечно плохо, что его нет в системе команд...
Аватара пользователя
Wereww
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

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

Сообщение Wereww »

Доброго времени суток ! Помогите с проблемкой - подключил к 8й меге DS1307 - никак не могу прочитать время ( спаяно все идеально - по даташиту - питание 5в и поттяжки по 4,7к на линии, контроллер затактирован на 1Мгц. Пишу на кодвижене - при любом обращении к часам - контроллер "повисает" - что делать незнаю :?

(Поправка - зависание кончилось - теперь при чтении на первом кругу цикла выдаёт - 165-165-165 - и далее 00:00:80 - и больше ничего...может часы надо каким - либо способом еще и запускать ?..)

Кусочек кода:

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

// LCD module initialization       
lcd_init(16);

// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);

lcd_putsf("Initialization..\nPlease wait...");
delay_ms(2000);

while (1)
      {
      // Place your code here   
      rtc_get_time(&h, &m, &s);   
      lcd_clear();       
      sprintf(time, "%02d:%02d:%02d", h, m, s);
      lcd_puts(time);           
      delay_ms(1000);   
      };
}

Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Wereww писал(а): больше ничего...может часы надо каким - либо способом еще и запускать ?..)


За давностью точно не вспомню, нужно даташит смотреть, но что есть бит пуска/остановки часов - это совершенно определенно.
Аватара пользователя
Wereww
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

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

Сообщение Wereww »

Jack_A писал(а):
Wereww писал(а): больше ничего...может часы надо каким - либо способом еще и запускать ?..)


За давностью точно не вспомню, нужно даташит смотреть, но что есть бит пуска/остановки часов - это совершенно определенно.


Только просмотрел даташит и полазил по буржуйским сайтам...вобщем конструкция запуска не работает...

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

rtc_get_time(&h, &m, &s);
s = 0 << 7;                   
rtc_set_time(h, m, s);


И еще момент - когда отключаю "подтяжки" - контроллер виснет - подключаю - все "работает" - замерил вольтаж - постоянно на линиях (SDA/SCL) +4в - а также скачки +0,3в в момент передачи видимо (оссцила нет под рукой) - все дело именно в запуске я думаю...хотя есть глубокие сомнения насчёт подтяжек - на некоторых схемах видел и по 10 кОм - но в даташите молчок - только пара формул :(
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Necroteeth писал(а):как выглядят индуктивности, что для АЦП используются в атмегах и есть ли их картинки в Sprint Layout?

Как вариант, могут быть SMD как резисторы и конденсаторы.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Может быть, это поможет ?

Что-то картинка не прицепляется. Смысл в том, что по даташиту состояние часов в момент включения не определено. Поэтому при инициализации нужно бит CH установить в 0.
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

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

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

Всем доброго здоровичка :) Небольшой вопросик по VHDL, никак не могу понять что за тип данных такой Usigned, и чем он отличается от Std_logic_vector? И ещё вопрос, при указании в программе типа Usingned, там с подключением библиотек какая то замута не понятная, необходимо именно numeric какуюто подключать, можно поподробней?
Аватара пользователя
Wereww
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

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

Сообщение Wereww »

Jack_A писал(а):Может быть, это поможет ?

Что-то картинка не прицепляется. Смысл в том, что по даташиту состояние часов в момент включения не определено. Поэтому при инициализации нужно бит CH установить в 0.


Ставлю, только толку.... :? Залей картинку...
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Грендайзер писал(а):...не могу понять что за тип данных такой Usigned, и чем он отличается от Std_logic_vector?

Unsigned - тип безнаковых целочисленных данных. В то время как Std_logic_vector- "набор" битовых полей.
Применение обоих обусловлено тем, что не все операции поддержиаются для того или иного типа данных.
Например, необходимо реализовать счетчик и его данные сравнивать с наперед заданным значением выраженным битовым полем.
Применение типа Integer позволит реализовать счетчик, однако сравнивать можно только однотипные выражения. (некорректно сравнивать integer с std_logic_vector)
Для сравнения, необходимо привести типы к одноименным. Данную операцию проще проделать с парой Unsigned и std_logic_vector, нежели приводить integer к unsigned, а затем к std_logic_vector или в обратном направлении.
Более того, записывая преобразование типов в виде std_logic_vector(X), заранее определено, что оба типа имеют размерность n бит. С Integer'ом все не так просто - его размерность выражена диапазоном от 0 до N, где N- число. Опреировать числом не всегда удобно.
И еще, VHDL требует "формализации" представления. Например, корректно будет проведена операция сравнения данных
data1:in std_logic_vector(15 downto 0);
data2:in std_logic_vector(15 downto 0);
if(data1=data2)
....
end if;
И неверно (большинство синтезаторов) обработают выражение
data1:in std_logic_vector(0 to 15);
data2:in std_logic_vector(15 downto 0);
if(data1=data2)
....
end if;
Длина одинакова, но "направленность" разная.
Грендайзер писал(а): И ещё вопрос, при указании в программе типа Usingned, там с подключением библиотек какая то замута не понятная, необходимо именно numeric какуюто подключать, можно поподробней?

Данный тип данных представлен библиотекой numeric_std (для альтеры). Где находится для ксайлинкса - не знаю.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

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

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

Meteor, спасибо, постоянно мне в ентом нелёгком деле помогаете :) Аа то нигде не мог найти нормального описания типов. Вся отечественная литература поголовно и, почти бездумно сдирается нашими "великими мыслителями" с иностранной, а в той, я не особо ориентируюсь, в тех книгах, что нашёл на английском языке, так же пока не встретил подробного описания.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Wereww писал(а): Залей картинку...

http://photofile.ru/photo/gaev/2123653/ ... 318722.jpg
Аватара пользователя
Wereww
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

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

Сообщение Wereww »

Да что такое...немогу запустить часы и все тут...ни на асме ни на си...уже перерыл все сорцы на форуме и всевозможные варианты перелопатил....никак... :? i2c программный (portc sda=5 scl=4), как попадаю в цикл - то мёртво намертво нули одни...может ресет подтянуть к питанию или увеличить сопротивления на линиях до 10 кОм ?.. :cry:
Ответить

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