roboforum.ru

Технический форум по робототехнике.

Не программируется FEZ Cerduino Bee

Не программируется FEZ Cerduino Bee

sergKyrnosov » 19 мар 2013, 15:11

Купил FEZ Cerduino Bee (http://www.ghielectronics.com/catalog/product/351)
Установил все ПО, создал пробную прогу. (моргание светодиода) в visual studio.

Запускаю построение - пишет что все нормально, но светодиод не моргает.

Подскажите кто программировал такие платы, что нужно посмотреть?

Re: Не программируется FEZ Cerduino Bee

Angel71 » 19 мар 2013, 18:44

вопрос пока ни о чём. какой пин, что в коде, пересекается ли этот пин с чем-нибудь, что теоретически может быть задействовано или подключено к чему-нибудь (юсб или сд карта, больше там на плате вроде инчего нет).
на ф4 дискавери недавно словил кайф - до мэйна прописал public static serialport и плата наглухо потеряла возможность общения со студией и дфу. пришлось несколько раз перезаливать дотнет (пока выяснял, это просто чтот слетело или именно из-за паблик статик). не помню, дискавери у вас есть или нет (в смысле заюзать его стлинк), но навсякий предупреждаю, что могут проблемы (икс его как такая же строчка на вашей плате с тем дотнетом поведёт себя).

Re: Не программируется FEZ Cerduino Bee

sergKyrnosov » 20 мар 2013, 07:18

спасибо вроде заработало, просто заново создал проект и набил код.
странно вроде все тоже что и было, но теперь работает.

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 09:45

Скорее всего мелочь какая-нибудь была. На stm32 очень навороченная периферия, все время забываешь то настроить, то тактирование подать, то еще чего-нибудь.

Re: Не программируется FEZ Cerduino Bee

sergKyrnosov » 20 мар 2013, 13:03

Я решил использовать FEZ Cerduino Bee (http://www.ghielectronics.com/catalog/product/351), так как у меня под нее модуль xbee есть.
А еще такой вопрос:
Есть ли библиотеки для работы с сервами и сонарами в net micro framework, как для ардуино?

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 13:30

Госсподи, там же алгоритмы простые как 3 рубля. Все делается аппаратно таймером стмки за час-другой(в смысле обе задачи). Библиотеку дольше искать.

Re: Не программируется FEZ Cerduino Bee

sergKyrnosov » 20 мар 2013, 13:41

да вот уже пытаюсь делать.
время совсем нет, на работе перебежками делаю, начну, брошу, потом опять пока вспомню что делал куча времени уходит.

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 13:42

В таком режиме библиотека делу не поможет

Re: Не программируется FEZ Cerduino Bee

sergKyrnosov » 20 мар 2013, 16:15

хотя бы процесс ускорит. да ладно начал попытки делать.

Добавлено спустя 2 часа 24 минуты 43 секунды:
Ну вот в первом приближении сделал, управляю сервой и измеряю расстояние.
В качестве сонара использую HC-SR04, для управления используются два порта.
Но они работают по очереди, можно как то использовать один, для экономии?

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 16:30

что значит 2 порта? у меня бы оно меряло 2 или 3 каналами таймера.
можно ни одного не использовать, сделать на прерываниях и задержках, но что там экономить-то? периферии на этом камне хоть завались.
Кстати, sr-04 требует питания ровно 5В. Я у китайцев нашел похожую схему, которой вроде как может питаться от 3В, но еще оно не приехало еще.

Re: Не программируется FEZ Cerduino Bee

sergKyrnosov » 20 мар 2013, 16:35

Я же писал тут, что у меня плата FEZ Cerduino Bee
Это по разъемам как ардуина, только внутри net micro стоит и программируется на C#.
количество портов на этой плате как на ардуине, не так много

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 16:39

Понятно. Нe ну если прямо так приперло, можно попробовать изобразить схему да диодах и резисторах подтяжки, но это костыль жуткий.
Можно сильно сэкономить пины, если предполагается пачка дальномеров. Тогда можно обойтись не 2N портов, а N+1.

Re: Не программируется FEZ Cerduino Bee

Angel71 » 20 мар 2013, 16:46

elmot, платка с дотнетом, а дотнет это не си. как работают некоторые вещи на низком уровне особо знать не нужно, например так же как на си не нужно настраивать что-то или тактировать. это с одной стороны очень удобно, с другой можно выхватить .
Код: Выделить всёРазвернуть
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using System.IO.Ports;
using System.Text;

namespace MFConsoleApplication1
{
    public class Program
    {
        public static byte[] data;
        public static void Main()
        {
            OutputPort led = new OutputPort((Cpu.Pin)61, false);
            SerialPort port;
            data = new byte[0];
            port = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
            port.Open();
            port.DataReceived += new SerialDataReceivedEventHandler(ReceiveData);
            while (true)
            {
                led.Write(true);
                Thread.Sleep(1000);
                led.Write(false);
                Thread.Sleep(1000);
                if (data.Length > 0)
                {
                    port.Write(data, 0, data.Length);
                    data = new byte[0];
                    byte[] b = Encoding.UTF8.GetBytes(DateTime.Now.ToString());
                    port.Write(b, 0, b.Length - 1);
                    port.Flush();
                }
            }
            //port.Close();
            //port.Dispose();
        }

        public static void ReceiveData(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            if(sp.BytesToRead>0)
            {
                int btr = sp.BytesToRead;
                data = new byte[btr];
                int i = sp.Read(data, 0, btr);
            }
        }
    }
}

Код: Выделить всёРазвернуть
using System;
using Microsoft.SPOT;
using System.Threading;
using Microsoft.SPOT.Hardware;
using GHI.Premium.Hardware;

namespace MFConsoleApplication1
{
    public class Program
    {
        static PWM MyFader = new PWM(Cpu.PWMChannel.PWM_3,10000,0.1,false);
        public static void Main()
        {
            double i = 0.0;
            while (true)
            {
                MyFader.DutyCycle = i;
                // DutyCycle is not dynamic so we must make a call to Start() to refresh the object
                MyFader.Start();
                if ((i += 0.1) >= 1.0)
                  i = 0.0;
                Thread.Sleep(10);
            }
        }
    }
}

Код: Выделить всёРазвернуть
using System.Threading;
using Microsoft.SPOT;
using System;

public class Program
{
    static void RunMe(object o)
    {
        Debug.Print("From timer!");
    }
    public static void Main()
    {
        Timer MyTimer =
           new Timer(new TimerCallback(RunMe), null, 5000, 1000);
        Debug.Print(
               "The timer will fire in 5 seconds and then fire priodically every 1 second");
        Thread.Sleep(Timeout.Infinite);
    }
}


Добавлено спустя 4 минуты 47 секунд:
sergKyrnosov, поиском пользуйтесь, помогает. работать с дальномером или управлять одной сервой это элементарно, а вот несколькими сервами... тут подумать нужно. общим поиском, если нужно будет сами воспользуетесь, а пока могу посоветовать поискать тут http://www.tinyclr.com/codeshare. несколько примеров работы с дальномерами и сервами точно есть.

Re: Не программируется FEZ Cerduino Bee

elmot » 20 мар 2013, 16:47

Гы. Забавно. Мож мне тоже на дискавери попробовать?

Re: Не программируется FEZ Cerduino Bee

Angel71 » 20 мар 2013, 17:10

ради интереса почему бы и не попробовать?


Rambler\'s Top100 Mail.ru counter