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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Есть примеры. Курю . Но встал вопрос о тестировании. Хотя бы примерчик запустить и посмареть что да как.
Я наугад выбрал (мне еще изернет и CAN понять надо). Думал юсб самое простое из всего.
Я то ни с чем не работал из перечисленного ((
Может вы посоветуете с чего начать?
Счас склоняюсь в изернету. А как тестировать? Через командную строку пингом? нужно же что бы мое устройство приняло пакет и ответила компу, на что он выдаст что нуль пакетов испорченно. Или есть еще какой софт для теста устройств по изернету ? :( не хочется распыляться. надо уже сосредоточиться на одной задаче. А на какой - выбрать не могу :( Хочется для начала что по легче :(
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Bigcrash, ну а так вы сами посмотрите, что у вас в программе происходит:
1) Управление передаётся на 0-й адрес. Там rjmp перекидывает на start
2) на start-е происходит разрешение глобальных прерываний, настройка всяких регистров, инициализация стека (это, кстати, лучше делать с самого начала), ещё настройка портов.
3) Потом идёт выполнение func: здесь находится бесконечный цикл, в котором постоянной происходит установка вывода 0 и сброс вывода 1 порта C.
На этом основная программа заканчивается. Единственное внешнее проявление - это включение вывода 0. Всё.
Теперь, допустим, вы нажали кнопку и сработало внешнее прерывание. Что происходит:
1) Передаётся управление на адрес 0x001 ( 0x002): ext_int0. В стек кладётся адрес возврата на прерванную команду. Глобальные прерывания отключаются.
2) Производится попытка записи в регистр PIND - эта операция ничего не даст, т.к. PIND не может устанавливать своё состояние со стороны процессора. Он только показывает состояние выводов (есть или нет напряжения лог. единицы) порта D.
3) Происходит переход на main
4) В main начинает исполняться бесконечный цикл: постоянная установка вывода 1 и сброс вывода 0 порта C.
Всё. Внешнее проявление: Переключение установленного вывода с 0-го на 1-й.
На этом месте процессор впадает в тупик: он зациклен на выполнении бессмысленного бесконечного цикла. Прервать его ничто не может: прерывания глобально отключены. Ни на какие действия он больше реагировать не будет, кроме как аппаратного сброса или сторожевого таймера.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

IfoR писал(а):Bigcrash, ну а так вы сами посмотрите, что у вас в программе происходит:

Еще раз напомню для Bigcrash, все это можно наглядно увидеть, благо есть симулятор в студии и у вас есть протеус. Запускайте симуляцию и щелкайте кнопкой пошагового выполнения. Вы сами увидите где затык и какие значения у регистров и портов.
IfoR писал(а):2) Производится попытка записи в регистр PIND - эта операция ничего не даст, т.к. PIND не может устанавливать своё состояние со стороны процессора. Он только показывает состояние выводов (есть или нет напряжения лог. единицы) порта D.

Не забываем модели контроллеров, которые при записи "1" в PINx переключают состояние PORTx...
Аватара пользователя
sputnic1436
Держит паяльник хвостом
Сообщения: 975
Зарегистрирован: Ср дек 17, 2008 21:54:26
Откуда: Днепропетровск

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

Сообщение sputnic1436 »

А обязательно писать программы для микроконтроллеров на Си либо асемблере?
Или можно писать на других языках программирования например visual basic.net или C#...
Изготовление печатных плат + материалы для изготовления плат
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

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

Сообщение SmarTrunk »

Лучше на ассемблере, для 8-разрядных МК. А вообще, на любом языке, для которого есть компилятор в ассемблер для данного МК. Вроде даже на Бейсике можно. Только будет проигрыш в быстродействии и размере кода.
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

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

Сообщение 3DRaven »

В Atmega8 есть две GND и одна VCC. Соответственно обе земли подрубил на общую землю, а питание на +5В.
Напряжение между между каждой из земель (7-8 и 7-22 ноги) должно быть одинаковым? Думаю дело в макетке...
напряжения гуляют на земле и питании...то 1.3В разность на 7-8, а на 7-22 3.8, то еще как...коротит где то кажется.
Может быть такое, что между общей землей и одной из ног-земель контроллера (при том, что она с общей землей соединена напрямую, напряжение 3.3В?
Если кому не сложно померьте на живом контроллере.
Аватара пользователя
Av4arik
Поставщик валерьянки для Кота
Сообщения: 1954
Зарегистрирован: Чт янв 20, 2011 16:47:18
Откуда: Старый Оскол
Контактная информация:

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

Сообщение Av4arik »

3DRaven,
AVCC - Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к внешнему VCC через низкочастотный фильтр.
AREF - Вход аналогового напряжения сравнения для аналого-цифрового преобразователя. На этот вывод, для обеспечения работы аналого-цифрового преобразователя, подается напряжение в диапазоне между AGND и AVCC.
AGND - Этот вывод должен быть подсоединен к отдельной аналоговой земле, если плата оснащена ею. В ином случае вывод подсоединяется к общей земле.

3DRaven писал(а):обе земли подрубил на общую землю, а питание на +5В.

керамику, прямо на ноги МК попробуйте припаять, на те ноги, по которым питание.
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Аватара пользователя
Bigcrash
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 12, 2012 09:32:37

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

Сообщение Bigcrash »

Такой мелкий вопрос. Есть у меня источник питания на 24В, а нужно обычную mega8 питать. Есть стабилизатор на 5В. Так вот вопрос, как лучше сделать, через резистивный делитель или поставить промежуточный стабилизатор. Вроде как на делителе как бы лучше (сделать 16В на верхнем плече падает и оставшиеся 8В на нижнем как раз получается 2 к 1 по номиналам), но тут встал такой вопрос, какой ток должен обеспечиваться на входе питания МК и следовательно какие номиналы брать. Где-то писали что до 200ма, но документации я не нашел, также не нашел и каково сопротивление на входе VCC, AVCC. В ДШ есть такая интересная штука
Power Consumption at 4MHz, 3V, 25C
- Active: 3.6mA

Но я так понял это потребление самого МК без учета периферии.
Вообщем сколько ему на ногу надо, как это все рассчитать/где поглядеть/как лучше сделать?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

Bigcrash писал(а):сделать 16В на верхнем плече падает и оставшиеся 8В на нижнем
и этими 8 вольтами вы собрались питать микроконтроллер?

ставьте 7805 на небольшом радиаторе, и не ломайте голову.
битва с дураками проиграна, победители торжествуют. слава победителям!
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

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

Сообщение SmarTrunk »

Bigcrash
Современные МК довольно экономичные. Собственное потребление зависит, в основном, от тактовой частоты и напряжения питания. Есть эти графики в даташите. Но в любом случае лучше запитать через стабилизатор, 7805 или 78L05.

Конечно, если на выходы подключены какие-то низкоомные нагрузки, то ток потребления возрастет, и может превысить сотню мА. Тогда запитать через 7805 на радиаторе будет в самый раз.

Через резистивный делитель, в принципе можно, но не нужно. Напряжение не должно превысить максимально допустимое (5,5 В), и ток делителя должен быть на порядок больше, чем ток потребления МК (тут полезно понизить тактовую частоту для снижения потребляемого тока). Но и тогда уж лучше не делитель, а стабилизатор на стабилитроне КС147+резистор.
Chettuser

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

Сообщение Chettuser »

Видимо человек опасается что 24-мя Вольтами он спалит стабилизатор на 5В.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

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

Сообщение SmarTrunk »

Ну может я не понял. У 7805 входное напряжение (зависит от производителя) может быть и 35 В, так что нет проблем. Только надо обеспечить нужный теплоотвод, в зависимости от рассеиваемой мощности, а она зависит от потребляемого тока.

В советские времена встречал, что понижали, например, напряжение с 35 до, скажем, 25В, на входе КРЕНки с напряжением стабилизации на 15В. Включали во входную цепь мощный стабилитрон Д815 (или КС815, как их там). Дешево и сердито.
Аватара пользователя
VannO)))
Открыл глаза
Сообщения: 49
Зарегистрирован: Вс дек 05, 2010 00:53:17
Откуда: Киев

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

Сообщение VannO))) »

Такой вопрос. По 8 битным АВР.
например, есть код
int varA = 0x00001001;
int varB = 0x00001010;
varA -= varB;
т.е. отнимаю большее от меньшего. Так вот, что в итоге будет? завис/незвис, флаг какой-нить установит, что запишет в varA.
Макетка в разборе, а писать код надо!
[color=#FF80FF]Не втыкать.[/color]
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

11111111 должно получиться и установятся флаги "переполнение" и "отрицательное значение"
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
VannO)))
Открыл глаза
Сообщения: 49
Зарегистрирован: Вс дек 05, 2010 00:53:17
Откуда: Киев

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

Сообщение VannO))) »

Ага, спасибо. С флагами ясно, а с результатом... всегда будет писать единички, независимо от чисел? Т.е. энтропия информации в переменной стаёт нулевой?
И еще, в случае переполнения. 0х10000000 + 0х10001111 = чему? Снова единички?
[color=#FF80FF]Не втыкать.[/color]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

VannO))) писал(а):всегда будет писать единички, независимо от чисел? Т.е. энтропия информации в переменной стаёт нулевой?
И еще, в случае переполнения. 0х10000000 + 0х10001111 = чему? Снова единички?

Единички получились исходя из чисел что вы дали. Другие числа дадут другой результат. Прочитайте про дополнительный код.
0х10000000 + 0х10001111=0x0001111+флаг переполнения, арифметика везде действует одинаково.
Последний раз редактировалось Engineer_Keen Пт фев 17, 2012 23:35:26, всего редактировалось 3 раза.
Аватара пользователя
VannO)))
Открыл глаза
Сообщения: 49
Зарегистрирован: Вс дек 05, 2010 00:53:17
Откуда: Киев

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

Сообщение VannO))) »

Шикарно. Я б сказал, то что надо. Спасибо за наводку.
[color=#FF80FF]Не втыкать.[/color]
Аватара пользователя
Bigcrash
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 12, 2012 09:32:37

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

Сообщение Bigcrash »

Chettuser писал(а):Видимо человек опасается что 24-мя Вольтами он спалит стабилизатор на 5В.

Именно. 8В я конечно же собирался питать не МК, а стибилизатор.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Ну использовать резистивный делитель напряжения для питания - это как-то стрёмно.
Если использовать чисто один линейный стабилизатор, то взяв, что контроллер потребляет максимум 0.1 А, выделяемая на стабилизаторе мощность будет (24-5)*0,1 ~= 2 Ватта. Здесь достаточно к стабилизатору просто прикрутить к стабилизатору какую нибудь пластинку в качестве радиатора.

А если брать ещё резистивный делитель, то тут такая штука получается.
С учётом, что нам нужен ток для контроллера 0,1 А, то прикинуть сопротивления можно так.
I = I_R1 = I_R2 + I_K = I_R2 + 0.1
I_R2 = 8 / R_2
I_R1 = 16 / R_1

R_1 = 16 / (8 / R_2 + 0.1)

Мощность, выделяемая в "воздух":
W_R1 = 16^2 / R1 = 256 / R1
W_R2 = 8^2 / R2 = 64 / R2
W_S = (8-5)*0.1 = 0.3

В сумме:
W = 256 / R1 + 64 / R2 + 0.3

Зафиксируем здесь значение R2, тогда
W = 256 / (16 / (8 / R_2 + 0.1)) + 64 / R2 + 0.3 = 192 / R2 + 1,9

Отсюда следует, что минимальная выделяемая мощность, которую можно получить меняя значение R2: всё те же 2 Ватта. Но если мы полностью уберём R2, то напряжение на стабилизаторе может сильно меняться в зависимости от тока микроконтроллера. Что бы его более менее зафиксировать, нужно выполнить условие:
8 / R_2 >> 0.1 => R_2 << 80 Ом

Если, допустим, возьмём R2 10 Ом, то выделяемая мощность будет 21,1 Ватт!
И оно после этого надо?
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

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

Сообщение 3DRaven »

Нашел причину! Дело было, как я и писал ранее, в говенной макетной плате с механическими контактами. Закоротило один и вот результат МК шился но не стартовал. Всем спасибо за советы! Зато теперь я знаю как правильно подрубать МК, как уменьшить помехи на АЦП и еще кучу прочих как :)
Ответить

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