Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

andersborg's Content

There have been 33 items by andersborg (Search limited from 18-January 19)


By content type

See this member's


Sort by                Order  

#34227 Netduino Plus Firmware v4.2.0

Posted by andersborg on 26 August 2012 - 10:13 AM in Netduino Plus 2 (and Netduino Plus 1)

I have it going now, so maybe I can help. Did you perform all these steps? http://wiki.netduino...ep-by-step.ashx Cheers, Anders



#34057 4.2 and out of memory

Posted by andersborg on 22 August 2012 - 12:14 PM in Netduino Plus 2 (and Netduino Plus 1)

System.InvalidOperationException occurs both for Microsoft.SPOT and SecretLabs.NETMF classes. For both it usually happen in Thread.Sleep(10) based on Debug.Prints. I never see from the exception what line is causing the problem. When that happens I need to power cycle or reset the Netduino to be able to deploy new software. It's still scan() that causes it, as it works fine if I simply comment out the call to scan and simulate values for touched, X and Y, but I can't see how it's my code's fault per se.



#34023 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 04:15 PM in Netduino Plus 2 (and Netduino Plus 1)

Noted: With Debug.GC: "A first chance exception of type 'System.InvalidOperationException' occurred in Microsoft.SPOT.Hardware.dll", likely at the first call to Debug.GC. Without Debug.GC: Loops for almost 20 times, then hangs.



#34022 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 03:57 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders,

We'll need the source. To understand why you're getting an exception, we need to run the code and see where the exception is thrown.

Alternatively...what line is the exception thrown on?

Chris


OK. Here goes.

I couldn't see what line it happened on. I'm using Express, so maybe it's limited in this regard.

Attached Files




#34020 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 03:39 PM in Netduino Plus 2 (and Netduino Plus 1)

Forgot to attach the file...

Attached Files




#34019 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 03:37 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders,

Can you please provide a repro case which we can run here? A small, complete project file which raises the exception?

Also, SerialPort.Write should still return the number of bytes written. Are you getting "0" returned each time?

Chris


I include the latest build (with debug info), yet not the source. I can provide that as well if needed.

SerialPort.Write is now void, so it can't return anything.



#34016 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 03:15 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders,

Okay, great, thank you for the clarification.

The Garbage Collector in .NET MF 4.1 had a few limitations--which were fixed in .NET MF 4.2. This is one of the reasons it is so important that all NETMF boards are upgraded to .NET MF 4.2. Incorrectly running out of memory--in production devices deployed in the field--is not a good scenario. :)

Chris


Agreed!

With .NET 4.2 came changes to how analog inputs (separate from digital pins and scaling) and serial output (Write no longer returns bytes sent) work. I resolved that, yet I get InvalidOperationException instead. I'm not sure on what, as it doesn't point to a specific line in my code. Hopefully I'll find a remedy.

This is how the code looks now. adapt() is somewhat redundant as I can do scaling via AnalogInput, yet I also do border detection there.

public static bool scan(out int X, out int Y)
{
analog1 = new AnalogInput(aX2);
analog2 = new AnalogInput(aX1);
digital1 = new OutputPort(dY1, false);
digital2 = new OutputPort(dY2, true);

int valueX = (int)(analog1.Read() * range);
X = adapt(valueX);

Debug.Print("1: " + valueX);

analog1.Dispose();
analog2.Dispose();
digital1.Dispose();
digital2.Dispose();

analog1 = new AnalogInput(aY1);
analog2 = new AnalogInput(aY2);
digital1 = new OutputPort(dX2, false);
digital2 = new OutputPort(dX1, true);

int valueY = (int)(analog2.Read() * range);
Y = adapt((range - 1) - valueY);

Debug.Print("2: " + valueY);

analog1.Dispose();
analog2.Dispose();
digital1.Dispose();
digital2.Dispose();

analog1 = null;
analog2 = null;
digital1 = null;
digital2 = null;

return valueX != range - 1 && valueY != range - 1;
}



#34007 Netduino Plus Firmware v4.2.0

Posted by andersborg on 21 August 2012 - 01:02 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders

Are you using SAM-BA 2.12 fixes some issues with x64 os's...
Also are you using the driver in "drv" folder where you installed sam-ba too or the generic GPS camera driver that windows update discovers, try uninstalling the driver in device manager and manually installing the Atmel driver?
Finally have you erased your ND (3.3v to the gold erase pad) before you try and connect with sam-ba?

Nak.


Yes it's 2.12+.

I used the generic driver (actually I didn't do anything with that). I erased as per the instructions.

I'll try the advice. Thanks.



#34006 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 12:59 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders,

Garbage collection should happen automatically whenever memory gets tight. If you allocate an object when there's not enough contiguous memory available, garbage collection should kick in then to try to find you enough space.

I'm following your example but don't quite understand...are you saying that the garbage collector in NETMF 4.2 is not collecting fully and that you need to call Debug.GC(true) to force it to collect?

Chris


I've now updated to 4.2 firmware, so I'll check if it behaves differently, which it should not the least due to the more free RAM, but in any case Debug.GC took the problem away for 4.1. Not that my application uses large arrays or such.

At the time of testing I had .NET 4.2, SDK 4.2 and firmware 4.1.



#34005 Netduino Plus Firmware v4.2.0

Posted by andersborg on 21 August 2012 - 12:55 PM in Netduino Plus 2 (and Netduino Plus 1)

Hi Anders,

That's very odd. So it did work alright after moving the Netduino to another USB port?

Also, are you using SAM-BA v2.12+? The earlier versions had some issues with Win7 x64.

Chris


Yup. In both cases the ports were detected (COM8 and COM10), so it was nothing wrong with that. My PC supposedly has two different USB controllers, so that might be the reason.

I used 2.12+ (just installed).



#33996 Netduino Plus Firmware v4.2.0

Posted by andersborg on 21 August 2012 - 10:59 AM in Netduino Plus 2 (and Netduino Plus 1)

Revised: It worked if I moved to another USB port (??!?!). After SAM-BA has detected the USB driver and I've selected at91sam7x512-ek and then click "Connect", SAM-BA pops up "Error in startup script" "Error h_handle returned zero" etc. I'm using Windows 7 64, .NET 4.2 and SDK 4.2. Any idea what could cause this to happen? Cheers, Anders



#33993 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 09:27 AM in Netduino Plus 2 (and Netduino Plus 1)

First of all, you can safely upgrade to 4.2, for the Netduino Plus, follow this link:
http://forums.netdui...-firmware-v420/

In that thread, the correct SDKs are linked.

1-Wire is not yet supported in a non-beta build, it's only supported in a specific 4.1.1 beta build.

Good question, I don't -think- it's performed during a sleep. I thought the GC is started at the end of a loop or method. But I can't say for sure, I'm no expert in these matters.
I do know though, that it's possible to force garbage collecting, with Debug.GC(true);

I'm not sure what you're trying to do to be honest. I see you are using the same pins for both digital and analog, but what is connected to it? I ask this, because this could be potentially dangerous. Digital signals are 5V tolerant, analog signals are not.


Great about 4.2, despite 1-Wire. This would be hard to implement on my own in C#, so I won't try in any case :).

Garbage collect after a loop or call seems very unlikely (and potentially very inefficient). I'll use Debug.GC instead of Debug.print. Thanks.

A separate response describes the project.



#33991 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 09:08 AM in Netduino Plus 2 (and Netduino Plus 1)

A touch screen, using the principle described in Practical Arduino (chapter 8), transferred to Netduino. Except for the "memory loss" problem it all works nicely. The project is described here: http://abiro.com/w/2...uch-the-screen/ I dusted the project off yesterday, to see if I can improve it.



#33990 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 09:07 AM in Netduino Plus 2 (and Netduino Plus 1)

All considered, it works fine if I have one Debug.print in the external loop calling scan(), and hopefully it doesn't lower performance too much when not communicating with a PC, but it seems redundant and a crutch.



#33988 4.2 and out of memory

Posted by andersborg on 21 August 2012 - 08:45 AM in Netduino Plus 2 (and Netduino Plus 1)

Several different topics, but hopefully the answers don't have to be elaborate.

It says "netduino go (and all 4.2 upgrades)" on the download page, and Plus is not mentioned. So should I not upgrade to .NET Framework 4.2 and SDK 4.2 if I have a Plus?

I also wonder if there's new released firmware, as I've been looking for 1-Wire support that was discussed in the forum some time ago. I now have 4.1.1.0.

I upgraded to .NET 4.2 and SDK 4.2 (anyhow) and there's a weird problem with possibly garbage collect. If I run this with a Thread.Sleep of 10 or 100 doesn't matter. It will anyway get out of memory after a rather short while. If I add a Debug.print it will not. Isn't memory management performed during Thread.Sleep?

Sadly below is the only way I've found to switch meaning of different ports. This should not have been handled as instances, for memory and performance reasons. Is there a way to address the ports and port configuration more directly?

The code:
public static bool scan(out int X, out int Y)
    {
        analog1 = new AnalogInput(X2);
        analog2 = new AnalogInput(X1);
        digital1 = new OutputPort(Y1, false);
        digital2 = new OutputPort(Y2, true);

        int valueX = analog1.Read();
        X = adapt(valueX);

        analog1.Dispose();
        analog2.Dispose();
        digital1.Dispose();
        digital2.Dispose();

        analog1 = new AnalogInput(Y1);
        analog2 = new AnalogInput(Y2);
        digital1 = new OutputPort(X2, false);
        digital2 = new OutputPort(X1, true);

        int valueY = analog2.Read();
        Y = adapt((range - 1) - valueY);

        analog1.Dispose();
        analog2.Dispose();
        digital1.Dispose();
        digital2.Dispose();

        analog1 = null;
        analog2 = null;
        digital1 = null;
        digital2 = null;

        return valueX != range - 1 && valueY != range - 1;
    }

Cheers,
Anders



#23196 Sending SMSs from a Netduino

Posted by andersborg on 23 January 2012 - 03:26 PM in Project Showcase

No problem. You'll get a ZIP via IM.



#23192 Sending SMSs from a Netduino

Posted by andersborg on 23 January 2012 - 03:12 PM in Project Showcase

Is your class opensource?


If you are asking me: It could be. It's not much code.

Cheers.



#22777 Sending SMSs from a Netduino

Posted by andersborg on 14 January 2012 - 01:07 PM in Project Showcase

Regarding Twilio: SMS for 1 cent is very low, but manageable as the receiver pays the cost for the SMS transmission. It would be impossible with such a price in Europe. Yet they indicate they will offer SMS för UK as well. Most likely not at that price. I envy you Americans/Canadians :). Anders



#19545 Support for UDP multicast/boardcast?

Posted by andersborg on 21 October 2011 - 03:42 PM in Netduino Plus 2 (and Netduino Plus 1)

You're looking for broadcast UDP? You should be able to do most/all UDP via the standard firmware.

I believe that Pascal posted something about enabling broadcast UDP. If that's interesting, we could enable that in v4.1.1 pretty easily.

Chris


+1 or even +2 from me too.



#18233 Sending SMSs from a Netduino

Posted by andersborg on 20 September 2011 - 08:21 AM in Project Showcase

I checked sending from USA to USA or other countries, and it's 6 Euro cents, which is not competitive. I normally pay around 1.8 Euro cents, which is similar to what you mention. Actually Sweden is the only country where Infobip provides such low rates, so I feel slightly privileged. For info, this is how the code looks like for sending SMSs to Infobip (without the credentials of course). As can be seen UrlEncode(Hashtable) makes it so much less error-prone, even though it probably kills the heap. string Url = "http://api2.infobip....sendsms/plain"; Hashtable Args = new Hashtable(); Args["user"] = UserName; Args["password"] = Password; Args["GSM"] = CompactNumber(Destination); Args["sender"] = Originator; Args["Binary"] = Util.StrToHex(Text); Args["Type"] = "LongSMS"; return HttpRequest.Perform(Url, HttpRequest.UrlEncode(Args)); Anders



#18218 Sending SMSs from a Netduino

Posted by andersborg on 19 September 2011 - 08:39 PM in Project Showcase

Here's a Netduino magically sending SMSs without there being any phone connected to it. The blog entry explains how. http://abiro.com/w/2...ased-on-events/ Cheers, Anders



#17962 OneWire ALPHA

Posted by andersborg on 14 September 2011 - 03:00 AM in Beta Firmware and Drivers

I deployed the Netduino Plus version of the firmware with OneWire again, to secure I didn't make a mistake with that. I also put OneWire.cs and DS18B20.cs in my own project and removed the DLL. No build errors. When I deploy on the Netduino I get a NotSupported exception on instantiating OneWire, so clearly I did something wrong. I better stay off this for a while :).



#17959 OneWire ALPHA

Posted by andersborg on 14 September 2011 - 01:37 AM in Beta Firmware and Drivers

The Netduino Plus ZIP doesn't contain the DLL or the other code, only the firmware. If I use the one for Netduino the code builds, including with some of the example code, so the class is used, but I get a "hardware error" (very "descriptive") when deploying. Anything obvious I might have done wrong? Cheers, Anders



#17955 Proto Board or Perf Board

Posted by andersborg on 14 September 2011 - 01:00 AM in General Discussion

My preferences for Arduino: I don't use bread boards at all. I prefer bare proto boards that I only add the Arduino 8 and 6 pin connectors to, and of course my components. This way I get a more solid/compact/demoable build than when using bread boards. I don't use proto boards with included components (LEDs, switches and what-not), as that extra stuff is of no use and they cost a bit more too. I don't etch at home. That simply makes no sense. I did it in the 80s, but the smell and arguable results still haunt me. I haven't quite come as far as to commercial solutions yet, but I would do either of the following for first round production designs: - Design a shield PCB with my solution, complementing any Arduino (or Netduino). Of course I would save the shield core design, so I could easily make other shields later using the same connectors etc. - Design a fully custom board with both (and just) the needed Arduino components and those of my solution, to get a cost and size optimized solution. If you consider that an Arduino is pretty much only the MCU, this is not noticeably more complicated than making a shield. It might even be simpler if not many ports are used. I would still use ATmegas with Arduino bootloader so I could directly use my Arduino code. I would order boards from one of the many PCB providers. They are remarkably inexpensive even in volumes below 100. Without a production facility surface-mounted components would be hard to use, and size might not be a major issue, so I would go for hole-mounted components to start with. That would then also work in production, if I would ever get that far. Volume production is an area that requires much more logistics and that I haven't had to deal with much (except in terms of test mounts and such), so I would surely consult an expert for that.



#17950 Instantiations when switching mode

Posted by andersborg on 13 September 2011 - 09:07 PM in Netduino Plus 2 (and Netduino Plus 1)

I forgot to mention Bluetooth. That's also a viable choice as all mobile phones and many laptops have integrated Bluetooth. It of course also works for point-to-point MCU communication, but as such is rather costly, like 802.15.4. Internet communication is not straight-forward when compared to Wi-Fi. You can use a mobile phone as a GSM modem via Bluetooth, but then that phone needs to be on and in proximity all the time, hence dedicated to the task. Certainly not ideal. For that a GSM shield would be better. If you have a phone/sub you can spare, you could also connect the phone via a USB Host shield for the same effect. There's code for that to Arduino, but to my knowledge not yet to Netduino. I'm actually checking out the USB Host approach for a telematics solution. I don't know if a Netduino with Bluetooth could act a Web server to a phone or a PC, and that way provide an integrated user experience. At least you should be able to use the Bluetooth HID profile, but some research and coding might be required for that. The cost is also a relative hindrance. Example: http://www.sparkfun.com/products/582




home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.