chào các bác , em mới tìm hiểu vè AVR nên chưa biết nhiềiu lắm. các bác có thể chỉ cho em cách ghi dữ liệu vào bộ nhớ EEProm và đọc từ nó ra đc ko, nếu có thể cho em xin đoạn chương trình đơn giản để minh họa cho dễ hiểu. Em dùng CosvisionAVR lập trình C, dùng cho con atmega8. Em cám ơn các bác
Thông báo
Collapse
No announcement yet.
Ghi vào bộ nhớ EEPROM
Collapse
X
-
Đây, mình minh họa thử cách đọc và viết 1 byte với EEPROM trong. Thực tế cách này codevision không dùng vì nó còn hỗ trợ hơn thế nữa, giống như kiểu khai báo của vutricongbka vậy
//ham cat giu 1 byte vao eeprom
void EEPROM_write(unsigned int dchi, unsigned char dlieu)
{
while(EECR.1); //cho EEWE = 0;
EEAR = dchi;
EEDR = dlieu;
EECR.2 = 1; //EEMWE = 1;
EECR.1 = 1; //EEWE = 1;
}
//ham doc lai 1 byte tu eeprom
unsigned char EEPROM_read(unsigned int dchi)
{
while(EECR.1);
EEAR = dchi;
EECR.0 = 1;
return EEDR;
}!e
Comment
-
Chào các bác, em có câu hỏi muốn hỏi các bác:
Để ghi dữ liệu vào EEPROM , ví dụ một chuổi kí tự nào đó, ở đây chuổi cố định và đã biết trước. Nếu dùng hàm EEPROM_write (như của bác zemen) thì có mất Flash để lưu chuổi đó không?
Em xin cảm ơn các bác
Comment
-
tiện đây các bác cho em hỏi : nếu mình thực hiện việc ghi ,đọc , tính toán dư liệu trực tiếp trên eeprom nhiều thì có vấn đề gì không ah ? em cũng thấy trong datasheet của nó nói không nên dùng địa chỉ đầu tiên của eeprom vì dễ gây sai lệch dữ liệu . không hiểu nguyên nhân tại sao? bác nào rõ thì cho em biết với !!!!Biển học mênh mông , quay đầu lại là!
Comment
-
Nguyên văn bởi photoman Xem bài viếttiện đây các bác cho em hỏi : nếu mình thực hiện việc ghi ,đọc , tính toán dư liệu trực tiếp trên eeprom nhiều thì có vấn đề gì không ah ? em cũng thấy trong datasheet của nó nói không nên dùng địa chỉ đầu tiên của eeprom vì dễ gây sai lệch dữ liệu . không hiểu nguyên nhân tại sao? bác nào rõ thì cho em biết với !!!!
Việc đọc thì thoải mái không phải lo lắng. Còn việc ghi thi eeprom tùy theo loại mà có số lần ghi xóa khác nhau. ví dụ: Atmega16 ghi vào eeprom được 10000 lần còn atmega162 ghi được 100.000 lần. Bạn không phải lo lắng nhiều quá đâu.
Địa chỉ đầu tiên của eeprom là 0x0000; Việc sai lệch dữ liệu là do bạn đưa địa chỉ không đúng thôi.n
ĐT: 0986 492 489
Tham khảo:
Comment
-
Nguyên văn bởi vutricongbka Xem bài viếteeprom unsigned char EVar=0xff;//he he he OKE
ví dụ muốn ghi 0x22 vào vị trí 0x01 chẳng hạn!Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
để sử dụng eep trong codevision thì khai báo như sau:
thêm dòng eeprom trước các khai báo biến bình thường.
vd: eeprom unsigned char eep_var;
khi đó trình biên dịch sẽ tự động định địa chỉ cho biến này.
nếu muốn đặt biến này vào địa chỉ a trong eeprom thì khai báo như sau:
eeprom unsigned char eep_var @a;
Comment
-
Nguyên văn bởi dt_love Xem bài viếtđể sử dụng eep trong codevision thì khai báo như sau:
thêm dòng eeprom trước các khai báo biến bình thường.
vd: eeprom unsigned char eep_var;
khi đó trình biên dịch sẽ tự động định địa chỉ cho biến này.
nếu muốn đặt biến này vào địa chỉ a trong eeprom thì khai báo như sau:
eeprom unsigned char eep_var @a;
ví dụ muốn gi dữ liệu lần lượt vào địa chỉ 0x01;0x02;0x03....
thì cũng phải khai báo
eeprom unsigned char eep_var1 @0x01
eeprom unsigned char eep_var2 @0x02
eeprom unsigned char eep_var3 @0x03
.............
như vậy nếu phải lưu 100 giá trị khác nhau thì cồng kềnh lắm và tương ứng khi làm việc lại khai báo biến trong ram nữa thì chếtThiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Nguyên văn bởi Le Thi Bich Xem bài viếtà như vậy mỗi địa chỉ lại phải đặt trước cho một biến riêng riêng vậy thì thật ra cũng không tiện lợi hơn các dùng chương trình con hàm khai báo
ví dụ muốn gi dữ liệu lần lượt vào địa chỉ 0x01;0x02;0x03....
thì cũng phải khai báo
eeprom unsigned char eep_var1 @0x01
eeprom unsigned char eep_var2 @0x02
eeprom unsigned char eep_var3 @0x03
.............
như vậy nếu phải lưu 100 giá trị khác nhau thì cồng kềnh lắm và tương ứng khi làm việc lại khai báo biến trong ram nữa thì chết
khi bạn khai báo biến trong eep thì đâu nhất thiết bạn phải định địa chỉ của nó để làm j nhỉ..? bạn chỉ cần quản lí theo tên biến là đủ rồi. ?
lúc đó bạn khai báo cả mảng int 2 chiều vài trăm byte cũng chẳng sao.
hầu hết các phép tính cho biến trên ram đều sử dụng được cho biến trên eep
Comment
-
Nguyên văn bởi dt_love Xem bài viếtý bạn là sao nhỉ..? ko tiện lợi?
khi bạn khai báo biến trong eep thì đâu nhất thiết bạn phải định địa chỉ của nó để làm j nhỉ..? bạn chỉ cần quản lí theo tên biến là đủ rồi. ?
lúc đó bạn khai báo cả mảng int 2 chiều vài trăm byte cũng chẳng sao.
hầu hết các phép tính cho biến trên ram đều sử dụng được cho biến trên eep
trong chương trình chính khi cần đọc dữ liệu ở một địa chỉ em chỉ cần dug lệnh i=eeprom_doc(0x0xxx) và dùng lệnh này em có thể đặt vào một chương trình con khác để có thể đọc dữ liệu nhiều lần ở nhiều địa chỉ khác nhau. Còn dùng cách khai báo trên mỗi lần muốn gi đọc ở một địa chỉ nào thì lại phải khai báo một biến cho một địa chỉ đóThiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Khác nhau giữa mạch cân bằng chủ động toàn dãy và mạch cân bằng chủ động kiểu so áp 2 string liền kề.bởi louisnkCụ đã lên design chi tiết cho mạch để test chưa?
-
Channel: Điện tử dành cho người mới bắt đầu
19-09-2024, 08:12 -
-
bởi Manh.n.trMọi người cho em hỏi có bác nào làm project mạch đo độ mặn chưa ạ. Cho em hỏi có bác nào mô phỏng được trên Proteus không ạ? Em sinh viên đầu năm 3 tay mơ chưa biết nhiều mong mọi người giúp đỡ ạ
-
Channel: Các mạch điện ứng dụng
17-09-2024, 13:54 -
-
Trả lời cho Xin hỏi về mạch khuếch đạibởi yname11Ko đc bác ạ, mạch nó tự ngắt. Thôi đành dùng 1 kênh vậy, thanks bác nhé....
-
Channel: Điện thanh
15-09-2024, 10:44 -
-
bởi nguyendinhvanTôi thì không học về MCU, không giỏi về VXL , cũng mờ tịt về công nghiệp thực phẩm, nhưng cũng cố gắng tự làm được cái này.
Đồ ở chợ mua về cứ đặt ở sân, rồi xếp cái máy này lên trên, rồi đi chơi.
Một lúc sau quay...-
Channel: Tâm tình dân kỹ thuật
15-09-2024, 02:36 -
-
Trả lời cho Thép hàn cube led ???bởi nguyendinhvanRa chợ kim khí mua, có nhiều loại to nhỏ. Họ bán cho thợ xây dựng buộc khung đúc bê tông.
Về cắt thành đoạn.
Nhưng làm cho các đoạn dây thép đó thẳng tưng như cái gói mì Ý, thì cũng đòi hỏi công nghệ khéo tay.-
Channel: Điện tử dành cho người mới bắt đầu
15-09-2024, 02:03 -
-
Trả lời cho Thép hàn cube led ???bởi bqvietThép nào cũng hàn thiếc được : thép các-bon, thép không gỉ ... miễn là có chất trợ dung phù hợp. Dùng nhựa thông bình thường thì khó hàn, nhưng trên thị trường bán nhiều loại chất trợ dung đủ kiểu. Đơn giản nhất là dung dịch kẽm clorua ZnCl2.
-
Channel: Điện tử dành cho người mới bắt đầu
15-09-2024, 00:34 -
-
bởi tuyenda1985Các bác cho em hỏi.
Định làm cube led chơi chơi, nhưng vụ que thép để cho nó cứng
Mà chưa biết mua ntn, vì đang alwn tăn, loại này là loại nào (như hình em úp) mà có thể dùng thiếc hàn ??
Cảm ơn...-
Channel: Điện tử dành cho người mới bắt đầu
14-09-2024, 22:05 -
-
Trả lời cho Xin hỏi về mạch khuếch đạibởi thetungPhương án của bạn có thể được ,nhưng có thể rủi ro . Mặt khác bạn muốn tăng công suất thì phải giảm trở kháng của loa ( thí dụ dùng loa 2 ohm )...
-
Channel: Điện thanh
14-09-2024, 11:46 -
-
Trả lời cho Xin hỏi về mạch khuếch đạibởi yname11chập 2 đầu r+, l+ vào làm 1, 2 đầu r-, l- vào làm 1 . rồi đấu vào loa...
-
Channel: Điện thanh
14-09-2024, 07:40 -
-
Trả lời cho Em là người mới . Xin các bác chỉ giáo cách mod điều chỉnh điện áp trên nguồn DELTA esr 48/56abởi nguyendinhvanTheo tôi ấy, mấy cái hệ delta powerone ấy. Cứ để in như thế bán lấy tiền ăn phở.
Có chất bổ vào người, đầu sẽ thông minh ra, sau đó tự nghiên cứu chế tạo một cái nguồn theo ý mình.
Thế là vừa được thông minh, vừa được...-
Channel: Điện tử dành cho người mới bắt đầu
14-09-2024, 01:33 -
Comment