dotnet / dotnet/iot

Mcp23017 initialization resets pin values

未关闭
#1,663 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug Priority:2 up-for-grabs
主要语言
C#
星标
2.4k
派生
630
平均合并
7 天 11 小时
30 天内合并 PR
3

描述

**Describe the bug**

Every time a new instance of Mcp23017() is being created the pins are being reset to low. This is an issue when the written software reboots, eg when updating the software version.

**Steps to reproduce**

```csharp
var pinNumber = 0;

var i2cConnectionSettings = new I2cConnectionSettings(1, 0x20);

var i2cDevice = I2cDevice.Create(i2cConnectionSettings);

var device = new Mcp23017(i2cDevice);

var controller = new GpioController(PinNumberingScheme.Logical, Mcp23017Device);

controller.Write(pinNumber, PinValue.High);

var device2 = new Mcp23017(i2cDevice);

var pinValue = controller.Read(pinNumber);
```

**Expected behavior**

Pins need to keep their value after re-initializing the Mcp23017() adapter.

**Actual behavior**

Pins are being reset every time a new instance of Mcp23017() is being declared. Looks like it is embedded in the init code here:
https://github.com/dotnet/iot/blob/main/src/devices/Mcp23xxx/Mcp23xxx.cs - starting at line 84.

贡献指南

这个仓库没有索引到贡献指南

调研方向

从 src/devices/Mcp23xxx/Mcp23xxx.cs 第 84 行附近开始,这里执行了 Mcp23017 的初始化。复现创建适配器、将一个引脚写为 high 以及创建第二个适配器的顺序;当引脚在重新初始化后仍保留其值时即完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
csharp
领域
embedded-iot
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。