Main Site Documentation

Cerb40 I2C Pull Up resistors


#1

Hi,

I am just about to start to test an ADXL345 accelerometer using I2C on a Fez Cerb40. Can anyone confirm whether the cerb40 has internal pull up resistors on the I2C pins? If not I am assuming 2.2k resistors should be ok.

Cheers,

Matt


#2

Please add the resistors.


#3

@ Gus - I had a lot of initial success with the Cerb40 which helped to heal some of my disappointment in the Domino. Now that I’m trying to do more than blink an LED, I am, again, finding the best diagnostic tool to be spamming reset… As with the Domino, I get no clear indication of what is wrong, or why. On top of that, I logged in (you have to to reply), replied, but was not logged in anymore when I clicked submit; lost my post.

I’m beyond aggravated; in a minor rage-fit, I started spamming reset ultra-fast. After “teaching it a lesson” for a good 10 seconds (I don’t get me either), I stopped, and it worked!!!

Without pull-ups:
[ul]I2C will correctly drive a single module ~85% of the time
The signal looks awful.
Cannot run more than one device, period.[/ul]

With 2.2K pull-ups, and any number of devices attached:
[ul]I2C fails on every cold boot
I2C fails when I reset "properly"
I2C works every time if I push reset exactly twice, in rapid succession[/ul]

Edit: Why:
[ul]Me? :slight_smile:
Two resets?[/ul]


#4

yes, probably you. (joking :wink: but only partly :wink: :wink: )

Cerb40 is not a “general purpose” board, it’s meant to be something that once you prove a piece of code and hardware works with say a Cerberus or Cerbuino Bee, that you drop in to replace the mainboard with a low cost, sufficiently high pin-count device. So I suspect that some of your challenges might actually be in the way you have “built” the module and it’s supporting hardware. Can you tell us what your hardware is like? Is there a problem with your Reset button perhaps, like it makes poor contact?


#5

@ Brett -


#6

@ Brett -

Edit: Revised layout for readability


#7

I upgraded to the february release and, while reading through the notes, noticed there is a known issue with the first SPI byte being corrupted on Cerb-family.
[ul]First byte sent on SPI on Cerb-family seem to be corrupted on frequencies smaller than 2.625MHz.[/ul]

Although I’m not using SPI, I was curious and added the following code to the static initializer of my HW I2C bus class. It writes nothing to nothing:

I2CDevice = new I2CDevice(new I2CDevice.Configuration(0, 50));
int test = I2CDevice.Execute(new I2CDevice.I2CTransaction[] { I2CDevice.CreateWriteTransaction(new byte[] { 0 }) }, 1000);

It works closer to 60/40 now with a single reset.


#8

Can you try software I2c?