Re: [問題] ARM 實作七段顯示器

看板LinuxDev作者 (科科)時間16年前 (2009/09/24 00:06), 編輯推噓1(107)
留言8則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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

09/24 12:55, , 1F
這樣我試過了 不行耶 它只能讀最前面的那兩個
09/24 12:55, 1F

09/24 12:56, , 2F
我改成 static unsigned short seg_buf;
09/24 12:56, 2F

09/24 12:57, , 3F
write(fd, &seg_buf,2); 過去
09/24 12:57, 3F

09/24 12:58, , 4F
write 部份 unsigned short *var = (unsigned short*)buf
09/24 12:58, 4F

09/24 12:58, , 5F
CSR_WRITE(SEG_PORT,*var); 結果 值有傳過去
09/24 12:58, 5F

09/24 13:00, , 6F
但是 七段 那裡的值是 0x0000c0c0
09/24 13:00, 6F

09/24 13:00, , 7F
高位元是 0值 低位元有值
09/24 13:00, 7F

09/24 13:01, , 8F
但是結果是錯誤的
09/24 13:01, 8F
文章代碼(AID): #1AkaUDpF (LinuxDev)
文章代碼(AID): #1AkaUDpF (LinuxDev)