Технический форум по робототехнике.
Ku6opr » 16 июл 2010, 20:04
Сделал себе плату с чипом USBizi. Это LPC2388 с зашитым .NET Micro Framework от GHI Electronics.
Чтобы использовать .NET MF с любым другим микроконтроллером, можно воспользоваться .NET MF Porting Kit от Microsoft или купить уже готовую отладочную плату с портированной средой. С Porting Kit (доступно для бесплатного скачивания) поставляется несколько примеров под разные микроконтроллеры.
.NET Micro Framework - это платформа для выполнения C# кода для микроконтроллеров. Средой разработки является Visual Studio. Поддерживается отладка, т.е. пошаговое выполнение, просмотр значения переменных и прочие плюшки. Процесс программирования протекает так же, как и програмирования десктопных приложений.
В моем случае микроконтроллер поддерживает:
USB Host/Device, работа с SD накопителями, 2x SPI, 4x UART, I2C, 2x CAN, 8x ADC, 6x PWM, 61 GPIO.
Несколько примеров кода:
- Код: Выделить всё • Развернуть
// Управление светодиодом
OutputPort LED = new OutputPort((Cpu.Pin)5, true);
LED.Write(false);
- Код: Выделить всё • Развернуть
// Работа с UART
SerialPort COM1 = new SerialPort("COM1", 9600);
COM1.Open();
byte[] Data = Encoding.UTF8.GetBytes("Hello");
COM1.Write(Data, 0, 5);
- Код: Выделить всё • Развернуть
// ШИМ: период 1мс, скважность 50%
PWM pwm = new PWM(PWM.Pin.PWM0);
pwm.SetPulse(10000, 5000);
Кто заинтересовался, советую хорошую книгу "Apress Expert .NET Micro Framework"
Сергей » 16 июл 2010, 20:11
Да, прикольная тема. Только очень требовательна к ресурсам такая система.
Ku6opr » 16 июл 2010, 21:08
Выполнил замер времени выполнения операций, получил довольно странный результат: операции +, -, *, / над целыми числами и вещестенными с одинарной точностью занимают около 65мкс, а для вещественных двойной точности порядка 68мкс при частоте микроконтроллера 72МГц.
Сколько подобные операции заняли бы на "голом" микроконтроллере?
Сергей » 16 июл 2010, 21:23
Если не ошибаюсь - около 100нс
Добавлено спустя 3 минуты:
Ща проверил на всяк в симуляторе - ошибся, 10нс просто умножение, а F23 за 19 мс
Ku6opr » 16 июл 2010, 21:50
Мои замеры не совсем корректные, даже время между двумя обращениями к таймеру значительное. Правильно померять выполнение операций я затрудняюсь, но можно сделать вывод, что быстродействие явно не на высоте.
elesy » 17 июл 2010, 05:25
Использовать .NET Micro Framework для ARM7 -это изврат ИМХО. Хоте если вам шашешки а не ехать, то пользуйте
Angel71 » 17 июл 2010, 11:25
elesy, без доводов и рассмотрения конкретных задач?
гениально. не нравиться - не ешь. на это
http://www.techdays.ru/videos/1051.html на микроконтроллерах вообще будешь плеваться? если для тебя всегда определяющим является объём занимаемого флеша и оперативы, да количество "лишних" тактов при любых операциях
пиши хоть на асме и даже не пытайся вникнуть на что именно это всё уходит - не осилишь
Ku6opr » 17 июл 2010, 12:35
Судя по себе, эффективность написания кода возросла в разы. Да, выходит дороже. Да, выше требования к ресурсам. Но для большинства не реалтайм задач будет все прекрасно работать. И может даже и для реалтайм.
Сейчас работаю над квадрокоптером на основе этой платы, код написал с нуля за пару недель, частота одного цикла получилась 25мс, т.е. 40Гц. Хватит ли для нормального полета? Не знаю, посмотрим. Сейчас жду посылку с хоббисити.
elesy » 19 июл 2010, 06:27
Angel71 писал(а):elesy, без доводов и рассмотрения конкретных задач?
гениально. не нравиться - не ешь. на это
http://www.techdays.ru/videos/1051.html на микроконтроллерах вообще будешь плеваться? если для тебя всегда определяющим является объём занимаемого флеша и оперативы, да количество "лишних" тактов при любых операциях
пиши хоть на асме и даже не пытайся вникнуть на что именно это всё уходит - не осилишь
Для меня объем флеша не играет роли. А играет то на чем я могу быстро напичать то что мне надо.
Angel71 » 19 июл 2010, 06:57
в том-то всё и дело - если хватает ресурсов, почему бы не кодить в более комфортных для себя условиях?
elesy » 19 июл 2010, 08:33
дело в том что придерживаюсь минимализма и ставить громоздкую среду ради сомнительного удобста нехочеться
Tiphon » 28 май 2011, 09:19
У меня такой вопрос:
Продается ли где-то в Москве, так, чтобы приехать и купить, оценочные/отладочные платы с .Net Micro Framework?
Может кто-то видел, знает, проездом наблюда в магазине?
Дело в том, что у нас неумолимая сдача экспериментального образца изделия (одним из элементов будет эта плата) через 15 дней, если будем заказывать - просто не успеем. А не поставим вычислитель с .Net Framework, как планировали, то будет потом нестыковка и жуткий геморой.
Angel71 » 29 май 2013, 18:43
из того, что легче всего найти - это stm32f4discovery. дотнет на неё ставится очень легко и быстро. правда видел в сети пару тем, что у кого-то были проблемы с некоторыми ревизиями плат, но в итоге таки всё пофиксили. ещё очень популярны netduino (не путаем с arduino) и платы от ghi electronics, поройтесь на офсайтах, посмотрите, может что и понравится. если повезёт, может найдёте в местных магазинах. в любом случае плат полно (с сетью, экранчиками с тачем,...), только было бы желание самому поискать.
вы же только учтите, что доступной оперативной памяти на этих платках зачастую десятки и сотни кбайт, а с несколькими мбайтами ооочень мало (да и стоят они совсем некрасиво). да и частота в основном от десятков до нескольки сот мгц. т.е. прикидывайте свои потребности и скилы с возможностями платы - превратить в черепашку или словить out of memory не так уж и сложно.
ещё есть возможность увалить дотнет, небольшая, но есть. на дискавери пару раз уваливал при заливке проекта и один раз, когда в mfdeploy гдето в меню клацнул stop. не было желания особо глубоко копать, лечится ли это вообще без переустановки дотнета, так что просто затирал флеш и ставил заново. если на плате нет программатора, как на дискавери или в чипе нет зашитого бутлоадера (по уарту, usb,... или на плате чего для прошивки не развели)... в общем приятный квест может получиться.
п.с. по крайней мере для дискавери лучше сразу поставить porting kit. без него понять что каким пинам соответствует иногда слегка проблематично.