All streams
Search
Write a publication
Pull to refresh
28
0

Пользователь

Send message
В таком случае подтяжка никак не поможет, управление светодиодом пересилит любую разумную подтяжку. Светодиодом arduino дергает еще на этапе загрузчика, и только после загрузчика начинает выполнятся код написаный вами.
Разумный выход один — перевесить на другой порт.

и еще есть netduino, там на (micro)dotnet и visual studio
и еще есть конкурнетская mbed от NXP там вообще онлайновая IDE
На любой вкус и цвет, правда цены в.ру кусаются
RTC не обязательно, заведите таймер на прерываение каждые 1мс и считайте. Вообще, первое, что следует освоить (после моргания светодиодом) — это таймеры.
Да именно так, причем все это скорее всего можно сделать из Arduino IDE.

По второму вопросу:
Если требуется считать события длительностью в единицы микросекунд — тогда надо точнее всю задачу, если просто получить время с точностью до микросекунды между двумя какими-то событиями (например между импульсами с DS1307) — заводим таймер, прерывания от него приходят через строго определенное время, плюс есть непосредсредственный доступ к регистру счетчика таймера.
Т.е. по стартовому событию, запускаем таймер, и начинаем считать прерывания от него и ждем стоп. Как только приходит стоп, сохраняем значение счетчика таймера (в нем будут недосчитанные тики), и добавляем к нему количество посчитанных прерываний ну и перемножаем на соответсвующие коэффициенты. Таким образом можно получить точность в 1 такт или (примерно) 62.5 наносекунды на 16МГц, если заморочиться. Примерно, потому что частота кварца тоже плавает и без калибровки результаты будут в попугаях.
Подскажу конечно, двигаться на прерывания. Если знаете asm — то, должно быть знаете, что это за штука. Но поясню на всякий случай. При общении с любым блоком периферии (будь то ADC, UART и еще много какой) могут генерироваться прерывания, это когда процессор бросает текущую задачу и отправляется выполнять код связанный с произошедшим событием. В AVR с этим все очень неплохо. Например, что касается Serial или модуля UART — он полностью аппаратный, и пока передатчик выплевывает биты в компьютер — вы можете заниматься своими делами. Сама отправка очередного байта в UART- занимает единицы тактов, ну может пару десятков, если требуется как-то хитро достать из памяти. На скорости в 16МГц — это 1-2 микросекунды, обычно меньше. Но тут опять же мешает реализация библиотеки Serial на arduino.
Обычно алгоритм такой — вместо serial.write() данные записываются в некий буфер, и отдается команда начать передачу, после этого управление возвращается обратно в код и вы продолжаете заниматься полезной работой, как только передатчику UART требуется новый байт — он генерирует соответствующее прерывание и обработчик этого прерывания отправляет ему следующий байт и тут же выходит. Для основного цикла программы это происходит прозрачно. Тоже самое происходит и с приемом данных: как только получен новый байт данных — генерируется прерывание и его обработчик решает, что с этим байтом делать.

P.S. на самом деле не обязательно писать на ассемблере. Это очень полезно, в рамках обучения, но довольно сложно. Тем более, если имеется огромный опыт C++, глупо не было бы не воспользоваться. Arduino IDE использует тот же самый и самый распространенный компилятор gcc-avr, просто библиотека libarduino (или как она правильно называется) делает некий HAL. Но лишняя абстракция на кристалле в котором нет ни памяти, ни ресурсов вызывает больше проблем, чем пользы.
Кстати, для Eclipse есть вполне рабочий плагин для AVR. И все плюшки, например автодополнение. А еще некоторое чипы, например atmega16 позволяют проводить отладку на кристале, с breakpoint, просмотром/изменением регистров, памяти. И это еще далеко не все печеньки, которыми заманивают на правильную сторону.
Я сейчас сталкиваюсь ежедневно с arduino, и наконец-то могу выразить, чем же она плоха. Как модуль — отличная штука с завышенной ценой. Но вот коммунити — это ужас. Ужасные схемы, ужасные алгоритмы. Причем, люди учатся по урокам таких же новичков как и они сами и еще больше вырождаются. А полноценный С/С++ еще и позволяет без труда стрелять в ногу.
Для попробовать свои силы — штука отличная, а если бы в моем детстве была подобная плата — я был бы самым счастливым ребенком. Но никто же в серьез не думает, что можно, например, жить в доме построенном из конструктора Lego.
Это предисловие, которое объяснит мысль: если вам понравилось, и хочется продолжать — попробуйте сделать что-нибудь, на той же arduino uno, но без использования библиотек arduino. Сначала AVR покажется кучей непонятных регистров, но очень быстро придет понимание самого контроллера, и вот тогда можно будет делать потрясающие вещи. Даже готов лично объяснить непонятные моменты, если возникнет необходимость.
Вот тут, в статье про Аналоговый реобас DIHALT прекрасно расписал вариант работы с LM35 почитайте, ничего сложного, один корпус LM358 и погрешность ADC не будет играть никакой роли.
Да, кстати, для подобных термостатов, вместо arduino и вообще микроконтроллеров, можно обойтись одной единственной микросхемой DS1821. Правда красивых графиков не будет.
Позанудствую, но будет полезно, на будущее.
если память не изменяет, у LM35 на выходе 10mV на градус, начиная с 0 по Кельвину. У вас окно с 5-15 градусов, на выходе сенсора это от 2.78V до 2.88V, встроенный ИОН у AVR или 1.1V или 2.56V внешнего у вас нет, значит используете напряжение питание как Vref, а значит получите 4.88mV на единицу измерения и 20 единиц на все ваше температурное окно и это составит чуть менее 2% от возможного диапазона и примерно соответсвует погрешности измерения. Т.е. ваш прибор не термометр, а показометр — он что-то показывает.
Для точности лучше использовать датчики с цифровым интерфейсом (DS18B20) или к LM35 применить немного рассыпухи и растянуть измеряемые 100mV до всех 5V.
Для беспроводного пульта можно использовать копеечные NRF24L01, доступно, довольно просто. Дальности вполне хватает для таких целей. Посмотрите, полезная штука.
Попробуйте подтянуть enable до плюса питания, возможно дергается из-за того, что в момент включения все ноги МК находятся в Hi-z состоянии и ловят любую наводку. Еще у вас sleep и reset висит в воздухе.
Интересно, что будет с ноутом и планшетом, уложенными в соответствии с первой фотографией, после погрузки/разгрузки в, скажем, DME?
Было бы смешно, если бы целыми днями не приходилось слушать то же самое. Впрочем, в том и соль.
Самое главное забыли рассказать: про диагностику и пересборку рейда
К сожалению любители разгонять детские коляски до 150Км/ч есть.
Вот прямо сейчас в хецнере:
smartctl -i /dev/sda | grep "Device Model"
Device Model:     ST31500341AS
smartctl -i /dev/sdb | grep "Device Model"
Device Model:     ST31500341AS

Seagate освоил Lightscribe на HDD.
Вам повезло. Не иначе.
Мой опыт противоположный, например ST31500341AS очень любят в хетцнере, за что приходится раз в месяц-два страдать, когда среди ночи mdadm будит с сообщением, о том, что диск потерялся.

А в июльскую жару вообще произошло страшное — оба винта из рейда посыпались. Вот прям совсем одновременно — в воскресень extended test чистый, в понедельник ночью — письмо о degradated array: смотрю — диск отказал, пока бэкап обновлял второй диск несколько секторов читать перестал.
И даже более того, в Xcode 6.1 уже не собирается — ругается на синтаксис свифта через строку. Проще все на Obj-C переписать, чем править.
Строго говоря, идея конфигурирования ПЛИС по мере надобности настолько давно появилась, что даже вынесена в название: FPGA — как раз и означает "Field-Programmable Gateway Array" т.е. программируемый в полевых условиях массив лог. вентелей.
FPGA за ненадобностью тоже можно отключить, как и остальные не нужные в данный момент компоненты системы. Надо будет ради эксперимента сравнить сколько энергии жрут на одинаковых задачах FPGA и CPU, при условии что задача распараллеливается и вообще эффективно реализуется на ПЛИС.
Я в JetBrains верю (т.к. пользуюсь их продуктами), но пока она настолько сырая, что пока выйдет релиз поддержка 32-битных систем будет просто не нужна.

Information

Rating
Does not participate
Location
Рязань, Рязанская обл., Россия
Date of birth
Registered
Activity