作者zwai (科科)
看板LinuxDev
标题Re: [问题] ARM 实作七段显示器
时间Thu Sep 24 00:06:34 2009
※ 引述《sorkayi (寻找奶昔)》之铭言:
: 现在做出来了 又发现一个问题
: 我的 BUS 宽度设 16 Bits
: 可是我的 buf 是接到 一个 char seg_buf[4] 的地方
: 只有 seg_buf[3] 和 seg_buf[2] 是真正有输出到 IO 的地方
: seg_buf[1] 和 seg_buf[0] 没有用到
: 会造成什麽影响吗
: 为什麽我的 bus 设 16bits 可是我输出却只能用 seg_buf[3] seg_buf[2]
: 那不是超过 16bits 了吗
: 我的 IO 是 接到 S3C44B0 的 DATA 脚位 0 ~ 15
直接回文好了,说实话你的设计有点怪
4 个 char buffer 的话,长度就 32 bits 了
要用的话应该是 2 个才对吧~
另外会变成 seg_buf[3] seg_buf[2] 对到你 16 bits 的资料,
这是因为处理器是 little endian
建议你不要用阵列,直接用一个 short 变数去接就好了
然後在对每个 bit 去操作,就不用考虑这麽多东西了
--
ψ(′~‵)╯ 我什麽都没说,我只是蹲在旁边画圈圈
○
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.137.38
1F:推 sorkayi:这样我试过了 不行耶 它只能读最前面的那两个 09/24 12:55
2F:→ sorkayi:我改成 static unsigned short seg_buf; 09/24 12:56
3F:→ sorkayi:write(fd, &seg_buf,2); 过去 09/24 12:57
4F:→ sorkayi:write 部份 unsigned short *var = (unsigned short*)buf 09/24 12:58
5F:→ sorkayi:CSR_WRITE(SEG_PORT,*var); 结果 值有传过去 09/24 12:58
6F:→ sorkayi:但是 七段 那里的值是 0x0000c0c0 09/24 13:00
7F:→ sorkayi:高位元是 0值 低位元有值 09/24 13:00
8F:→ sorkayi:但是结果是错误的 09/24 13:01