Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Наше творчество > Микроэлектроника

Микроэлектроника Программирование под Arduino, AVR и другие МК. Вопросы конструирования.

Ответ
 
Опции темы
Старый 11.01.2017, 15:12   #1
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,095
Написано 675 полезных сообщений
(для 1,678 пользователей)
Arduino

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

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Phantom за это полезное сообщение:
ABTOMAT (12.01.2017), DarkInside (11.01.2017), EvilOkta (12.01.2017), Gector (13.01.2017)
Старый 12.01.2017, 21:10   #2
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 304
Написано 107 полезных сообщений
(для 228 пользователей)
Ответ: Статика

О! Ардуинщикам привет =) потом покажу кому интересно, что у меня получилось ))
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (12.01.2017)
Старый 16.01.2017, 12:10   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Статика

Сообщение от Phantom Посмотреть сообщение
Я тоже ненавижу паять, поэтому большую часть времени делаю так:

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

По теме: а что насчёт флешек, внешних HDD?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 16.01.2017, 13:54   #4
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 304
Написано 107 полезных сообщений
(для 228 пользователей)
Ответ: Статика

Сообщение от impersonalis Посмотреть сообщение
Н Кстати, arduino как-то защищён от возможности считать прошивку с готового устройства и реверсировать её?
вроде есть возможность извлечь .HEX а потом дизасемблировать, но это изврат ИМХО
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 17.01.2017, 10:30   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Статика

Получается, что после заливики программа будет выполняться всегда при наличии питания. Таким образом, чтобы "успокоить" подключённую плату нужно залить "пустышку" или есть кнопка стенд-бай?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (17.01.2017)
Старый 17.01.2017, 11:27   #6
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 304
Написано 107 полезных сообщений
(для 228 пользователей)
Ответ: Статика

либо пустышку да, либо самому врезать в цепь питания кнопку ее отключающую. Может и еще способы есть.
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (17.01.2017)
Старый 17.01.2017, 12:41   #7
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,001
Написано 1,142 полезных сообщений
(для 2,753 пользователей)
Ответ: Статика

Ну, на AVR (да и многих других МК, возможно на всех) есть ножка Reset. Дёргая её можно перезагружать МК, а если просто подать постоянную логическую единицу - МК по факту будет в состоянии недо-stand-by. Но лучше программно повесить одну ножку на кнопку и этой кнопкой основную часть программы включать/выключать.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (17.01.2017)
Старый 17.01.2017, 17:01   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,095
Написано 675 полезных сообщений
(для 1,678 пользователей)
Ответ: Статика

Большинство моих поделок дальше макетки не уходят.
Платы нигде не заказываю и не травлю, если чо-то и паяю, то вот на таких макетках:



Можно залочить кристал, чтобы прошивку нельзя было считать, но я никогда этого не делал, потому что не было такой нужды. Про реализации USB хоста я не слышал, да и USB флешки никто в здравом уме подключать не будет, а вот SD карты без проблем, но опять же без аппаратной поддержки (реализуется программно путём дёрганья ног по специальному протоколу).Ну точнее, есть аппаратный SPI, который обычно и используют для подключения к SD картам, но он отвечает лишь за отправку и приём одного байта по проводам, а сам протокол реализуется программно. Но ничто не мешает и SPI сделать программно (многие, я в том числе, делают так на микроконтроллере ATtiny85, у которого нет аппаратного SPI).

Прошивки пишу на чистом Си, ардуиновские среду и либы не использую.

Программа, если писать на Си, выполняется как обычно, точка входа - функция main, как только она закончилась, контроллер перестаёт что-либо делать (ну кроме прерываний, наверно). Прерывания - это что-то вроде отдельных функций, которые вызываются по определённому событию. То есть если сейчас выполнялся основной поток программы, то он останавливается на текущей инструкции, выполняется прерывание, а потом программа продолжает выполнение с того момента, где остановилась. Нужно постоянно следить за атомарностью и отключать прерывания во время выполнения операций, для которых важна целостность. Если где-то в основном потоке программы делаем counter++; и в то же время где-то в прерывании есть counter = 0; то всё обязательно в какой-то непредсказуемый момент пойдёт не так, потому что инкремент занимает несколько инструкций процессора и прерывание может вклиниться где-то между ними.

Прерывания есть разные, например: через каждые N тактов процессора, приём байта по SPI или UART, при смене логического уровня на ножке (повесь туда кнопку и будешь иметь событие нажатия этой кнопки, которое мгновенно реагирует). Впрочем кнопки обычно обрабатывают в основном цикле программы, потому что кнопки часто объединяют в матрицы (как в клавиатурах) и нужно производить их опрос.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (18.01.2017)
Старый 17.01.2017, 18:46   #9
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,555
Написано 533 полезных сообщений
(для 1,475 пользователей)
Ответ: Статика

Кстати реверс прошивки их HEX несложен, ибо инструкций у МК немного и алгоритмы там обычно применяются достаточно простые.

Есть еще один подводный камень с питанием МК. Если плавно снижать питание (например подключив к параллельно кондесатор на 2000 мкФ), то при достижении некоторого напряжения МК не может быть в каком-то определенном состоянии и начинает рандомно выполнять инструкции, иногда дело доходит до того, что повреждается прошивка. Я сам с этим столкнулся несколько раз. Теперь использую схему со стабилизатором напряжения (7805) и парочкой керамических конденсаторов маленькой емкости (1-2 мкФ) - это обеспечивает резкое выключение питания процессора при пропадании напряжения на входе стабилизатора.
__________________
The Mine on GitHub
Core 2 Quad @ 2.66 ГГц, NVIDIA GTX 960 4 Гб, 6 Гб ОЗУ

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
ABTOMAT (19.01.2017), impersonalis (18.01.2017), Phantom (17.01.2017), St_AnGer (17.01.2017)
Старый 17.01.2017, 21:35   #10
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,095
Написано 675 полезных сообщений
(для 1,678 пользователей)
Ответ: Статика

Офигеть, не сталкивался с таким. У меня пока только у одной ATtiny85 ножка сгорела.
(Offline)
 
Ответить с цитированием
Старый 18.01.2017, 09:31   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Статика

Сообщение от Phantom Посмотреть сообщение
Большинство моих поделок дальше макетки не уходят.
Платы нигде не заказываю и не травлю, если чо-то и паяю, то вот на таких макетках:
Можно подробнее? Ссылку?

Сообщение от Phantom Посмотреть сообщение
Нужно постоянно следить за атомарностью и отключать прерывания во время выполнения операций, для которых важна целостность. Если где-то в основном потоке программы делаем counter++; и в то же время где-то в прерывании есть counter = 0;
Ну это знакомо. Это понятно. Тут эдакая "блокирующая многопоточность" получается? (Основной поток прерывается, вторичным, но никогда не выполняется одновременно с ним.) Таким образом из примитивов синхронизации - просто нативные переменные-флаги?

Сообщение от mr.DIMAS Посмотреть сообщение
Есть еще один подводный камень с питанием МК.
Я так понимаю - у того же Arduino и прочих каузальных интерфейсных плат всё уже сделано из коробки?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 18.01.2017, 10:36   #12
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,555
Написано 533 полезных сообщений
(для 1,475 пользователей)
Ответ: Статика

Вроде бы там уже есть на плате стабилизатор.

Кстати, платы делать не столько сложно, сколько долго. Сначала рисуешь плату в Sprint Layout, потом печатаешь на лазерном принтере, подготавливаешь текстолит (пошкурить нулевкой, прокипятить в воде со стиральным порошком для обезжиривания). Далее переводишь рисунок на плату утюгом, потом начинаешь химичить по вкусу - хлорид железа (III) или персульфат аммония или лимонная кислота + соль + перекись. Медь травится довольно медленно, поэтому надо подогревать раствор и постоянно перемешивать его. Потом идет сверление отверстий, залуживание платы, и наконец пайка деталей. В итоге только на технологическую часть уходит около двух часов при наличии опыта, а на рисование платы в несколько раз больше (в зависимости от сложности, конечно). Так что да, макетка с пятачками это выход, но собранное устройство выглядит как правило неказисто.
__________________
The Mine on GitHub
Core 2 Quad @ 2.66 ГГц, NVIDIA GTX 960 4 Гб, 6 Гб ОЗУ

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
impersonalis (18.01.2017), Phantom (18.01.2017), St_AnGer (18.01.2017)
Старый 19.01.2017, 04:41   #13
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,095
Написано 675 полезных сообщений
(для 1,678 пользователей)
Ответ: Статика

Отвечаю на вопросы Импера.

Вот смотри: Сборка на макетной плате разной степени убогости.

В своё время, когда жил с родителями, купил лазерный принтер с задумкой, что может буду травить платы, но на то время это были только идеи, на деле я электроникой почти не занимался. Сейчас у меня принтера нет и ставить его некуда, поэтому изготовлением плат даже не пытаюсь заниматься. Но даже перед тем как паять что-то на макетке с пятачками, я теперь рисую схему в Sprint-Layout, чтобы более компактно разнести все детали па площади платы и правильно развести землю. Ну а на пластиковой макетке собираю прямо на лету из головы. Написание прошивки занимает гораздо большее время, чем собирание деталек на макетке. Поэтому сначала как лего собираешь, а потом уже сидишь за ноутбуком и кодишь. Последнее время задумываюсь сделать беспроводной программатор и UART, потому что провода USB от ноутбука мешают, так как сижу обычно на диване, а ноутбук на коленях.

Синхронизация осуществляется при помощи манипуляции битов в различных регистрах. Есть бит, которым можно разрешить или запретить все прерывания одним махом, но кроме того есть биты в разных регистрах для манипуляции каждым прерыванием по отдельности. По умолчанию в компиляторах Си предлагается к использованию макрос при объявлении функции-прерывания, который блокирует все прерывания при входе в прерывание и разрешает при выходе. Таким образом все прерывания будут выполняться последовательно (прерывание непрерывно, лол). Но при желании можно добиться поведения, когда прерывания будут вклиниваться в другие прерывания, но говорят, что это может привести к проблемам. Я с ассемблером знаком мало, но вроде бы для компилятора вызов каждого прерывания - это довольно напряжная ситуация, потому что это происходит в непредсказуемый момент времени и нужно правильно эти ситуации разруливать. А при нескольких вложенных прерываниях, то ли регистров общего назначения на всё может не хватить, то ли ещё чо-то там. Может кто-то из булочников разъяснит подробнее.

В ардуиноподобных платах ставят стабилизатор на 3.3 или 5 вольт, смотря что требуется. При 3.3 вольт производителем микроконтроллеров не гарантируется стабильная работа на максимальной частоте. Кстати сказать, если вы не делаете систему управления ракетами, то нефиг делать завести ардуину хоть на 25 мегагерцах, хотя производитель рекомендует максимум 16. А если использовать внешний генератор тактовых сигналов, то мне кажется можно и выше. Только при разгоне учитывайте, что микросхема, реализующая UART (это как COM порт в компе, только с 5 вольтами на контактах), не будет работать с некоторыми значениями скорости (как правило слишком высокими). То есть если разгоняемое приложение предполагает работу с UART на высоких скоростях, то тестируйте заранее - будут проблемы 100%. Хотя может если брать не китайскую ардуину с нормальным UART, может проблем и не будет.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (20.01.2017)
Старый 19.01.2017, 16:26   #14
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,318
Написано 5,163 полезных сообщений
(для 14,916 пользователей)
Ответ: Статика



Олсо вот такого типа макетки — малаца, если по-быстрому проверить что-то. Но конечно не может быть и речи, чтобы потом на практике такое устройство юзать.




Можно так ещё, максимум-колхоз.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Артем Валерьевич (23.01.2017), Gector (22.01.2017), impersonalis (20.01.2017), St_AnGer (20.01.2017), Wegox (21.01.2017)
Старый 20.01.2017, 04:33   #15
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,095
Написано 675 полезных сообщений
(для 1,678 пользователей)
Ответ: Статика

Ни одна моя поделка не выглядела так страшно
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Wegox (21.01.2017)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 03:06.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com