Skip to content

I2C as Master, sending data. [3.1.2] #8961

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
4 of 5 tasks
Palingenesis opened this issue Jul 19, 2023 · 2 comments
Open
4 of 5 tasks

I2C as Master, sending data. [3.1.2] #8961

Palingenesis opened this issue Jul 19, 2023 · 2 comments
Milestone

Comments

@Palingenesis
Copy link

Basic Infos

This is an I2C issue.

  • [?] This issue complies with the issue POLICY doc.
  • I have read the documentation at readthedocs and the issue is not addressed there.
  • I have tested that the issue is present in current master branch (aka latest git).
  • I have searched the issue tracker for a similar issue.
  • If there is a stack dump, I have decoded it.
  • I have filled out all fields below.

Platform

  • Hardware: [ESP8266]
  • Core Version: [Latest does not work with this issue. The issue is I have to use old 2.0.10]
  • Development Env: [Arduino IDE]
  • Operating System: [Windows]

Settings in IDE

  • Module: [Nodemcu 1.0]
  • Flash Mode: [qio|dio|other]
  • Flash Size: [4MB(2M SPIFFS)]
  • lwip Variant: [v2 Lower Memory]
  • Reset Method: [nodemcu]
  • Flash Frequency: [N/A]
  • CPU Frequency: [80Mhz]
  • Upload Using: [SERIAL]
  • Upload Speed: [115200]

Problem Description

I have used a Data logger on the SDA and SCL

  1. (Write mode) the issue is between the Address Byte and the First Data Byte. There is a bit set high. 00000000 > 10000000. It could be because SDA is flipped at the wrong time during ACK.
  2. Also at the end of transmission the SCL has an extra pulse that holds onto the bus. I think it is the same reason as above.
  3. (Read mode) I think if you fix the write mode, this will be fixed also.

Ver. 3.1.2 results ISSUE
Ver. 2.5.0 results OK

My fix:

  1. Use version 2.5.0
  2. With version 2.5.0 it all works perfect.
  3. I do not know where the fault got introduced between 2.5.0 and now, I cant me arsed to find out. I have a working fix for my purposes.
  4. Note I had a similar issue when I wanted to use interrupts in a project, I had to do the same, use ver. 2.5.0

MCVE Sketch

#include <Arduino.h>
#include <Wire.h>

char Buffer_TX[64];		/* message				*/

void SendBufferOnI2C(int I2C_address) {

	Wire.beginTransmission(I2C_address);	//	Get device at I2C_address attention
	Wire.write(Buffer_TX, 64);			//	Send Buffer_TX
	Wire.endTransmission();				//	Stop transmitting

}

Debug Messages

See images.
The issue cannot be found with code.
@TD-er
Copy link
Contributor

TD-er commented Jul 31, 2023

Could this be related to this PR: #6654 ?

Or maybe your issue is somewhat related to this issue?
#6255

@d-a-v d-a-v added this to the 4.0.0 milestone Jul 31, 2023
@Palingenesis
Copy link
Author

Could be if they did the changes between 2.5.0 and now. The screenshots of the data look to be in the same area.
Its above my skills to give more info than what I have shown.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants