View Single Post
Old 08-02-2007, 08:20 PM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi hungpq View Post
Nếu nói về mặt thời gian chờ cho hết chu kỳ ghi thì có lẽ là hơi nhiều so với thực tế thời gian ghi của Flash. Bởi vì khi ta debug thì thời gian là rất lớn. Chỉ có điều tôi thấy rằng không hiểu tại sao khi thực hiện lệnh set bit WR của thanh ghi EECON1 thì không thấy bit này được set lên. Theo tôi ở đây có hai giả thiết được đặt ra:
- Thời gian bit này được set là rất nhỏ ( trong thực tế sẽ là như vậy) và khi ta dùng MPLAB để mô phỏng thì không nhìn thấy được trạng thái set lên của nó.
- Thứ hai là MPLAB không thực hiện mô phỏng việc ghi vào bộ nhớ Flash.

Vậy theo bác namqn thì giả thiết nào đúng hay có vấn đề nào khác ở đây. Trong thực tế việc ghi vào Flash thì bác dùng những lệnh nào và với những dòng code như trên thì có ghi được vào Flash hay không?
Tôi quên nhắc bạn rằng Flash của PIC16F877A có 4 thanh ghi đệm khi ghi, có nghĩa là bạn phải ghi vào cả 4 thanh ghi đệm đó rồi mới bật bit WR của thanh ghi EECON1, nếu bạn không ghi vào đủ 4 thanh ghi đệm thì PIC sẽ không thực hiện xóa block đó và ghi vào 4 ô nhớ chương trình. Bạn xem thêm trong datasheet của PIC16F877A, mục 3.6, hình 3-1.

Trong thực tế thì tôi cũng chỉ dùng các lệnh trong đoạn required sequence đó thôi. Có điều trong thực tế thì ghi vào thanh ghi đệm 4 lần mới thực sự xảy ra việc xóa và ghi vào block 1 lần.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn