使用digitaRead引脚状态时,会打断其他引脚的digitalWrite吗-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 957|回复: 9

[未解决] 使用digitaRead引脚状态时,会打断其他引脚的digitalWrite吗

[复制链接]
发表于 2022-2-21 08:56 | 显示全部楼层 |阅读模式
本帖最后由 zl88529019 于 2022-2-21 10:59 编辑

各位大神,如题,我使用digitaRead引脚D2-7的状态,根据他们的状态digitalWrite引脚D8-13的输出,结果每次digitaRead会扰乱D8-13输出逻辑。
我用了#include "SCoop.h"里面的模拟多线程,无论将digitaRead放在loop里面,还是单独开一个defineTaskLoop,都会这样。
想知道是不是每次digitaRead,同时会使所有digitalWrite为low,还是怎样的逻辑。

代码如附件:是用来驱动一个8*8点阵,
使用com调试的日志,rowscan每行时换行,正常是8行一个循环,但每次digital时,行数会发生变化。请问大神怎么解。

COM

COM

代码

代码
 楼主| 发表于 2022-2-21 11:02 | 显示全部楼层

大神,我更新了代码和调试的日志,请帮忙看下,现在确实是发生了,难道是SCoop的问题么?
发表于 2022-2-22 00:10 | 显示全部楼层
引脚越界导致崩了重启了吧
发表于 2022-2-22 01:58 | 显示全部楼层
READ 就只是讀取它的狀態,
要如何 WRITE 還是取決於你的程式控制

話說回來,k=0~9 的情況下,你自己代入算一下
k*4+0/1/2/3 是什麼結果?
最小值 k=0 , k*4+0 = 0 →READ 0 就是 READ D0;
最大值 k=9 , k*4+3 = 39 →READ 39 我不知道有何
結果,因為我不知道你用哪個開發板,有沒有 D39 可 READ?
发表于 2022-2-22 05:12 来自手机 | 显示全部楼层
程序写错了,管脚值是错误的。
 楼主| 发表于 2022-2-22 10:58 | 显示全部楼层
XlinliY.Zhang 发表于 2022-2-22 00:10
引脚越界导致崩了重启了吧

用的Mega2560, 54个IO的,为啥会越界崩呢。
 楼主| 发表于 2022-2-22 11:01 | 显示全部楼层
shouzama 发表于 2022-2-22 01:58
READ 就只是讀取它的狀態,
要如何 WRITE 還是取決於你的程式控制

用的Mega2560, 54个IO的。读的是前40个脚的状态,换句话,我即使是读前10个pin,也会导致中断。
发表于 2022-2-22 16:06 | 显示全部楼层
task 里边循环的 k 是全局的吧?做大死的操作
发表于 2022-2-22 20:40 | 显示全部楼层
本帖最后由 shouzama 于 2022-2-22 20:46 编辑
zl88529019 发表于 2022-2-22 11:01
用的Mega2560, 54个IO的。读的是前40个脚的状态,换句话,我即使是读前10个pin,也会导致中断。 ...

那相關 I/O PORT 作了什麼 pinMode() 宣告呢?
說實在的只有片段的程式碼很難猜是哪個環節出了錯,
給了完整的程式又不一定能看得懂,只能給些基本方向
你可能得自己加油了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:52 , Processed in 0.114286 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表