作者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
推 sorkayi:這樣我試過了 不行耶 它只能讀最前面的那兩個 09/24 12:55
→ sorkayi:我改成 static unsigned short seg_buf; 09/24 12:56
→ sorkayi:write(fd, &seg_buf,2); 過去 09/24 12:57
→ sorkayi:write 部份 unsigned short *var = (unsigned short*)buf 09/24 12:58
→ sorkayi:CSR_WRITE(SEG_PORT,*var); 結果 值有傳過去 09/24 12:58
→ sorkayi:但是 七段 那裡的值是 0x0000c0c0 09/24 13:00
→ sorkayi:高位元是 0值 低位元有值 09/24 13:00
→ sorkayi:但是結果是錯誤的 09/24 13:01