Страница 161 из 628

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

Добавлено: Пн фев 28, 2011 21:25:25
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.
Не вызвано ли такое поведение подтяжкой кнопок на землю? Как на самом деле правильно проектировать "цифровые" кнопки?

Решил проблему - пятнадцатую ногу микросхемы надо было завести на землю.

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

Добавлено: Вт мар 01, 2011 04:13:01
Av4arik
Программатор stk200/300
мк Аttiny2313
вопрос:
Внешний кварц (4МГц) при первом программировании мешать не будет запуску внутреннего генератора? Или нужно убрать пока не переведу на тактирование от внешнего источника?

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

Добавлено: Вт мар 01, 2011 07:23:15
AI_Disable
Av4arik писал(а): Внешний кварц (4МГц) при первом программировании мешать не будет запуску внутреннего генератора?
Не будет.

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

Добавлено: Вт мар 01, 2011 11:47:05
Грендайзер
Всем доброго здоровичка :) Небольшой вопросик по VHDL, никак не могу понять что за тип данных такой Usigned, и чем он отличается от Std_logic_vector? И ещё вопрос, при указании в программе типа Usingned, там с подключением библиотек какая то замута не понятная, необходимо именно numeric какуюто подключать, можно поподробней?

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

Добавлено: Вт мар 01, 2011 18:58:44
Necroteeth
как выглядят индуктивности, что для АЦП используются в атмегах и есть ли их картинки в Sprint Layout?

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

Добавлено: Вт мар 01, 2011 23:40:50
sachok
Есть способ сделать програмный сброс (ресет) atmega? (что то похоже на кратковременое заземление пина reset)

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

Добавлено: Ср мар 02, 2011 00:10:25
AI_Disable
sachok, нет, такой возможности нет. Хард ресет ничто не заменит. Но если есть ватчдог, то можно использовать его.
PS: Вопрос уже многократно обсуждался, в следующий раз не поленитесь воспользоваться поиском :wink:

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

Добавлено: Ср мар 02, 2011 02:14:27
neon_613
Народ, как узнать что контроллер умер?
у меня есть плата sk-mlpc2368 с контроллером lpc 2368 так вот все работало пока не отвалился стабилизатор напряжения. он отвалился в процессе работы... вот теперь контроллер шьется и читается с памяти то что зашил и можно прочесть версию загрузчика, но он не работает. не подает признаков жизни. он помер?

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

Добавлено: Ср мар 02, 2011 08:22:20
КРАМ
AI_Disable писал(а):sachok, нет, такой возможности нет. Хард ресет ничто не заменит. Но если есть ватчдог, то можно использовать его.
PS: Вопрос уже многократно обсуждался, в следующий раз не поленитесь воспользоваться поиском :wink:
По моему вопрос стоял о СОФТОВОМ ресете...
Это довольно полезный инструмент программирования...
Конечно плохо, что его нет в системе команд...

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

Добавлено: Ср мар 02, 2011 10:26:56
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);   
      };
}


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

Добавлено: Ср мар 02, 2011 12:01:04
Jack_A
Wereww писал(а): больше ничего...может часы надо каким - либо способом еще и запускать ?..)
За давностью точно не вспомню, нужно даташит смотреть, но что есть бит пуска/остановки часов - это совершенно определенно.

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

Добавлено: Ср мар 02, 2011 12:22:08
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 кОм - но в даташите молчок - только пара формул :(

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

Добавлено: Ср мар 02, 2011 12:26:48
Gudd-Head
Necroteeth писал(а):как выглядят индуктивности, что для АЦП используются в атмегах и есть ли их картинки в Sprint Layout?
Как вариант, могут быть SMD как резисторы и конденсаторы.

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

Добавлено: Ср мар 02, 2011 17:25:33
Jack_A
Может быть, это поможет ?

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

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

Добавлено: Ср мар 02, 2011 18:48:37
Грендайзер
Всем доброго здоровичка :) Небольшой вопросик по VHDL, никак не могу понять что за тип данных такой Usigned, и чем он отличается от Std_logic_vector? И ещё вопрос, при указании в программе типа Usingned, там с подключением библиотек какая то замута не понятная, необходимо именно numeric какуюто подключать, можно поподробней?

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

Добавлено: Ср мар 02, 2011 19:22:41
Wereww
Jack_A писал(а):Может быть, это поможет ?

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

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

Добавлено: Ср мар 02, 2011 20:25:40
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 (для альтеры). Где находится для ксайлинкса - не знаю.

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

Добавлено: Ср мар 02, 2011 20:44:21
Грендайзер
Meteor, спасибо, постоянно мне в ентом нелёгком деле помогаете :) Аа то нигде не мог найти нормального описания типов. Вся отечественная литература поголовно и, почти бездумно сдирается нашими "великими мыслителями" с иностранной, а в той, я не особо ориентируюсь, в тех книгах, что нашёл на английском языке, так же пока не встретил подробного описания.

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

Добавлено: Ср мар 02, 2011 22:58:38
Jack_A
Wereww писал(а): Залей картинку...
http://photofile.ru/photo/gaev/2123653/ ... 318722.jpg

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

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