PDA

View Full Version : Flash(ROM) và EEPROM


new_bk
26-12-2008, 10:55 PM
Em thấy một số chip pic24x,và dsp30,dsp33 không có EEPROM.Như thế khi đòi hỏi lưu lại thông số (ví dụ các hệ số tính toán được Kp,Ki..) thì chắc phải lưu lại vào flash (rom).Nhưng tư tưởng thực hiện như thế nào thì em chưa thông .Mong các anh chỉ giúp

namqn
26-12-2008, 11:59 PM
Em thấy một số chip pic24x,và dsp30,dsp33 không có EEPROM.Như thế khi đòi hỏi lưu lại thông số (ví dụ các hệ số tính toán được Kp,Ki..) thì chắc phải lưu lại vào flash (rom).Nhưng tư tưởng thực hiện như thế nào thì em chưa thông .Mong các anh chỉ giúp
Đúng vậy bạn ạ, cần dùng flash để "giả lập" EEPROM dữ liệu. Bạn đọc app. note sau của Microchip để nắm tư tưởng nhé:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en530593

Thân,

memdsp
04-01-2009, 03:15 PM
Đúng vậy bạn ạ, cần dùng flash để "giả lập" EEPROM dữ liệu. Bạn đọc app. note sau của Microchip để nắm tư tưởng nhé:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en530593

Thân,

Em cũng đang cần dùng đến ROM lớn cho một ứng dụng của mình,em có đưa ra hai phương án:
1.Dùng dspic+ROM ngoài
2.Dùng dspic có Flash Rom đủ lớn (ví dụ dsp30F6015 Flash 144k) và lúc đó cũng sử dụng nó để giả lập EEPROM
---Hai phương án này phương án nào ưu thế hơn,phương án nào dễ làm hơn.
---Nếu ở phương án 2 :thì lượng flash Rom có thể sử dụng như EEProm là bao nhiêu( chỗ này mong anh Nam nói kĩ giúp),em cũng đọc app anh Nam gửi trên nhưng tiếng anh không khá nên có nhiều chỗ lờ mờ .Anh Nam có thể nói kĩ giúp về việc sử dụng Flash vai trò EEprom này không.
--Em thấy trong file emulation đi kèm có file included chỉ thấy họ viết cho dsp33,p24 thôi liêu em sử dụng file này luôn thì có thể viết đọc ghi trực tiếp cho những dòng này không.Và nếu thế dòng dsp30 có thể làm như thế này không.

namqn
04-01-2009, 08:52 PM
Em cũng đang cần dùng đến ROM lớn cho một ứng dụng của mình,em có đưa ra hai phương án:
1.Dùng dspic+ROM ngoài
2.Dùng dspic có Flash Rom đủ lớn (ví dụ dsp30F6015 Flash 144k) và lúc đó cũng sử dụng nó để giả lập EEPROM
---Hai phương án này phương án nào ưu thế hơn,phương án nào dễ làm hơn.
---Nếu ở phương án 2 :thì lượng flash Rom có thể sử dụng như EEProm là bao nhiêu( chỗ này mong anh Nam nói kĩ giúp),em cũng đọc app anh Nam gửi trên nhưng tiếng anh không khá nên có nhiều chỗ lờ mờ .Anh Nam có thể nói kĩ giúp về việc sử dụng Flash vai trò EEprom này không.
--Em thấy trong file emulation đi kèm có file included chỉ thấy họ viết cho dsp33,p24 thôi liêu em sử dụng file này luôn thì có thể viết đọc ghi trực tiếp cho những dòng này không.Và nếu thế dòng dsp30 có thể làm như thế này không.
Tôi sẽ không kết luận phương án nào ưu thế hơn, vì nó tùy theo tiêu chuẩn đánh giá cụ thể. Tôi chỉ nêu lên những nhược điểm có thể có của mỗi phương án.

- Nếu dùng dsPIC và EEPROM ngoài, sẽ tốn thêm một ít tiền và vài chân I/O của dsPIC (giá bán lẻ là 3.82 USD cho một chip 24AA1025 dung lượng 1 Mbit, hay 3.14 USD cho một chip 25AA1024 dung lượng 1 Mbit).

- Nếu dùng dsPIC và giả lập EEPROM thì CPU sẽ bị stall (đứng) trong khoảng thời gian thực hiện thao tác ghi ô nhớ thực sự.

Về độ khó, theo tôi cả hai phương án đều không khó, vì Microchip đã cung cấp các app. note với các code mẫu.

Dung lượng EEPROM có thể được giả lập chỉ phụ thuộc vào số trang (khối nhớ được xóa độc lập bằng một lệnh xóa trang) bộ nhớ flash còn trống của chương trình ứng dụng.

Các dsPIC33F hay PIC24 đều có cùng kích thước trang, do đó bạn có thể dùng code mẫu cho bất kỳ dsPIC33F hay PIC24 nào. Các dsPIC30F cần giả lập EEPROM thì lại có kích thước trang (khối nhớ có thể xóa độc lập) khác với các dsPIC33F/PIC24, đồng thời dsPIC30F cũng không thể ghi vào từng từ lệnh riêng biệt được. Do đó, cần sửa lại code cho các dsPIC30F.

Thân,

longtu
05-01-2009, 12:28 PM
Viec ghi du lieu vao Flash la mot giai phap rat hay(vua khong mat du lieu khi mat dien, vua có the luu nhieu du lieu(bo nho Flash thong thuong se lon hon bo nho eeprom nhieu)). Vi du nhu có 1 ung dung nao dó, can luu khoang do 3-4 bo font...hoac nhu các ban lam ve quang bao, có khoang 100 hieu ung chang han, cac ban muon khi mat dien sau do co dien lai 100 hieu ung nay tiep tuc chạy, thì cách ghi vao Flash la mot giai pháp tot nhat.

Neu viet chuong trinh bang CCS, cac ban co the su dung 2 lenh nay de ghi và doc du lieu trong Flash:

1 write_program_memory( address, dataptr, count );
2 READ_PROGRAM_MEMORY (address, dataptr, count );

dientudong
05-01-2009, 12:47 PM
bạn gì đó ơi bạn có thể giúp mình xem code của file lcd.rar mình post ở đề tài "cứu tôi với"
Cảm ơn bạn

cskiller
05-01-2009, 03:04 PM
Nói chung có thể thực hiện việc lưu vào Flash của PIC thay cho EEPROM, tuy nhiên cần chú ý phải xác định vùng địa chỉ trống trên Flash cần dùng cho hợp lý để tránh trùng lặp với các vùng chương trình và dữ liệu khác.

Serenade
14-01-2009, 01:05 PM
Nói chung có thể thực hiện việc lưu vào Flash của PIC thay cho EEPROM, tuy nhiên cần chú ý phải xác định vùng địa chỉ trống trên Flash cần dùng cho hợp lý để tránh trùng lặp với các vùng chương trình và dữ liệu khác.

bạn cskiller cho mình hỏi, làm sao để biết chổ nào trong Flash còn trống để lưu dữ liệu tránh ghi đè lên code chương trình hoặc dữ liệu khác

ngotuyen
10-11-2009, 09:58 AM
Có anh nào có thể hướng dẫn cụ thể về vấn đề ghi và đọc từ bộ nhớ flash được không ạh.
Em đang rất vướng và cần sự giúp đỡ.
Mong các cao thủ chỉ giáo.
Em cảm ơn rất nhiều!

rhinoceros
22-12-2009, 04:27 PM
em tìm trên mạng chỉ được code = asm thôi. có bác nào viết đc code = C không cho em xin.
write_program_memory( address, dataptr, count );
READ_PROGRAM_MEMORY (address, dataptr, count );

làm được 2 chương trình này là ok rồi
thanks

nghia_tdh21
22-12-2009, 08:41 PM
Mình dùng MikroC thấy có các hàm hỗ trợ việc ghi vào flash.

Flash_Read
Flash_Read_N_Bytes
Flash_Write
Flash_Write_8
Flash_Write_16
Flash_Write_32
Flash_Write_64
Flash_Erase
Flash_Erase_64
Flash_Erase_1024
Flash_Erase_Write
Flash_Erase_Write_64
Flash_Erase_Write-1024

ko biết trong ccs thế nào

zzKhungDiLaczz
24-12-2009, 06:28 PM
Bài Đồ Án của e la: Khóa Số sử dụng Pic6f877a giao tiếp với Lcd, viết bằng ASM. sao e viết no chạy ko được.

rhinoceros
25-12-2009, 10:07 AM
Mình dùng MikroC thấy có các hàm hỗ trợ việc ghi vào flash.

Flash_Read
Flash_Read_N_Bytes
Flash_Write
Flash_Write_8
Flash_Write_16
Flash_Write_32
Flash_Write_64
Flash_Erase
Flash_Erase_64
Flash_Erase_1024
Flash_Erase_Write
Flash_Erase_Write_64
Flash_Erase_Write-1024

ko biết trong ccs thế nào

hic.em dùng MPLAB chẳng được hỗ trợ gì hết ấy.tự viết từ đầu tới cuối luôn.
bác nào nói cho em cách ghi vào với .
bình thường nếu ta dùng 1 chip nhớ thì ta chỉ thao tác với thanh ghi 8bit thôi.nhưng ở đây chúng ta dùng trực tiếp bộ nhớ flash của chương trình thay cho eeprom nên 1 thanh ghi của nó là 24bit.vậy ta phải giải quết thế nào .

nghia_tdh21
26-12-2009, 08:18 PM
Trong datasheet cũng có các đoạn code mẫu bằng asm ghi vào EEPROM :
Mình trích trong datasheet con 77a:

DATA EEPROM WRITE

BSF STATUS,RP1 ;
BSF STATUS,RP0
BTFSC EECON1,WR ;Wait for write
GOTO $-1 ;to complete
BCF STATUS, RP0 ;Bank 2
MOVF DATA_EE_ADDR,W ;Data Memory
MOVWF EEADR ;Address to write
MOVF DATA_EE_DATA,W ;Data Memory Value
MOVWF EEDATA ;to write
BSF STATUS,RP0 ;Bank 3
BCF EECON1,EEPGD ;Point to DATA
;memory
BSF EECON1,WREN ;Enable writes
BCF INTCON,GIE ;Disable INTs.
MOVLW 55h ;
MOVWF EECON2 ;Write 55h
MOVLW AAh ;
MOVWF EECON2 ;Write AAh
BSF EECON1,WR ;Set WR bit to
;begin write
BSF INTCON,GIE ;Enable INTs.
BCF EECON1,WREN ;Disable writes

DATA EEPROM READ

BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVF DATA_EE_ADDR,W ; Data Memory
MOVWF EEADR ; Address to read
BSF STATUS,RP0 ; Bank 3
BCF EECON1,EEPGD ; Point to Data
; memory
BSF EECON1,RD ; EE Read
BCF STATUS,RP0 ; Bank 2
MOVF EEDATA,W ; W = EEDATA