Thông báo

Collapse
No announcement yet.

Hỏi cách xóa dữ liệu trong EEPROM

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

  • Hỏi cách xóa dữ liệu trong EEPROM

    Em chào các bác ạ,
    Các bác cho em hỏi cái. Em làm một mạch đo nhiệt độ, mỗi phút lưu nhiệt độ vào eeprom 24c512. Nhưng lại nảy sinh một vấn đề là khi tắt đi bật lại, em muốn dữ liệu cũ được xóa đi hoàn toàn, để tránh trường hợp dữ liệu cũ vẫn còn tồn tại. Nhưng em chưa biết thuật toán phải làm như thế nào ạ. Các bác giúp em với nhé, sau Tết em phải nộp bài rồi.
    Em xin chân thành cảm ơn và chúc các bác một năm mới ngập tràn hạnh phúc.

  • #2
    Ack ack. Lưu vào eeprom cốt để ko mất dữ liệu khi mất điện chứ muốn xóa thì lưu vào ram cho rồi.
    Còn nếu vẫn muốn xóa thì làm cái thủ tục xóa eeprom khi init chương trình thôi.
    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


    • #3
      Nguyên văn bởi qwerty68 Xem bài viết
      Em chào các bác ạ,
      Các bác cho em hỏi cái. Em làm một mạch đo nhiệt độ, mỗi phút lưu nhiệt độ vào eeprom 24c512. Nhưng lại nảy sinh một vấn đề là khi tắt đi bật lại, em muốn dữ liệu cũ được xóa đi hoàn toàn, để tránh trường hợp dữ liệu cũ vẫn còn tồn tại. Nhưng em chưa biết thuật toán phải làm như thế nào ạ. Các bác giúp em với nhé, sau Tết em phải nộp bài rồi.
      Em xin chân thành cảm ơn và chúc các bác một năm mới ngập tràn hạnh phúc.
      thế này vệc gì phải lưu vào eeprom làm gì?
      Never forget who you are!

      Comment


      • #4
        Nguyên văn bởi nhquangdt3k5 Xem bài viết
        thế này vệc gì phải lưu vào eeprom làm gì?
        chắc là ngừoi ta cần bộ nhớ lớn để lưu 1 lượng dữ liệu lớn nhưng lại ko biết chọn linh kiện, Thay vì chọn phải chọn RAM ngoài thì người ta đi chọn EEPROM

        Comment


        • #5
          Em muốn lưu trữ dữ liệu vào EEprom, sau kiểu muốn xóa số liệu cũ đi để ghi số liệu mới vào ấy ạ.
          Vì để tận dụng các Eeprom cũ đã lưu dữ liệu rồi, thì em muốn xóa dữ liệu cũ ấy đi để ghi cái mới vào ạ. Chứ giờ đo mỗi lần mà hết 1 cái eeprom lại vứt đi thì phí lắm ạ.

          Comment


          • #6
            Nguyên văn bởi qwerty68 Xem bài viết
            Em muốn lưu trữ dữ liệu vào EEprom, sau kiểu muốn xóa số liệu cũ đi để ghi số liệu mới vào ấy ạ.
            Vì để tận dụng các Eeprom cũ đã lưu dữ liệu rồi, thì em muốn xóa dữ liệu cũ ấy đi để ghi cái mới vào ạ. Chứ giờ đo mỗi lần mà hết 1 cái eeprom lại vứt đi thì phí lắm ạ.
            Hic hic , mới hay cũ thì liên quan gì ở đây , miễn là con EEPROM đó còn sống ... thì mình ghi đi ghi lại hàng trăm nghìn lần ... ghi vào địa chỉ nào thì nó lưu ở đó ... ghi đè lên thì nó sẽ có dữ liệu là lần ghi sau cùng .

            Ví dụ ghi vào địa chỉ 0 giá trị là 0xAA ... lần sau lại ghi vào địa chỉ 0 giá trị là 0xBB ( thì lúc này địa chỉ 0 có giá trị là 0xBB ) ... Chứ có phải ghi đầy vào là vứt đi đâu !
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #7
              Nguyên văn bởi queduong Xem bài viết
              Hic hic , mới hay cũ thì liên quan gì ở đây , miễn là con EEPROM đó còn sống ... thì mình ghi đi ghi lại hàng trăm nghìn lần ... ghi vào địa chỉ nào thì nó lưu ở đó ... ghi đè lên thì nó sẽ có dữ liệu là lần ghi sau cùng .

              Ví dụ ghi vào địa chỉ 0 giá trị là 0xAA ... lần sau lại ghi vào địa chỉ 0 giá trị là 0xBB ( thì lúc này địa chỉ 0 có giá trị là 0xBB ) ... Chứ có phải ghi đầy vào là vứt đi đâu !
              Bác không hiểu rồi ạ, ví dụ em ghi dữ liệu đến 0xAA, nhưng các dữ liệu sau 0xAA thì vẫn là lần đo cũ. Nên khi đem về xử lý thì sẽ bị trộn lẫn dữ liệu vì em sẽ không biết là dữ liệu lần đo mới kết thúc ở ô nào.

              Comment


              • #8
                Nguyên văn bởi qwerty68 Xem bài viết
                Bác không hiểu rồi ạ, ví dụ em ghi dữ liệu đến 0xAA, nhưng các dữ liệu sau 0xAA thì vẫn là lần đo cũ. Nên khi đem về xử lý thì sẽ bị trộn lẫn dữ liệu vì em sẽ không biết là dữ liệu lần đo mới kết thúc ở ô nào.
                bó tay ... mình là người lập trình ... mình kiểm soát chương trình lại không biết nó nằm ở chỗ nào nữa là sao ???

                --- Nếu muốn biết dữ liệu của mình load vào đến chỗ nào dành cho nó vài byte ở cuối bộ nhớ ( hay đầu bộ nhớ cũng được , hay bất kể chỗ nào mà Dữ liệu của bạn không ghi vào ) ... cái vị trí ấy để ghi , đánh dấu là Tao đã ghi đến Địa chỉ này rồi

                --- dữ liệu mặc định ( Blank ) của các EEPROM mới ra lò là 0xFF !

                Giả dụ mình dùng 2 byte cuối cùng để đánh dấu thì sẽ đánh dấu được đến địa chỉ tối đa là 65535
                Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                Comment


                • #9
                  hoặc 1 cách khác ... bạn dành 1 vài byte ở cuối để làm " đánh dấu cho nó " chẳng hạn 0xAA 0xBB 0xCC 0xDD 0xEE
                  sau khi kiểm tra mà đến đoạn 0xEE này thì dừng ! lúc đó địa chỉ cuối cùng - 5
                  Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                  Comment


                  • #10
                    Nguyên văn bởi queduong Xem bài viết
                    bó tay ... mình là người lập trình ... mình kiểm soát chương trình lại không biết nó nằm ở chỗ nào nữa là sao ???

                    --- Nếu muốn biết dữ liệu của mình load vào đến chỗ nào dành cho nó vài byte ở cuối bộ nhớ ( hay đầu bộ nhớ cũng được , hay bất kể chỗ nào mà Dữ liệu của bạn không ghi vào ) ... cái vị trí ấy để ghi , đánh dấu là Tao đã ghi đến Địa chỉ này rồi

                    --- dữ liệu mặc định ( Blank ) của các EEPROM mới ra lò là 0xFF !

                    Giả dụ mình dùng 2 byte cuối cùng để đánh dấu thì sẽ đánh dấu được đến địa chỉ tối đa là 65535
                    Vì em để đo sensor tự động mà anh. Khi mà đo xong thì rút eeprom về để cho vào máy tính xử lý ạ. Trước giờ em toàn ghi số liệu vào địa chỉ kiểu 0x00+x (x chạy từ 0-65535) ạ. Em sẽ xem cách anh xem sao ạ. Em cảm ơn.

                    Comment


                    • #11
                      Nguyên văn bởi queduong Xem bài viết
                      Hic hic , mới hay cũ thì liên quan gì ở đây , miễn là con EEPROM đó còn sống ... thì mình ghi đi ghi lại hàng trăm nghìn lần ... ghi vào địa chỉ nào thì nó lưu ở đó ... ghi đè lên thì nó sẽ có dữ liệu là lần ghi sau cùng .

                      Ví dụ ghi vào địa chỉ 0 giá trị là 0xAA ... lần sau lại ghi vào địa chỉ 0 giá trị là 0xBB ( thì lúc này địa chỉ 0 có giá trị là 0xBB ) ... Chứ có phải ghi đầy vào là vứt đi đâu !
                      Bac quế dương cho em hỏi tại sao khi ghi dữ liệu lần đầu tiên vào eeprom 24c02 thi ghi được mà khi ghi lần thứ 2 lại không được vậy,
                      giả sử em ghi 6 byte {0x1,0x2,0x3,0x4,0x5,0x6} bắt đầu ở địa chỉ 0x05 chẳng hạn thì địa chỉ eeprom tự đếm lên và ghi tốt 6 byte trên, nhưng khi em ghi lại 6 byte như trên vào địa chỉ 0,02 thì nó chỉ ghi được 4 giá trị đầu thôi còn hai giá trị ở địa chỉ 0x05 và 0x06 thì nó không ghi được, kết quả hiện thị như thế này {1,2,3,4,1,2}. Cho em hỏi đây có phải là lỗi eeprom hay lỗi lập trình, code cua em đây ạ:
                      code :

                      const unsigned char set_data_write[6]={0x1,0x2,0x3,0x4,0x5,0x6};
                      void write_eeprom(unsigned char address)
                      { i2c_start();
                      i2c_write(eeprom_adress|write); //write= 0
                      i2c_write(address);
                      for(i=0;i<6;i++) i2c_write(set_data_write[i]);
                      i2c_stop();
                      }
                      mong nhận được hồi âm, cám ơn anh trước nha .

                      Comment

                      Về tác giả

                      Collapse

                      qwerty68 Trịnh Ngọc Duy Tìm hiểu thêm về qwerty68

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

                      Collapse

                      Đang tải...
                      X