看板 LinuxDev 關於我們 聯絡資訊
※ 引述《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