Thông báo

Collapse
No announcement yet.

Ghi Flash Rom từ RAM

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ghi Flash Rom từ RAM

    Tôi viết code ASM, 1 chương trình con để ghi từ RAM vào Flash ROM (làm theo datasheet = Studio 4.
    Nhưng khi chạy thử trên Studio 4 (chưa chạy thực tế), thì có vấn đề:
    1/- Không cần qua bước xóa trang, khi ghi word đầu tiên thì toàn bộ trang đều bị xóa (studio 4). thực tế có đúng vậy không?
    2/- Khi ghi từ (word) cuối cùng/page (sau lệnh SPM) thì không ghi được, mà lại có hiện tượng kỳ lạ:
    - Copy toàn bộ trang 'n' đang ghi lên trang 'n+1', kể cả từ cuối cùng/page, trong khi trang 'n' lại không có từ đó.
    Gửi code ASM các bạn xem có sai ở phần nào không, mong giúp đở.
    ;**************************
    .include "m16def.inc"
    ;**************************
    jmp wr_ram
    .org SMALLBOOTSTART ;($1F80)
    ;***write 1 page from ram to flash rom (40h word/page)
    ;r1:r0=ram adress, r2=flash rom page
    wr_ram: ;***RAM + PAGE & WORD ADRESS;
    mov XL, r0 ;XH:XL=r1:r0 con trỏ ram
    mov XH, r1
    ldi r16, $80
    mul r2, r16
    movw ZH:ZL, r0 ; địa chỉ trang & word
    ldi r17, $40 ; ghi 40H WORD
    ;***PAGE EREASE******
    ldi r16, 0b00000011
    out SPMCR, r16 ;SPMCR=$37
    SPM
    ;**************
    wr_r_1:
    ld r0, X+
    ld r1, X+
    ;***FILL THE TEMPORALY BUFFET
    ldi r16, 0b00000001
    out SPMCR, r16 ;SPMCR=$37
    SPM
    ;***PERFORMING A PAGE WRITE
    ldi r16, 0b00000101
    out SPMCR, r16 ;SPMCR=$37
    SPM
    ;*** WORD ADRESS + 2
    adiw ZH:ZL, 2 ;tăng địa chỉ word lên 1
    ;***Kiểm tra đủ 40H word
    dec r17
    tst r17
    brne wr_r_1
    Forever:
    jmp forever

Về tác giả

Collapse

duc thang Tìm hiểu thêm về duc thang

Bài viết mới nhất

Collapse

Đang tải...
X