Comments (5)
I have a fix, but I'm afraid it might break other I2C devices. Please test out the https://github.com/JeremyGrosser/rp2040_hal/tree/issue_49 branch and let me know if it solves your problem.
from rp2040_hal.
Thanks I will look at it as early as I can. Currently my work bench has another project so maybe next weekend
from rp2040_hal.
i checked and the behaviour did not improve, same separation of the address still there. When I remember correctly, pico_bsp 1.6.0 worked fine with 16 bit addresses, not sure what you changed in the i2c code. I will try to spend more time, but at the moment I have a different project going.
from rp2040_hal.
I had some time to debug in the libraries. I am not sure, if this helps, what I write below.
My view is, that if I call a procedure multiple times with the very same parameters, then the behaviour should be the same.
I found the following using the code above.
The first time I call Port.Mem_Write on line 49, I found out, that in the procedure RP.I2C.Write the flags for:
P.IC_DATA_CMD :=
(RESTART => (if This.Repeated_Start and P.IC_DATA_CMD.FIRST_DATA_BYTE = ACTIVE then ENABLE else DISABLE),
STOP => (if not This.Repeated_Start and This.TX_Remaining = 1 then ENABLE else DISABLE),
CMD => WRITE,
DAT => Data,
others => <>);
result in:
P.IC_DATA_CMD :=
(RESTART => DISABLE,
STOP => DISABLE,
CMD => WRITE,
DAT => Data,
others => <>);
The second time I call Port.Mem_Write on line 89, I found out, that in the procedure RP.I2C.Write the flags for:
P.IC_DATA_CMD :=
(RESTART => (if This.Repeated_Start and P.IC_DATA_CMD.FIRST_DATA_BYTE = ACTIVE then ENABLE else DISABLE),
STOP => (if not This.Repeated_Start and This.TX_Remaining = 1 then ENABLE else DISABLE),
CMD => WRITE,
DAT => Data,
others => <>);
result in:
P.IC_DATA_CMD :=
(RESTART => ENABLE,
STOP => DISABLE,
CMD => WRITE,
DAT => Data,
others => <>);
As written above, not sure if this helps, but even having the very same parameters in both calls, I would not expect, that those flags are different.
Maybe this is a hint for you.
from rp2040_hal.
I would like to offer to send you EEPROMS like the ones I use:
https://www.mouser.com/ProductDetail/Microchip-Technology/24FC64F-I-P?qs=WqWCsLCZBkoe3htI4nCQOg%3D%3D
and ship it to your private address if this helps to debug. Let me know.
from rp2040_hal.
Related Issues (20)
- USB host support
- elf2uf2 port HOT 5
- Atomic register aliases
- SPARK verification to AoRTE HOT 1
- PIO VGA demo
- ROM versioning HOT 1
- I2C Mem_Write sends a repeated start HOT 3
- Examples and tests for RP.Multicore HOT 1
- I2C Mem_Write stack usage is unbounded
- I2C Mem_Write might raise Constraint_Error HOT 3
- Default XOSC_Startup_Delay HOT 2
- I2C HAL.Mem_Read always times out HOT 7
- 16-bit EEPROM addresses are split into two writes HOT 4
- ROSC timing is inaccurate HOT 1
- Invalid parameter in Flash.Program
- RP.Flash.Unique_Id isnβt HOT 1
- Verify RP.Watchdog accuracy
- Calling reset_to_usb_boot does not properly reset the device HOT 3
- Latest release on alire HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rp2040_hal.