Помогите новичку. С чего начинать?
#1 Гость_SpawNBK_*
Отправлено 24 Январь 2014 - 15:58
Очень зацепила тема создания своих устройств. Подскажите мне пожалуйста, какие выбирать чипы, где их заказывать, чем их программировать. В этой теме я вообще 0))) Если можете, скиньте ссылки на статьи. Начинаю все с полного нуля!!! спасибо вам большое!!)
#2
Отправлено 24 Январь 2014 - 16:12

Лично мое. Как один из вариантов.
Микроконтроллеры Микрочип. Покупаются практически везде, конечно не очень современные. Но не в этом суть.
Под них много средств разработок и компиляторов для Си. Можно приобрести внутрисхемные отладчики/программаторы.
Таким образом. Выбирать конечно мк нужно под задачу и не очень древний. И изучать матчасть этого камня. Если Вы знаете Си, то будет проще. Если не знаете, то лучше начать с ассемблера.
Большой выбор контроллеров и средств разработки http://www.trt.ru/
Там же можно много почитать для начала
http://www.trt.ru/products/microchip/prog2.htm
#3
Отправлено 25 Январь 2014 - 14:01
#4
Отправлено 25 Январь 2014 - 14:05
#5 Гость_trex_*
Отправлено 27 Август 2014 - 14:58
Наконец то я активировал аккаунт.
Alex - спасибо за ответ. Придется самому вникать и пробовать писать как то.
Алексашка - прочитал пол книги. Много воды. Но в целом почти понятно. Спасибо за наводку.
Значит, пытаюсь не имея никакого опыта, написать прошивку управляемого генератора прямоуг.импул. с рег.частоты и скважностью. На PIC12F675.
Теперь вопросы:
ПРОШИВКА.
__CONFIG - это начальная или стартовая конфигурация МК. Точнее общие настройки. Верно?
К примеру PWR_ON - при подключении батарейки МК сразу начинает крутить прогу. Верно?
Далее идут настройки для исполнения програмного кода. Верно?
Далее идет сама программа и в ней ссылки на подпрограммы(ПП). Верно? Или ПП уже прописывается(пишется) здесь же в программе?
Хочу понять общий смысл написания прошивки в моем случае.
Примерно так(своими словами)
....программа....
*записать значение из(адреса ХХh) епром в оперативку ;а дальше надо как я думаю расчитать, внутреннюю частоту(это 4МГц разделенную на 4(так и не понял почему)) 1МГц=1000Гц разделить на частоту нашу в оперативке. Например 100Гц - это каждый 10-й круг программы, нога(допустим 2-я) будет переходить в состояние лог.1(соединяться с +5 питания V-in), на какое то время. Наверное это и есть время задержки? Вот тут нужна помощь. Непонял на что "оно" опирается и как его изменять? Я думаю это и есть скважность и изменять я ее предполагаю двумя кнопками. Далее...
....опрос кнопок....
*опрос состояния кнопки 1 +1* ;кнопка частоты +
___если кнопка нажата (преход на строчку подпрограммы);здесь ПП складывает частоту сейчас и +1
___если нет, переход на опрос кнопки 2
*опрос состояния кнопки 2 -1* ;кнопка частоты -
___если кнопка нажата (преход на строчку ПП);здесь ПП складывает частоту сейчас и -1
___если нет, переход на опрос кнопки 3
*опрос состояния кнопки 3 +1* ;кнопка скважности +
___если кнопка нажата (преход на строчку ПП);здесь ПП складывает скважность сейчас и +1
___если нет, переход на опрос кнопки 4
*опрос состояния кнопки 4 -1* ;кнопка скважности -
___если кнопка нажата (преход на строчку ПП);здесь ПП складывает скважность сейчас и -1
___если нет, переход на следующую строку
___переход на опрос кнопки 5
*опрос состояния кнопки 5 -1* ;кнопка off/on
___если кнопка нажата (преход на строчку ПП);здесь ПП переход на подпрог. записи в епром, переход в sleep. Фактически ПП перезаписывает в епроме какое то число по какому то адресу и переходит в ПП sleep. Правильно я понял? А сброс WDT пройдет сам, на сколько я понял.
___если нет, сброс WDT
___переход в начало программы ;точнее в ту строчку программы, где работает генератор. Без перезаписи оперативки из епрома.
....
Что такое:";здесь подпрог. складывает частоту/скважность сейчас и -1/+1"- как я это понял. ПП забирает число(значение частоты из оперативки), прибавляет число(которое я прописал как константу, допустим 0,5) и записывает результат обратно в оперативку. И при следующем круге прога читает не 100Гц, а 100,5Гц. Тоже туманно понимаю как это? Математически не сходится.
Прошу понять. Что я хочу понять общее представление как это работает или как это должно быть. Вид прошивки "на бумаге". Позже, я заменю русские слова командами асма, мне так понятней на этом этапе.
А стойте время(скважность) можно организовать командой NOP(команда пустышка). А кнопки +/- скважность добавят/убавят колличество пустышек, точнее, колличестко исполнений. Так? Вопрос, сколько времени уходит на исполнение в микросекундах?
Ладно, копаемся дальше...
Ну и как то, что бы понимали мои способности и познания. Как со мной говорить, да что бы до меня, дурака, дОшлО.
Изучение HTML - один день. На второй день я не напрягаясь собирал не простые и не сложные страницы с фреймами и через три дня "рыл" флеши. Надоело, бросил.
Асемблер. Это где-то 10 лет назад. Первый день понимание. Второй день к вечеру "пАшшол На Х.. WORLD", да да так и написал. И через две недели, "наигравшись", написал нужный мне тогда авторун-браузер для СД-диска. На этом нужда в асме у меня была исчерпана.
Тоже самое с явой для телефонов. Просто небыло игр для моего телефона. Ну я сам переписал десятка два игр для своего телефона. Картинки классы...
Все что сверху это от полного НУЛЯ в МК и 4 часа копания в даташитах и читая книгу по програмированию МК и смотря при это кино по телеку. Уровень понимания сейчас видите сами. Кстати фильм "Щит" афигенный, мне понравился.
В изучении не стараюсь запомнить, то чего нет необходимости помнить. К примеру 35 команд в ассемблере заучивать не обязательно, листок на стену с ними и, надо посмотрел. Со временем само запомнится. ГЛАВНОЕ ПОНИМАНИЕ СУТИ!!!
Другой пример, если ты понимаешь как работает примитивный карбюратор, что в нем происходит, понять как работает самый навороченый инжектор, впрыск, и что делает электроника - дело нескольких минут.
С уважением ко всем. Спасибо отдельно людям которые делятся знаниями в коментах. Очень помогло в понимании некоторых аспектов.
#6
Отправлено 27 Август 2014 - 15:54
Да и примеров Сишных в интернете больше на порядки, нежели ассемблерных.
#7 Гость_trex_*
Отправлено 27 Август 2014 - 17:38
Но, как бы, извините, вопрос стоит в правильности понимания, так сказать процессов.
А на каком языке писать, да мне без разницы. Ява для меня - это язык для телефонных приложений и он на столько прост. Ну или мне так показалось.
Говорите Си или С++. Значит освоим "Си". Опять же как я и говорил, главное основа. А то получится, угадал все буквы не прочитал слово. Или слова знаю а говорить не могу.
Мне нужно всего-то сказать. "Вы правильно все поняли" или "все верно кроме,..." и свои пояснения.
Сегодня занят, завтра посмотрю Си и дочитаю книгу до конца(если успею).
Ребята, я не вундергинд, просто быстро обучаемый(когда понимаю). К примеру, 28 доказательств теоремы Пифагора я не учил, я понимал, и доказывал прямо на "доске". Без зубрешки.
Ну как бы по понятней объяснить. Я ничего никогда не зубрил. К примеру PWR_ON или PVR-on, NOP или NOR, главное я понимаю, что это и главное где это надо писать, а правописание я проверю позднее. И запоминание прийдет позже. Это уже опыт или наработка знаний.
Я досих пор путаю 20h и 21h кто из них вход и кто выход из программы. Но это не мешало мне написать програмку. Она работала на ура.
Ой сорри вызывают наар верк...
Пока всем
#8
Отправлено 27 Август 2014 - 20:35
trex (27 Август 2014 - 17:38) писал:

Я не о Яве (Java) говорил, а о ЯВУ (Язык Высокого Уровня). Будет проще писать программу, главное - разобраться с алгоритмом и понять архитектуру и возможности МК.
ЗЫ: И не беритесь делать сразу всё, делайте постепенно. Всему своё время

#9 Гость_trex_*
Отправлено 27 Август 2014 - 22:16
Непойму что такое архитектура. Внутреннее модульное строение МК? Типа те элементы что в нутри МК? Или это как с intel и AMD процессорами?Я даже лезть не стал. Жуть.
А алгоритм ваще молчу.
Все! Мозги кипят. Сейчас я даташит на 12F675 полистаю помечу что мне нужно, а завтра потыкаюсь с Си.
Я же сказал на сегодняшний день мне нужна всего одна прошивка. И возможно больше и не понадобится. Ну если.......
З.Ы. сброс МК - что за хрень, ресет чтоли?
Сообщение отредактировал trex: 27 Август 2014 - 22:18
#10
Отправлено 27 Август 2014 - 23:41
Цитата
2 кнопки частота, 2 кнопки скважность, и кнопка off/on. На пике 8 ног. 2-е(это 1 и 8) питание(3-5в); 5ног ввод/вывод(2,3,5,6,7) и 1-а ввод(нога 4).
Сценарий:
Подал питание, ген генерит 100Гц 1мксек. Или запустился из данных eeprom.
Жму + частота, частота увеличивается с шагом 1гц. держу кнопку быстро набирает.
Тоже самое с - частота.
Нажал скважность + , всё так же только шаг 1мксек.
Нажал сразу две +/- скважность записалась eeprom. тоже самое с частотой.
Нажал кнопку off/on. Микра ушла в sleep. Питание убрал.

#11
Отправлено 27 Август 2014 - 23:49
На вскидку, изменение частоты от 0 до 1 Кгц и скважность от 0% до 100% с разрешением в 100 мкс - реально.
Но изменение частоты и скважности будет измеряться не в герцах, а во времени, т.е. меняться будет период. Вот его разрешение вряд ли Вы добьётесь выше 0.1 мс, при частоте МК в 1 MIPS.
Цитата

#12
Отправлено 28 Август 2014 - 07:15
#13 Гость_trex_*
Отправлено 28 Август 2014 - 15:32
Alex- для меня новая терминология. Я просто боюсь ошибиться в понимании. Ресет-сброс. Для меня и так хватило, резисторы, тригеры, стек, защелки.
К примеру:
Резистор - как я понял програмно вкл/выкл-мый, а какой номинал омы/кОмы. И куда, на (+) или (-).
Тригер - знаю что такое с 10-и лет. Но тут... "туман".
Стек - так и не понял. Какая-то часть памяти? Типа вспомогательной, но не учавствующей в общем процессе?
Зашелка - "на двери". Может это тригер, переводящий выход/выход принудительно в какое-то положение, допустим лог.0????
Ладно. Разберемся.
Алексашка - Спасибо. Немного уже в курсе. Даташит читал. Что-то понял, что-то нет. Да, на выход он не... на нем у меня в дистанке кнопа подвязана была(4-я нога на pic12f675 - GP3/MCLR/Vpp). Всеравно спасибо.
Я вам лучше коротко историю - почему я ...
Фонарик Акулы. Блин. Собрал. Запустил.
Но вот какая незадача. Не имея осцилографа и на коленках, я две недели ловил на макетке этот момент. Горит. Но стал собирать основательно все сбилось.
И вот попросили собрать ДУ к машине. Потом доводка стекл. Ну и дальше больше. Как то втянулся. Легко. Скачал прошивку, залил, собрал, и все изумительно работает.
И вот осенило дурака. А не заставить ли МК-шку все сделать? И проблема переменных резисторов отпадет. И настройка проще
Я снова посмотрел видео. На осцилографе значения: 12 микросекунд(µs) и 425,785Hz(это в его случае). Ну пусть +/- "лапоть" - 25мкСек и до 1000,00Hz.
Порылся в борохле и нашел 52 штуки pic12f675(оказались внутри микросерво для моделей), одну pic16f873 в связке с 93lc46b, и pic16f***(непомню. Из GPS сигнализации).
Куча, десяток разобранных лоптопов, модемов, мобилок и прочей хрени. А че с них взять? Ничего. SMD мелочь.
К примеру, я делал ночники на ледах, настольные лампы. Все автономное конечно. С потреблением до 10мА. На пару месяцев зарядки хватает.
Мне бы р12 к этому приспособить. Да знаний мало. И самое интересное. Все говорят - да легко. А как до дела.... Либо денег, либо "у каждого свой чемодан".
Вот так я и решил сам разбираться... Русских, как говорит Alex, по натуре русских, осталось мало...
З.Ы. И конечно я Русский. Не путать с "новым русским". Хоть и живу среди тупых буржуев. Плоды перестройки...
Американец, Немец, Русич и т.д. - это национальность.
А РУССКИЙ - это прилагательное, характеризующее человека. Как - с широкой души, умного, доброго, предприимчивого.
Русский - это натура, характер, в далекие времена. Но не национальность. Как сейчас.
Все с лирикой закончили.
Меня интересует что есть архитектура и что алгоритм.
Сообщение отредактировал trex: 28 Август 2014 - 15:37
#14 Гость_trex_*
Отправлено 28 Август 2014 - 17:16
Цитата
На вскидку, изменение частоты от 0 до 1 Кгц и скважность от 0% до 100% с разрешением в 100 мкс - реально.
Но изменение частоты и скважности будет измеряться не в герцах, а во времени, т.е. меняться будет период. Вот его разрешение вряд ли Вы добьётесь выше 0.1 мс, при частоте МК в 1 MIPS.
Возможно я чего-то не понимаю.
НО. Вот передомной на другом компе даташит на pic12f675.
Тактовая частота:
DC-20Мгц, частота тактового сигнала. То бишь кварц на 20Мгц на GP2/OSC1/CLKIN/.
DC-200нс, длительность машинного цикла. 200 наносекунд - это 0,2 микросекунды. И про условии, что мне нужно, 1мксек-а. Вполне возможно?
Длительность маш.ц. - это время исполнения одной команды(одной строки). Правильно?
Ну в 5 строк разьве ген не влезет? Именно мумьтивибратор-генератор, который будет брать данные из ОЗУ. Во время исполнения ПП основная программа остановится(прерывание).
Ну незнаю. Учимся дальше...
#15
Отправлено 28 Август 2014 - 17:38
Стек!
Эта такая область оперативной памяти, к которой напрямую обращаться нет необходимости, и голову как он работает забивать себе не нужно, простой пример:
идет твоя программа по линейному сценарию (т.е. сверху вниз) и в программе есть подпрограммы (далее ПП) например задержка(пауза 10мкс), и ты в эту задержку переходишь командами не GOTO ZADERGKA, а call ZADERGKA, так вот в ПП задержки в конце ставится команда RETURN, как только команда call ZADERGKA была исполнена, в стек (неважно где он находится) автоматически загружается адрес по которому произойдет возврат из ПП задержки на следующую команду твоей линейной программы. и после исполнения команды RETURN, твоя программа будет исполнятся далее т.е. ниже команды call ZADERGKA. это и есть условный переход на выполнение какой нибудь ПП, которое находится вне линейной программы.
Подтягивающие резисторы.
Штука полезная, но как показала моя практика херня полная! Подтяжка происходит вывода МК к +5В через внутрений резистор 4,7к-5,6К, как пишут удобно например при опросе кнопок клавиатуры, но мне это ничуть не помогало когда я экономля резисторы SMD, в надежде на внутреннюю подтяжку ловил левые самопроизвольные всплески на нужном мне выводе (который у меня запускал двигатель на машине), так что мой совет, доверяй только тем резюкам которые видишь своими глазами.
#16
Отправлено 28 Август 2014 - 17:46
#17
Отправлено 28 Август 2014 - 18:21
Но думаю хуже не будет и от моей писанины.
Постепенно придёт понимание и стека и защёлки. Сразу всего не охватишь.
Стек по рабоче-крестьянски можно объяснить следующим образом.
Это область оперативной памяти. В которую записывается адрес той точки программы ( строки программы) откуда произошёл переход например по команде call или по прерыванию.
Возьмём 12f675.
Допустим вам в ходе выполнения программы нужно засечь момент какого то внешнего электрического воздействия .
Пусть это воздействие будет какой то импульс. Когда придёт этот импульс - науке не известно. Но он придёт обязательно.
Долго не мудрствуя, мы настраиваем вывод GP2\INT на вход и разрешаем прерывание по этому самому входу INT. В схеме подключаем этот вход к источнику ожидаемого импульса. А в подпрограмме прерывания пишем то, что бы мы хотели сделать по приходу этого импульса.
И всё. Забыли об этом.
Программа выполняется своим чередом. И вдруг, в каком то месте выполнения программы, приходит этот импульс на ногу GP2. В этот момент "рабочая точка программы" автоматически перескакивает на ПП обработки случившегося прерывания.
Но после обработки этой ПП, "рабочая точка" должна вернуться обратно в то место откуда она выскочила.
Вот тут и включается в работу стек. В него автоматически записывается адрес программы откуда произошёл перескок.
Записывается этот адрес в стек для того, чтобы после завершения отработки нужных дел в прерывании , программа могла вернуться именно в то место откуда она "выпрыгнула".
После отработки прерывания по команде retfie, этот адрес автоматически считывается из стека и программа возвращается туда откуда она сиганула.
Тоже самое происходит и например с командой условного перехода call. Только тут уже возврат в основную программу происходит по командам return или retlw .
У 12f675 стек является 8-ми уровневый. Т.е. одновременно может хранить до 8-ми адресов возврата.
Если при полном стеке, выполнить ещё один переход (9-й) по call или прерыванию , то самый верхний (самый первый адрес затрётся (выдавится, если брать стек как аналог магазина для патронов от пистолета).Т.е. будет безвозвратно утерян. И тогда программа будет вести себя неадекватно.
Поэтому за переполнением стека необходима следить.
Сообщение отредактировал Игорь Бутывский: 28 Август 2014 - 21:10
#18
Отправлено 28 Август 2014 - 23:48
Сообщение отредактировал Алексашка: 28 Август 2014 - 23:52
#19 Гость_trex_*
Отправлено 29 Август 2014 - 15:09
Игорь! Вот почему умные книги не написаны так просто как ты сказал!!!Ребята не обижаетесь, что я на "ты"?
То есть, в основной программе не нужно прописывать перед call, ой нет, в начале, что ячейка(какая-то) в ОЗУ резервируется для записи строчки в программе, при переходе в ПП и последующего возврата с нее. Это произойдет автоматом через стек. Ну, экономия, и быстродействие...
Команды RETFIE и RETLW - обе исполняются в два захода. Как я понял, образно. На примере HDD. Диск крутится это ЦИКЛЫ. Цилиндры: 1-й это __CONFIG и основная программа, 2-й, 3-й... это ПП. Глубина ПП зависит от типа МК. Сетка это колличество строк/слов. Клястеры это включатели. И куча реле. И ноги.
Цикл первый - запись в контроллер режим работы реле и ног. Ход программы. Допустим GP2 работающий как INT поступила команда(допустим кнопку нажали), головка переходит на 2-й цилиндр и исполняется ПП. Исполнила и возвращается на 1-й цилиндр и ждет когда подойдет место, где она ушла на 2-й цилиндр, место прерывания. Вот и два цикла.
Алексашка. За резисторы - я так и думал. Проще SMD впаять или подобрать по надобности.
Книга - по твоему совету. ТАКАЯ ХРЕНЬ!!! Я до середины прочитал и забросил.
К примеру: "...стек это стек... бла бла... сейчас не поняли. Не важно. Потом поймете." И к середине книги этих "потом поймете" или "объясню позже" накопилось..., что я уже ничего не понимал. Чувак не есть как ИГОРЬ!!!
Нашел другую книгу "Си для PIC". Чел элементарно, на примерах и даташитах, объясняя каждый знак и символ, учит.
Короче два компа, 250 и 150 листов бумаги с двумя даташитами, результат моргалка. Прога его конечно, но я попробовал изменить порты и частоту. Прога скомпелировалась в hex. Осталось проверить.
Проверить. Ребяты. Помогите с Протеусом. Поставил. Но вот с ключами, непонял. Там их три RU ; EN и CHN. Ставить все? Или тот на каком программа? Или система(OS)?
Засада. Второй заход уже по установке.
Цитата
Вот видео. Где то с 5-6 минутыhttps://www.youtube....h?v=nl9E8F1gOD0. Там он все объясняет.
Я собрал ЭТО. И представь мои мытарства с реостатами ловя момент. БЕЗ ОСЦИЛЛОГРАФА. Две недели. Уже хотел выбросить. А он загорелся. На макетке. Перенес на платку и кол да мочала начинай сначала. Реостаты, такая не стабильная вещь. МК стабильней.
Цель первая. Находить это место без труда. Цель вторая. Найти способ определения этого места для МК. Осциллографа у меня нет, и купить не могу. Дорого.
Ну а вторая идея. Я собираю паука механического. Нужно управление. И размеры платки управления 25х15х5,5 мм; 7 моторов; размер общий в пол спичечной коробки.
Моторы 3х10,5мм; детали от наручных часов. Платка, нашел двусторонний 0,35мм текстолит с позолотой. Как бумага. Батарейка 10х10мм 60мА 3,7в литий-полимер. IR 1,5х2мм.
А дальше. Получится такая маленькая платка. Одна конструкция. Нет,тогда другая. Но это на потом. Сначала фонарь.
#20
Отправлено 29 Август 2014 - 15:33
Если v.7 , то там один ключ англицкий.
Ещё смотря какой MPLAB используешь.
Если MPLABX то, к нему подходит только восьмая версия протеуса.
Если MPLAB v.8 то рекомендую Proteus v.7.10. Это одна из наиболее стабильных версий.
Найти её можно без проблем на rutrekerorg.