The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post Reply
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

We'll have a look at my journey to get started with the iPDM56 VCU from one of the forum's sages: @Celeron55.

While this won't be as funny or even verbose as @Gregski's style I will try to document this very beginner-friendly and there will be no question too stupid as long as it's on topic. This includes feature requests i.e. "how would I ...".

As a start I have put a guide on the Wiki under https://openinverter.org/wiki/IPDM56.
His Github: https://github.com/celeron55/ipdm56

I have a rev 1.1 board here:
12V connected.jpg
I hope it gives someone starting out the confidence to do "the big things".


Done:
  • Board check
  • Solder connector and mount to enclosure
  • Working with the pins
  • Programming (testing indicators):
  • First contact with ISA current sensor via CAN
Doing
  • Translating measurement from ISA current sensor CAN
Verbose Wiki page (stub) with tons of pictures: https://openinverter.org/wiki/IPDM56#Ge ... th_CAN_bus
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
nkiernan
Posts: 505
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 278 times
Been thanked: 64 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by nkiernan »

Excellent :) I should have one landing in the post very soon too so can join in
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

Better a small update than none:
Have wired up the ISA current sensor & resistor, but still need to take the board out to replace R97 & solder jumper connectors for the CAN termination.

untested code:

Code: Select all

/*
ipdmsw - iPDM56 firmware template
Copyright (c) 2023 Perttu "celeron55" Ahola

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/

#include "src/ipdm_library.h"
#include "src/ipdm_util.h"
#include "src/ipdm_can.h"
#include "src/params.h"

// Matrix inputs/outputs
constexpr int UNUSED_M1          = A0; // A0 = M1
constexpr int UNUSED_M2          = A1; // A1 = M2
constexpr int UNUSED_M3          = A2; // A2 = M3
constexpr int UNUSED_M4          = A3; // A3 = M4
constexpr int UNUSED_M5          = A6; // A6 = M5
constexpr int UNUSED_M6          =  2; // D2 = M6
constexpr int UNUSED_M7          =  3; // D3 = M7
constexpr int UNUSED_M8          = ipdm::ED4; // ED4 = M8
constexpr int UNUSED_M9          = ipdm::ED5; // ED5 = M9
constexpr int UNUSED_M10         = ipdm::ED6; // ED6 = M10

// Outputs
constexpr int UNUSED_LOUT1                = ipdm::LOUT1;
constexpr int UNUSED_LOUT2                = ipdm::LOUT2;
constexpr int UNUSED_LOUT3                = ipdm::LOUT3;
constexpr int UNUSED_LOUT4                = ipdm::LOUT4;
constexpr int UNUSED_LOUT5                = ipdm::LOUT5;
constexpr int UNUSED_LOUT6                = ipdm::LOUT6;
constexpr int UNUSED_HOUT1                = ipdm::HOUT1;
constexpr int UNUSED_HOUT2                = ipdm::HOUT2;
constexpr int UNUSED_HOUT3                = ipdm::HOUT3;
constexpr int UNUSED_HOUT4                = ipdm::HOUT4;
constexpr int UNUSED_HOUT5                = ipdm::HOUT5;
constexpr int UNUSED_HOUT6                = ipdm::HOUT6;
constexpr int UNUSED_AOUT1                = ipdm::AOUT1;
constexpr int UNUSED_AOUT2                = ipdm::AOUT2;

void setup()
{
	Serial.begin(115200);

	ipdm::setup();

	// The MCP2515 CAN controllers will be initialized with these speeds and
	// filters when the 5Vsw rail is powered up using ipdm::enable_switched_5v()
	ipdm::can1_params.speed = CAN_500KBPS;
	ipdm::can2_params.speed = CAN_500KBPS;
	// You can set the CAN filters like this. By default all messages pass.
	/*ipdm::can1_params.filter1_mask = 0xfff;
	ipdm::can1_params.filter1_ids[0] = 0x123;
	ipdm::can1_params.filter1_ids[1] = 0x456;
	ipdm::can1_params.filter2_mask = 0xff0;
	ipdm::can1_params.filter2_ids[0] = 0x120;
	ipdm::can1_params.filter2_ids[1] = 0x340;
	ipdm::can1_params.filter2_ids[2] = 0x560;
	ipdm::can1_params.filter2_ids[3] = 0x780;*/
}

void loop()
{
	ipdm::loop();

	EVERY_N_MILLISECONDS(30000){
		ipdm::util_print_timestamp(Serial);
		Serial.println("-!- iPDM56 running");
    REPORT_UINT16_HYS(analogRead_mV_factor16(ipdm::VBAT_PIN, ipdm::ADC_FACTOR16_VBAT), 100);
	}

	// Consider D7 (IN10) to be the ignition pin and switch 5Vsw according to it
	//if(ipdm::digitalRead(IGNITION_PIN)){
	// Always enable switched 5V for testing CANbus
	if(true){
		ipdm::enable_switched_5v();
	} else {
		ipdm::disable_switched_5v();
	}

	// Read incoming CAN frames
//	ipdm::can_receive(ipdm::can1, handle_can1_frame);
	// ipdm::can_receive(ipdm::can2, handle_can2_frame);

	
	// Print out (12V) battery voltage
	EVERY_N_MILLISECONDS(1000){
		
		REPORT_UINT16_HYS(analogRead_mV_factor16(ipdm::VBAT_PIN, ipdm::ADC_FACTOR16_VBAT), 100);
	}

	
}

static void print_frame(const CAN_FRAME &frame)
{
	Serial.print("id=0x");
	Serial.print(frame.id, HEX);
	for(uint8_t i=0; i<8; i++){
		Serial.print(" 0x");
		Serial.print(frame.data.bytes[i], HEX);
	}
}

void handle_can1_frame(const CAN_FRAME &frame)
{
#if 1
	Serial.print("CAN1 received frame ");
	print_frame(frame);
	Serial.println();
#endif


}
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

First success!
I have soldered the jumpers in and replaced R97 (next to the MCPs) with a 1k through hole one.
Following that, with

Code: Select all

ipdm::can_receive(ipdm::can1, handle_can1_frame);
commented back in I'm getting some comms on 0x3C3 & 0x3D2:

Code: Select all

-!- 5Vsw ok; CAN initialized
CAN1 received frame id=0x3C0 0xBF 0x4 0x11 0x0 0xF4 0x3E 0xA0 0x0
CAN1 received frame id=0x3C3 0x0 0x61 0xFF 0xFF 0xFF 0xFF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x62 0x0 0x0 0x0 0x0 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x63 0x0 0x0 0x0 0x10 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x64 0x0 0x0 0x0 0x5 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x65 0x0 0x0 0x0 0xA 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x66 0x0 0x0 0x0 0x8 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x67 0x0 0x0 0x0 0x9 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x68 0x0 0x0 0x0 0xC 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x69 0x0 0x0 0x0 0x7 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xA 0x0 0x0 0x0 0xC 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xB 0xFF 0xFF 0xFF 0xF6 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xC 0x0 0x0 0x0 0x1B 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xD 0x0 0x0 0x0 0xF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xE 0x0 0x0 0x0 0xC 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xF 0x0 0x0 0x0 0x6 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x0 0x0 0x0 0x0 0xF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x1 0x0 0x0 0x0 0xE 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x2 0xFF 0xFF 0xFF 0xFB 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x3 0x0 0x0 0x0 0x7 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x4 0x0 0x0 0x0 0xE 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x5 0x0 0x0 0x0 0x1F 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x6 0x0 0x0 0x0 0x1 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x7 0xFF 0xFF 0xFF 0xFB 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x8 0x0 0x0 0x0 0x14 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x9 0xFF 0xFF 0xFF 0xFF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xA 0x0 0x0 0x0 0xF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xB 0xFF 0xFF 0xFF 0xFE 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xC 0xFF 0xFF 0xFF 0xFE 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0xD 0xFF 0xFF 0xFF 0xFD 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x4 0x0 0x0 0x0 0xF 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x5 0x0 0x0 0x0 0x0 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x6 0x0 0x0 0x0 0x4 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x7 0x0 0x0 0x0 0xC 0x0 0x0
CAN1 received frame id=0x3C3 0x0 0x8 0xFF 0xFF 0xFF 0xF6 0x0 0x0
02m16.443s: >> analogRead_mV_factor16(ipdm::VBAT_PIN, ipdm::ADC_FACTOR16_VBAT) = 13562
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

As I'm using a IVT-S-500-U0-I-CAN2 (probably from an iPace) I'm taking some clues from viewtopic.php?p=56158.

Code: Select all

switch (message.id)
        {
        case 0x3c3:
            current = (int32_t)(((message.data[4] << 8) + (message.data[5])) - ((message.data[2] << 8) + (message.data[3])));
            Serial.print("Current: ");
            Serial.println(current);
            break;
        case 0x3D2:
            temp = (int32_t)(((message.data[4] << 8) + (message.data[5])) - ((message.data[2] << 8) + (message.data[3])));
            Temperature = temp / 10;
            Serial.print("Temperature: ");
            Serial.println(Temperature, 2);
        default:
            break;
        }
becomes

Code: Select all

void handle_can1_frame(const CAN_FRAME &frame)
{
switch (frame.id)
        {
        case 0x3c3:
            current = (int32_t)(((frame.data.bytes[4] << 8) + (frame.data.bytes[5])) - ((frame.data.bytes[2] << 8) + (frame.data.bytes[3])));
            Serial.print("Current: ");
            Serial.println(current);
            break;
        case 0x3D2:
            temp = (int32_t)(((frame.data.bytes[4] << 8) + (frame.data.bytes[5])) - ((frame.data.bytes[2] << 8) + (frame.data.bytes[3])));
            temperature = temp / 10;
            Serial.print("Temperature: ");
            Serial.println(temperature, 2);
        default:
        	Serial.print("CAN1 received frame ");
	        print_frame(frame);
	        Serial.println();
          break;
        }


}
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

Well, that was one evening mostly wasted:
[*] RF600 wiring colours don't match with the RF400... At least the connector pinout seems to be the same
[*] probably busted the temp gauge with 12V applied...
[*] couldn't get the RPM gauge to move with function generator of my hobby charger. Probably have to take it out to bench test with the iPDM56.
[*] labelled the wires for some of the idiot lights at least
20230517_102647.jpg
20230517_102716.jpg
Also ordered a second 56pin connector that I can keep wired in the bike as I add features on the bench. I think I found a location last weekend with some CAD, will make a compartment.
20230517_104937.jpg
20230517_104833.jpg
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
User avatar
Uppertown
Posts: 57
Joined: Wed Dec 09, 2020 10:57 pm
Location: North East England
Has thanked: 62 times
Been thanked: 26 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by Uppertown »

marcexec wrote: Wed May 17, 2023 10:03 am
[*] probably busted the temp gauge with 12V applied...
A lot of older gauges are run at around 9V through a voltage regulator, but I would have thought it would survive 12V at least for a while. Is it just stuck at the top of the scale? perhaps a little percussive maintenance is needed??
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

You might be right. I removed the gauges (and cleaned them) yesterday and realized I should probably have done that from the start.
Well, lesson learned - take the gauges out to bench test, guys.
20230519_084919.jpg
20230519_084900.jpg
It looks indeed to be stuck just under the plexiglass cover.
I'll whip up something this weekend.
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
nkiernan
Posts: 505
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 278 times
Been thanked: 64 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by nkiernan »

Edit: My understanding is the IPDM can read 12V input signals directly (eg: from a gear selector switch), but before I potentially damage anything wanted to check in case this needs a resistor divider setup to convert back to 5V for the MCU at the matrix, or just use relevant pull-up and pull-down resistors for the high/low digital inputs? Have you tried any digital I/O yet?
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

nkiernan wrote: Wed Jun 07, 2023 4:00 pm Edit: My understanding is the IPDM can read 12V input signals directly (eg: from a gear selector switch), but before I potentially damage anything wanted to check in case this needs a resistor divider setup to convert back to 5V for the MCU at the matrix, or just use relevant pull-up and pull-down resistors for the high/low digital inputs? Have you tried any digital I/O yet?
You should be fine, the example uses M10 as "ignition". I haven't tried it yet, though.
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
nkiernan
Posts: 505
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 278 times
Been thanked: 64 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by nkiernan »

Wondering if you've done any testing sending and receiving extended CAN frames? How do you indicate its extended do you know?
User avatar
celeron55
Posts: 774
Joined: Thu Jul 04, 2019 3:04 pm
Location: Finland
Has thanked: 27 times
Been thanked: 110 times
Contact:

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by celeron55 »

Oh, sorry, I think I haven't thought that though yet as I haven't needed extended frames for anything in my projects so far.

The library that's used to support the mcp2515 can controllers in this case is https://github.com/collin80/mcp_can

Keep me updated how stuck you get, I'll look into it later.
nkiernan
Posts: 505
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 278 times
Been thanked: 64 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by nkiernan »

Ah, OK. Thought I was missing something obvious. Will take a look at the library. Looks like some sketches can auto detect so I'll check that too
nkiernan
Posts: 505
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 278 times
Been thanked: 64 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by nkiernan »

celeron55 wrote: Tue Jun 27, 2023 8:29 pm Oh, sorry, I think I haven't thought that though yet as I haven't needed extended frames for anything in my projects so far.

The library that's used to support the mcp2515 can controllers in this case is https://github.com/collin80/mcp_can

Keep me updated how stuck you get, I'll look into it later.
Did some more testing and checking through the libraries. Using Savvycan I've checked sending standard and extended CAN frames both to and from the ipdm. Adding the 'frame.extended' parameter below compiles but regardless of 0 or 1, it seems to default to standard CAN (code snippet shown below). Savvycan gets id 0x220

Code: Select all

EVERY_N_MILLISECONDS(500) {
      CAN_FRAME frame;
      frame.id = 0x17E49220;
      frame.length = 8;
      frame.extended = 1;                       // Standard = 0? Extended = 1?
      frame.data.bytes[0] = 0x00;
      frame.data.bytes[1] = 0x00;
I've not figured out yet how ipdm CAN interacts with the CAN libraries but wondering if 'ipdm_can' section below could be part of it. More testing to do :) CAN data appears to be ok, just the id's to be figured out

In can_common:

Code: Select all

typedef struct
{
  uint32_t id = 0;		// EID if ide set, SID otherwise
  uint32_t fid = 0;		// family ID
  uint8_t rtr = 0;		// Remote Transmission Request
  uint8_t priority = 0;	// Priority but only important for TX frames and then only for special uses.
  uint8_t extended = 0;	// Extended ID flag
  uint16_t time = 0;      // CAN timer value when mailbox message was received.
  uint8_t length = 0;		// Number of data bytes
  BytesUnion data;	// 64 bits - lots of ways to access it.
} CAN_FRAME;

In ipdm_can:

Code: Select all

struct CanParameters
{
	uint8_t speed = CAN_500KBPS;
	// These correspond to the MCP2515 filters
	bool filter1_extended_id = false;
	uint32_t filter1_mask = 0x000;
	uint32_t filter1_ids[2] = {0xfff, 0xfff};
	bool filter2_extended_id = false;
	uint32_t filter2_mask = 0x000;
	uint32_t filter2_ids[4] = {0xfff, 0xfff, 0xfff, 0xfff};
};
raine
Posts: 37
Joined: Sun Jun 27, 2021 10:35 am
Has thanked: 4 times
Been thanked: 6 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by raine »

Hi, I have been testing ipdm56 now on the bench. Looks good. However, I see CAN libraries does not support speed 83.3kbps. I think some other variations of the mcp_can, such as Longan labs version, support this rare speed, but it is with 16MHz clock. I think I saw in the schema a 8MHz oscillators for CAN. Would the Longan libraries work with the iPDM hw? Or how should I move forward? Thanks!
User avatar
celeron55
Posts: 774
Joined: Thu Jul 04, 2019 3:04 pm
Location: Finland
Has thanked: 27 times
Been thanked: 110 times
Contact:

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by celeron55 »

I think it should be possible to set that up, it's just a matter of setting the CNF1/2/3 register values in the MCP2515 according to its datasheet.

The problem is, I tried to wrap my brain around these for about half an hour now and haven't yet figured it out...

You could try copying them from another project or library and just see if it works. But the register values are clock dependent, so copying values from 16MHz MCP2515 will halve the speed. I assume you've already located the code that sets them, well, here: https://raw.githubusercontent.com/celer ... cp_can.cpp and here https://raw.githubusercontent.com/celer ... _can_dfs.h

The MCP2515 is capable of syncing up to slight errors in bit speed so not getting it 100% right may not be an issue. But that's also why the register config is so confusing.
raine
Posts: 37
Joined: Sun Jun 27, 2021 10:35 am
Has thanked: 4 times
Been thanked: 6 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by raine »

celeron55 wrote: Fri Jul 21, 2023 9:42 am The problem is, I tried to wrap my brain around these for about half an hour now and haven't yet figured it out...
Glad others are struggling with register settings, so not only me. I keep trying.

My another strugle with the board is, I am able to get the program running on it and it seems to work fine, but only if usb cable is connected. So it looks like it is not getting powered with 12V. The sample program even reports the Vin voltage, so it is powered. I have even wired all +12V's and all GND's, but not getting the board powered. I am likely missing something fundamental.
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by marcexec »

raine wrote: Tue Jul 25, 2023 1:01 pm Glad others are struggling with register settings, so not only me. I keep trying.

My another strugle with the board is, I am able to get the program running on it and it seems to work fine, but only if usb cable is connected. So it looks like it is not getting powered with 12V. The sample program even reports the Vin voltage, so it is powered. I have even wired all +12V's and all GND's, but not getting the board powered. I am likely missing something fundamental.
post a picture of your setup
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
raine
Posts: 37
Joined: Sun Jun 27, 2021 10:35 am
Has thanked: 4 times
Been thanked: 6 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by raine »

marcexec wrote: Tue Jul 25, 2023 1:55 pm post a picture of your setup
Here it comes. If only red (+12V) and black (gnd) at my fingers are connected, shouldn’t the unit wake up and led glow?
DDBA1F41-4E53-4771-9E8E-F906F6518331.jpeg
User avatar
AdrianB
Posts: 63
Joined: Sun Jan 24, 2021 10:34 pm
Location: Wales. UK.
Has thanked: 20 times
Been thanked: 20 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by AdrianB »

raine wrote: Tue Jul 25, 2023 3:17 pmIf only red (+12V) and black (gnd) at my fingers are connected, shouldn’t the unit wake up and led glow?
In a word yes. Double check the wiring and you should also be able to do continuity checks by following the circuits on the board back from the 12v + and - pins to the various components. Starting with where the pins are soldered to the board.
User avatar
celeron55
Posts: 774
Joined: Thu Jul 04, 2019 3:04 pm
Location: Finland
Has thanked: 27 times
Been thanked: 110 times
Contact:

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by celeron55 »

Once you feed 12V (8V to 16V) to those pins, the white LED should light up, and code should run.

What does happen when you do it?

The regulator U4 near those pins is a good place to start probing with a voltage meter. The ISP header has the AVR's 5V exposed so that's also a starting point (or more like the ending point).

Let me know if the schematic and layout images here leave something to be desired: https://github.com/celeron55/ipdm56/tre ... /ipdmhw1.1
raine
Posts: 37
Joined: Sun Jun 27, 2021 10:35 am
Has thanked: 4 times
Been thanked: 6 times

Re: The Hitchhiker's guide to Celeron55's iPDM56 VCU & automotive Arduinoing

Post by raine »

Luckily I have a second unit at hand and after soldering the connector to it, I plugged in the connector of the first unit to it for test. And yes, it works. Leds illuminate, so the first one was a DoA.

The second unit is working fine and I have managed to get Digital outputs (logic level, lout, hout) working like expected. However, I am still struggling with aouts and lpwms. I didnt succeed with the sample code for usage of the pwm. So if something to wish, is bit more howto use examples for those please.

But positive progress. I am sure, will get it fully working afterall.
Post Reply