[Cerbot] PB15 not working

Hello .NET Gadgeteer Community,

during the last two days, I tried to run the Keypad KP16 Module. It is working on my FEZRaptor, but not on my FEZCerbot.
The Keypad KP16 Module can only connect to Socket 1 [Types: FY]. Pin3 is PB15.
I measured this PIN and switched the state in my software and it stays nearly 0V.
This behaviour results in a not working Keypad, because OUT1 isn’t switching to 3.3V.
I checked this on my second Cerbot and it is the same.
Further I checked the PINs directly at the ARM-Chip and it is the same, so there is no broken route on the board.

Have you some ideas, why this happen?

Best regards,

Maik

@ maik.woehl - Can you post a complete but minimal example that shows the issue?

@ John

Hello John,

here is my code:


using System;
using System.Collections;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;
using Microsoft.SPOT.Presentation.Media;
using Microsoft.SPOT.Presentation.Shapes;
using Microsoft.SPOT.Touch;

using Gadgeteer.Networking;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;
using Gadgeteer.Modules.GHIElectronics;

namespace CerbotTest4
{
    public partial class Program
    {
        void ProgramStarted()
        {
            GT.Timer timer = new GT.Timer(500);
            timer.Tick += timer_Tick;
            timer.Start();
        }

        void timer_Tick(GT.Timer timer)
        {
            if (keypadKP16.IsPressed(KeypadKP16.Key.One))
            {
                Debug.Print("Key pressed: 1");
            }

            if (keypadKP16.IsPressed(KeypadKP16.Key.Two))
            {
                Debug.Print("Key pressed: 2");
            }

            if (keypadKP16.IsPressed(KeypadKP16.Key.Three))
            {
                Debug.Print("Key pressed: 3");
            }

            if (keypadKP16.IsPressed(KeypadKP16.Key.A))
            {
                Debug.Print("Key pressed: A");
            }
        }
    }
}

If I press the keys 1,2,3 and A, I will get this output:

Key 1:

Key 2:

Key 3:

Key A:

Thank you for your help.

Best regards,

Maik

@ maik.woehl - Do you have any other modules connected in the designer or just the keypad?

@ maik.woehl - Since we no longer provide the FEZ Cerbot or Keypad KP16 in the latest SDK, which SDK version are you using?

@ John
Just the keypad is connected.

And I use the NETMF and Gadgeteer Package 2014 R4 and the Discontinued Modules SDK
I’ve used the source files from the SDK (especially Cerberus) and created my own Mainboard for the Cerbot and I also compiled the CerbotController on my machine.
You can access them on my GitHub Page ( GitHub - maikwoehl/FEZ-Cerbot: [Archive] Reverse engineered FEZ-Cerbot Project files for .NETMF 4.3 and the newest Gadgeteer SDK ).

Maik

@ maik.woehl - I was able to reproduce the issue using your code, but if I use the FEZ Cerbot version found here, https://bitbucket.org/ghi_elect/gadgeteer/src/b6328ae81d4725827d487153eaac3e44ce202a8f/Mainboards/GHIElectronics/FEZCerbot/FEZCerbot_43/FEZCerbot_43.cs?at=SDK-2014-R2-Beta2, the keypad behaved properly. Perhaps you can use that as the starting point for your mainboard driver.

@ John

I’m very sorry to tell you, that this doesn’t work for me. I have used this code and even downloaded the whole repository and have compiled the code. It still does not work.
Maybe the problem is located in one of the libraries that are not OpenSource and not accessible, for example GHI.Pins (to use OutputPort)
Is PB15 a “Special Pin”?
Maybe a Firmware Problem, I don’t know.

If I can’t find a solution, I will modify the Module and make a electrical bridge between Pin3 and Pin9 on the Socket. Because Pin9 on this socket works fine.

But thank you very much!

Maik

@ maik.woehl - All GHI.Pins contains is pin mappings, no hardware hooks at all. Generic.GetPin, for the Cerb family, is essentially return (port - ‘A’) * 16 + pinNumber; As far as I know, PB15 is not a special pin. It should work.