Main Site Documentation

Hydra IO Pin Problems


#1

Hi! I’m working with a Hydra, and despite the many sockets, I’ve run into some problems where some of the GPIO pins are giving me some trouble:
Sockets 10 thru 12 :
I don’t know what to call these pins since they’re listed as LCD pins on the schematic and not GPIO’s. I was also having some trouble using these sockets for the load module even though they’re marked as Y sockets.
Socket 4 :
Pins 7,8, & 9 can all be assigned in the program with no problems as well as read them in the program if they’re not connected to anything (just floating wires). But when I connect any of them to either a +5V or a 0V to drive them, the program crashes with an exception or something.
Socket 14:
Pin 5 works fine, but when I’m driving it high and try reading analog values from pins 3 and 4 in the same socket, those two voltages jump up when a +5V’s being delivered to pin 5. I’m guessing this is due to weak isolation in the analog reading mux? (pin 5’s also an analog input).

Any thoughts or ideas? They’re all used for digital reading, so something like the MaxO isn’t a viable solution.


#2

+5V on 3.3V ADCs ??

from the Gadgeteer code (gives the pin names):

			#region Socket 10
			socket = GT.Socket.SocketInterfaces.CreateNumberedSocket(10);
			socket.SupportedTypes = new char[] { 'R', 'Y' };
			socket.CpuPins[3] = (Cpu.Pin)FEZHydra_Pins.PC22;  //LCD_R0
			socket.CpuPins[4] = (Cpu.Pin)FEZHydra_Pins.PC23; //LCD_R1
			socket.CpuPins[5] = (Cpu.Pin)FEZHydra_Pins.PC24; //LCD_R2
			socket.CpuPins[6] = (Cpu.Pin)FEZHydra_Pins.PC25;  //LCD_R3
			socket.CpuPins[7] = (Cpu.Pin)FEZHydra_Pins.PC20;  //LCD_R4
			socket.CpuPins[8] = (Cpu.Pin)FEZHydra_Pins.PC4;  //LCD_VSYNC
			socket.CpuPins[9] = (Cpu.Pin)FEZHydra_Pins.PC5;  //LCD_HSYNC

			#region Socket 11
			socket = GT.Socket.SocketInterfaces.CreateNumberedSocket(11);
			socket.SupportedTypes = new char[] { 'G', 'Y' };
			socket.CpuPins[3] = (Cpu.Pin)FEZHydra_Pins.PC15; //LCD_G0
			socket.CpuPins[4] = (Cpu.Pin)FEZHydra_Pins.PC16; //LCD_G1
			socket.CpuPins[5] = (Cpu.Pin)FEZHydra_Pins.PC17; //LCD_G2
			socket.CpuPins[6] = (Cpu.Pin)FEZHydra_Pins.PC18;  //LCD_G3
			socket.CpuPins[7] = (Cpu.Pin)FEZHydra_Pins.PC19;  //LCD_G4
			socket.CpuPins[8] = (Cpu.Pin)FEZHydra_Pins.PC21;  //LCD_G5
			socket.CpuPins[9] = (Cpu.Pin)FEZHydra_Pins.PC3;  //LCD_PWM

			#region Socket 12
			socket = GT.Socket.SocketInterfaces.CreateNumberedSocket(12);
			socket.SupportedTypes = new char[] { 'B', 'Y' };
			socket.CpuPins[3] = (Cpu.Pin)FEZHydra_Pins.PC9; //LCD_B0
			socket.CpuPins[4] = (Cpu.Pin)FEZHydra_Pins.PC10; //LCD_B1
			socket.CpuPins[5] = (Cpu.Pin)FEZHydra_Pins.PC11; //LCD_B2
			socket.CpuPins[6] = (Cpu.Pin)FEZHydra_Pins.PC12;  //LCD_B3
			socket.CpuPins[7] = (Cpu.Pin)FEZHydra_Pins.PC13;  //LCD_B4
			socket.CpuPins[8] = (Cpu.Pin)FEZHydra_Pins.PC7;  //LCD_EN
			socket.CpuPins[9] = (Cpu.Pin)FEZHydra_Pins.PC6;  //LCD_CLK

#3

Yes, as noted, be VERY careful with 5v on a micro that runs on 3v3 when it comes to ADCs !

5v tolerance means a 3v3 micro like Hydra will detect a high signal on a digital input pin and not blow up if the pin is connected to a 5v line. It doesn’t mean it can drive a digital output signal to 5v though, so are you sure your scenario will work - I really haven’t understood what you’re attempting to do.

Step back for a minute and test on 3v3 signals not 5v. What happens ? Tell us pin-by-pin, as inputs and outputs, when connected to 3v3 or GND, whether the digital read works as you expect (really just need to tell us when they don’t). Tell us, as digital outputs, whether the digital output goes to 3v3 as expected when you set it high.

There is a possibility that you need to explicitly undo the LCD configuration to allow you to use those pins. It’d probably be a good idea to explicitly say what that "exception or something " was.