Thông báo

Collapse
No announcement yet.

cao thủ giúp mình về eeprom atmega8

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

  • cao thủ giúp mình về eeprom atmega8

    //Viet 1 byte du lieu den dia chi cua eeprom////////////////////////
    void EEPROM_viet(unsigned int dchi, unsigned char dlieu)
    {
    while(EECR.1==1);
    EEAR = dchi;
    EEDR = dlieu;
    EECR.2 = 1;
    EECR.1 = 1;
    }

    //doc 1 byte du lieu tu dia chi cua eeprom//////////////////////////
    unsigned char EEPROM_doc(unsigned int dchi)
    {
    while(EECR.1);
    EEAR = dchi;
    EECR.0 = 1;
    return EEDR;
    }

    đoạn trên là hàm ghi đọc eeprom mình không hiểu nó khác cách khai báo biến eeprom như thế nào.còn đây là doạn khai báo bien eeprom

    int eeprom dem;
    unsigned int a,b,c,d,e,sodem,cnt,i,HBYTE,LBYTE,DATA,j,autozero, tam;
    vi eeprom hạn chế số lần ghi vậy cho minh hỏi cach nào tốt hơn
    việc dùng biến eeprom thi dũe liệu biến này thay dổi sẽ bị ghi lien tục vào eeprom à
    giúp mình với

  • #2
    không ai giúp mình à

    Comment


    • #3
      soorrrryy.
      Last edited by hungnp; 07-08-2008, 14:03.

      Comment


      • #4
        Khác nhau là bởi 2 cách làm khác nhau. Tạo hàm EEPROM_viet và EEPROM_doc để truy xuất trực tiếp đến địa chỉ EEPROM trên AVR. Còn cách thức thứ hai là khai báo eeprom như một biến thì dựa hoàn toàn vào trình dịch. Trình dịch tự cấp phát địa chỉ cho biến và khi truy xuất chỉ cần gọi tên biến là đủ.

        Hai cách làm có cái hay và dở riêng. Với cách thứ nhất có thể kiểm soát nội dung và địa chỉ của dữ liệu, tốc độ có thể nhanh hơn, nhưng cần phải nắm kỹ về con MCU đang làm, địa chỉ... Cách thứ hai phổ quát hơn, không cần quan tâm mcu nào, địa chỉ bao nhiêu, chỉ cần khai báo rồi chạy, phó thác cho trình dịch (cũng đáng để phó thác lắm). Tùy nghi chọn lựa.

        không ai giúp mình à
        Từ lúc bạn đặt câu hỏi chỉ có 29 phút, bạn nghĩ mọi người trên diễn đàn chỉ chờ bạn hỏi để trả lời chắc?
        cao thủ giúp mình về eeprom atmega8
        Lại cao thủ, nên chăng có một bảng hướng dẫn giống như User Agreement ở mục tạo luồng mới không nhỉ
        Last edited by Kilodeth; 07-08-2008, 17:42.
        Đẹp từng kilomét

        Comment


        • #5
          vậy biến eeprom có bi ghi liên tục ko
          hay khi biến thay dổi gia trị thi avr moi ghi vào eeprom

          Comment


          • #6
            ví dụ mình làm bộ đếm muốn lưu giá trị đếm khi tắt nguồn thì có thể dùng cách trên được không .mình chir ngiaj biến eeprom hạn chế số lần ghi .nên không biết dùng cách khai báo có được ko
            hay mới sài vài bữa đi tong bộ nhớ êprom

            Comment


            • #7
              EEprom thường dùng để lưu dữ liệu, ít khi được dùng làm nơi chứa biến, còn biến nên dùng trên Ram tốt hơn.
              EEprom nội cho phép ít nhất 100 nghìn lần ghi xóa. Cứ ghi dữ liệu thoải mái.
              Với việc bạn muốn lưu giá trị đếm khi tắt nguồn thì việc ghi vào eeprom để đợi con ATmega chết có lẽ bạn cũng "die" rùi.
              Dùng hàm "void EEPROM_viet(unsigned int dchi, unsigned char dlieu)" để cất dữ liệu.
              hàm "unsigned char EEPROM_doc(unsigned int dchi)" để đọc dữ liệu.
              n
              ĐT: 0986 492 489

              Tham khảo:

              Comment


              • #8
                đúng như bạn minhhieu nói mình đã dùng một tu lớn để nuôi avr.dùng một ngắt ngoài để báo mất nguồn.xung đếm của minh cũng la xung ngoài tần số thấp nên không sợ sai .vấn đề của mình là dùng cách truy nhập eeprom nào cho hợp lí.trước minh dùng truy nhập trực tiếp gio minh ko biết chuyển qua cách khai báo biến eeprom co hợp lí ko

                minh đã dùng hàm ghi đọc eeprom nhưng có lúc ko chinh xác giá trị mình lưu nên mới định dùng cách khai báo biến
                Last edited by VNarmy; 08-08-2008, 10:17.

                Comment


                • #9
                  Nguyên văn bởi thanhtung86
                  minh đã dùng hàm ghi đọc eeprom nhưng có lúc ko chinh xác giá trị mình lưu nên mới định dùng cách khai báo biến
                  Cẩn thận với việc dùng tụ lưu điện để lưu eeprom nhé. Dưới một mức điện áp khoảng 3.7V eeprom sẽ ko đảm bảo việc ghi chính xác đâu.
                  AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                  Xem thêm tại Online Store ---> Click here
                  Mob: 0982.083.106

                  Comment


                  • #10
                    Các bác cho em hỏi, khi em lưu giá trị kiểu int thì lưu đc từ 1 đến 255 và khi gọi ra thì trả về đúng số đã lưu, nhưng nêu số lớn hơn 255, khi em read nó ra, thì nó lại không trả về đúng giá trị. Mong các bác giúp đỡ ạ

                    Comment

                    Về tác giả

                    Collapse

                    thanhtung86 Tìm hiểu thêm về thanhtung86

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

                    Collapse

                    Đang tải...
                    X