![]() |
lệnh ghi eeprom nội của pic ntn?
tôi viết = CCS,tôi dùng lệnh ghi lên eeprom nội của pic,thấy trong tài liệu CCS help nói lệnh này thực hiện trong vài mili giây,vậy nếu lệnh đang thực hiện mà xảy ra ngắt thì có ảnh hưởng gì ko?theo đúng lý thuyết chương trình sẽ nhảy vào ngắt và khi thực hiện ngắt xong thì quay lại làm tiếp,vấn đề tài ngắt tôi xài là ngắt pwm tần số 20Khz(50us),vậy thì nhảy ra nhảy vào mấy chục lần mới xong cái lệnh ghi eeprom,như vậy còn đảm bảo chuơng trình thực hiện chính xác ko?tôi xài con pic18f4331
|
Trước khi ghi vào EEPROM trong phải cấm tất cả các ngắt (xoá bit GIE đi). Ghi xong mới set lại nó =1. Trong datashet của PIC có nói đến việc này mà.
|
cảm ơn bác đã giải thích,cái chổ bác nói phải cấm ngắt trước khi ghi eeprom là trong tài liệu nào vậy?nếu có thể bác cho biết trang luôn nhé,điều này có bắt buộc ko?tức là nếu ghi eeprom mà ko cấm ngắt thì ko ghi được sao?cám ơn
|
Trích:
Thân, |
Trích:
Thân, |
mình cũng đang tìm hiểu về eeprom. đã đọc trong help của ccs rồi mã vẫn không hiểu.
mình cũng đã tìm hết diễn đàn rồi mà cũng chưa có bài viết nào hoàn chỉnh về eeprom để tham khảo cả. ai có bài nào thì port lên cho mình tham khảo với. hi hi |
đây là 1 cái code ng bạn mới đưa cho tui !
Code:
void write_ext_eeprom(unsigned char address, unsigned char data) |
tungtot_vl thử & cho ý kiến
|
thật ra để ghi và đọc eeprom của pic chỉ cần dùng lệnh hàm write_eeprom(địa chỉ,giá trị);
read_eeprom(địa chỉ); đã được cung cấp sẵn,có điều như đã nói ở trên,khi ghi phải cấm tất cả các ngắt và ghi xong cho phép ngắt lại,tại sao phải như vậy thì coi bài bác Nam post ở trên |
tui đang tìm hiểu về ghép nối pic6f877a với rom ngoài.
bạn nào có tài liệu gì về vấn đề này không pót lên cho tui tham khảo với. nếu có sơ đồ ghép nối và code thì tốt quá.tôi định làm với con rom 256k vẫn chưa biết làm thế nào cả |
cho em hỏi , em lưu 1 giá trị 8 bit vào eeprom con Pic 16f887 thì được , nhưng làm sao ghi 1 giá trị 10 bit hoặc lớn hơn vào eeprom vậy? ai có giải thuật giúp em với ..
|
Trích:
Thân, |
Trích:
bài toán em đang làm là : xét AD của 8 kênh dữ liệu , lưu vào eeprom . Đọc dữ liệu của 8 kênh được lưu trong eeprom , và xử lý khi có ngắt AD .. Bình thường khi ghi vào eeprom nếu giá trị lớn hơn 8bit , nó tự tách ra nhiều phần , mỗi phần là 8 bit . Nhưng khi đọc ra làm sao ta lấy dủ dữ liệu 10 để so sanh với giá trị AD 10 bit tức thời ... Em vẫn ko nghĩ ra được giải thuật, rất mong các anh giúp em... Thanks for all .. |
Trích:
unsigned int temp; temp = (ADRESH << 8) | ADRESL; vậy là được mà. Nếu bạn ghi 1 số kiểu integer (2 byte) vào địa chỉ 10H chẳng hạn thì đọc nó ra byte 10H và 11H, phần cao và phần thấp đó, xong làm như phép trên là được. Bạn bảo trình biên dịch nó tự tách ra thì phải lưu theo thứ tự đó, byte đầu là phần cao, byte sau là phần thấp. |
Múi giờ GMT. Hiện tại là 07:02 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam