Thông báo

Collapse
No announcement yet.

Vấn đề về lưu giá trị vào eeprom (GẤP LẮM)

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

  • Vấn đề về lưu giá trị vào eeprom (GẤP LẮM)

    eeprom unsigned char x;
    if(up==0)
    {
    x++;
    x=x%10000;
    }

    Biến x được đưa ra hiển thị led 7 đoạn, được mấy bữa đầu đang chạy mà mất điện lúc mở lên nó vẫn lưu đúng, nhưng sau 1 thời gian mất điện mở lên mỗi lúc 1 giá trị khác nhau. Ngồi nghĩ mới biết eeprom của avr chỉ chịu đc 100.000 lần ghi xóa, mà bữa giờ mình đã ghi quá 100.000 lần rồi, thế là đi toi bộ nhớ eeprom.
    Các bác cho e hỏi có cách nào khắc phục đc ko? Bo mạch đã làm xong và chuẩn bị giao cho khách hàng rồi giờ nó bị cái này thì làm sao mà giao hàng đc, mà làm mấy chục cái chứ có ít đâu.
    Mà bác nào biết cách kết nối avr với eeprom ngoài, ví dụ như AT 24C64, và chương trình để kết nối chỉ em cái để làn sau rút kinh nghiệm.
    Giờ mới đau đầu với mấy chục cái bo đây.
    Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
    Liên hệ sđt: 0902.808.371

  • #2
    bạn không nên lưu tùy tiện vào eeprom chỉ khi nào mất điện thì mới cho lưu vào eeprom thì nó mới ghi được nhiều lần chứ bạn cứ ghi luôn tục theo chu kỳ thì làm sao mà nó chịu được dùng chân ADC của nó mà phát hiện khi nào mất điện thì lưu giá trị đó vào eeprom.
    Never forget who you are!

    Comment


    • #3
      Mình đang làm cái phát hiện mất điện bằng cách thêm 1 con tụ 1000uF, 1 con diode, 2 con transistor, và mấy con trở, thấy bạn nói dùng chân ADC để phát hiện thấy đơn giản quá, nhưng phát hiện kiểu gì đây, mình chưa rõ lắm.
      Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
      Liên hệ sđt: 0902.808.371

      Comment


      • #4
        Nguyên văn bởi manh89 Xem bài viết
        Mình đang làm cái phát hiện mất điện bằng cách thêm 1 con tụ 1000uF, 1 con diode, 2 con transistor, và mấy con trở, thấy bạn nói dùng chân ADC để phát hiện thấy đơn giản quá, nhưng phát hiện kiểu gì đây, mình chưa rõ lắm.
        Thế này có được không nhỉ ???

        Click image for larger version

Name:	backup.JPG
Views:	1
Size:	41.6 KB
ID:	1354705

        Bình thường khi có điện thì chân ADC có điện áp ( tùy theo cầu chia điện trở ) ... ta chia tỉ lệ điện trở để điện áp >0V ( nên có giá trị điện áp khoảng 2,5V là an toàn ) .

        khi mất điện ( điện áp 0V ).

        Dùng chân ADC của AVR đọc giá trị điện áp này ( nên để độ co giãn ... tránh trường hợp nguồn chập chờn ... sụt điện ) giả dụ detect điện áp dưới 1,5V là mất điện ...

        --- Lúc này khi đã nhận biết được mất điện thì ( tụ vẫn lưu trữ điện --- ta ghi vào bộ nhớ thôi ) .

        --- Muốn trữ được điện lâu thì phải dùng tụ có giá trị to, mức tiêu thụ của mạch ít ( mạch ăn ít dòng )
        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


        • #5
          Nhất trí là tụ cần to để đủ NL cấp cho con MCU dư sức cho nó chạy_Mạch mà lại có 1 đống Led 7 nữa thì_Nhưng vẫn có cách là nên dùng diode trước đầu vào cấp nguồn cho MCU và tụ tích trữ thì đặt sau diode, như vậy NL nó ko xả lung tung mà chỉ xả cho MCU là chính. Mỗi tội Pro lại đang sở hữu mấy chục cái mạch_Hy vọng khắc phục đc.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            Cảm ơn các bác đã chia sẻ, em sẽ thử xem sao, trong lúc chờ đợi câu trả lời của các bác em ngồi nghĩ ra đc cái mạch này, các bác coi xem có khả thi ko? Mà sao e làm ko chạy đc, chắc là do tính toán giá trị linh kiện chưa đúng.
            Em giải thích sơ qua cái mạch này, bình thường khi có điện chân PINB.7==1, khi mất điện chân PINB.7==0, VDK sẽ nhận lệnh PINB.7==0 để lưu biến x vào eeprom. Hiểu là như thế nhưng làm mạch thật thì chưa đc.
            Em sẽ thử cách dùng ADC như mấy bác nói xem sao, các bác coi giùm em cái mạch này xem có khả thi ko?
            Em cảm ơn nhiều!
            Attached Files
            Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
            Liên hệ sđt: 0902.808.371

            Comment


            • #7
              Nguyên văn bởi manh89 Xem bài viết
              Cảm ơn các bác đã chia sẻ, em sẽ thử xem sao, trong lúc chờ đợi câu trả lời của các bác em ngồi nghĩ ra đc cái mạch này, các bác coi xem có khả thi ko? Mà sao e làm ko chạy đc, chắc là do tính toán giá trị linh kiện chưa đúng.
              Em giải thích sơ qua cái mạch này, bình thường khi có điện chân PINB.7==1, khi mất điện chân PINB.7==0, VDK sẽ nhận lệnh PINB.7==0 để lưu biến x vào eeprom. Hiểu là như thế nhưng làm mạch thật thì chưa đc.
              Em sẽ thử cách dùng ADC như mấy bác nói xem sao, các bác coi giùm em cái mạch này xem có khả thi ko?
              Em cảm ơn nhiều!
              Nếu bạn đã cách ly đi ốt trước nguồn 5V rồi thì nối luôn 1 chân PB7 chẳng hạn vào nguồn 5V ( trước diode ( cực A )) ( thêm con trở 10k từ PB7 xuống GND )

              --- Khi khởi động ( nên để trễ để tránh nhận nhầm ) ... khi chạy ổn định ... set nó lúc nào cũng đọc ( kiểm tra liên tục chân này ) ( sử dụng ngắt , timer , vòng lặp ... hay bất cứ ở đâu ) ( kiểm tra liên tục ) .

              --- Cách này đơn giản nhất ngoài 1 con trở + diode + tụ
              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


              • #8
                Đặt ngắt ngoài.Sau khi khởi động đợi 1 tý rồi đặt ngắt.
                , , ,

                Comment


                • #9
                  Cảm ơn các bác đã hướng dẫn nhiệt tình, em làm đc rồi. Nhưng giờ phải thay mấy con VDK đã bị hư eeprom.
                  Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
                  Liên hệ sđt: 0902.808.371

                  Comment


                  • #10
                    Nguyên văn bởi queduong Xem bài viết
                    Thế này có được không nhỉ ???

                    [ATTACH=CONFIG]37952[/ATTACH]

                    Bình thường khi có điện thì chân ADC có điện áp ( tùy theo cầu chia điện trở ) ... ta chia tỉ lệ điện trở để điện áp >0V ( nên có giá trị điện áp khoảng 2,5V là an toàn ) .

                    khi mất điện ( điện áp 0V ).

                    Dùng chân ADC của AVR đọc giá trị điện áp này ( nên để độ co giãn ... tránh trường hợp nguồn chập chờn ... sụt điện ) giả dụ detect điện áp dưới 1,5V là mất điện ...

                    --- Lúc này khi đã nhận biết được mất điện thì ( tụ vẫn lưu trữ điện --- ta ghi vào bộ nhớ thôi ) .

                    --- Muốn trữ được điện lâu thì phải dùng tụ có giá trị to, mức tiêu thụ của mạch ít ( mạch ăn ít dòng )
                    Bác cho e hỏi, em có thể sử dụng luôn nguồn 5V thay cho nguồn 12V được không? Với lại con zenner kia là 4.7V phaỉ không bác? Cảm ơn bác.
                    WS:
                    Blog:

                    Comment


                    • #11
                      Nguyên văn bởi manh89 Xem bài viết
                      Cảm ơn các bác đã hướng dẫn nhiệt tình, em làm đc rồi. Nhưng giờ phải thay mấy con VDK đã bị hư eeprom.
                      Bác post mạch của bác đã chạy ổn định cho e tham khảo nữa? Cảm ơn bác.
                      WS:
                      Blog:

                      Comment


                      • #12
                        Nguyên văn bởi quangtung112 Xem bài viết
                        Bác cho e hỏi, em có thể sử dụng luôn nguồn 5V thay cho nguồn 12V được không? Với lại con zenner kia là 4.7V phaỉ không bác? Cảm ơn bác.
                        nguồn 5V cũng được, nhưng tính lại giá trị R và nguồn 5V này phải lấy trước khi đưa vào chân vdd của vdk. khi sử dụng nguồn 5V thì khỏi cần zener lun.

                        Comment


                        • #13
                          Nguyên văn bởi caovanhuong Xem bài viết
                          nguồn 5V cũng được, nhưng tính lại giá trị R và nguồn 5V này phải lấy trước khi đưa vào chân vdd của vdk. khi sử dụng nguồn 5V thì khỏi cần zener lun.
                          lấy trước khi đưa vào chân vdd là như thế nào vậy bác? Nghĩa là nguồn 5V đưa qua 1 con điot rồi mới vào VDD còn cái kia nối trực tiếp với nguồn đúng không? Nhưng nếu như vậy chân VDD chỉ còn 4.3V, liệu có đảm bảo cho VĐK hđộng ko bác?
                          WS:
                          Blog:

                          Comment


                          • #14
                            Nguyên văn bởi quangtung112 Xem bài viết
                            lấy trước khi đưa vào chân vdd là như thế nào vậy bác? Nghĩa là nguồn 5V đưa qua 1 con điot rồi mới vào VDD còn cái kia nối trực tiếp với nguồn đúng không? Nhưng nếu như vậy chân VDD chỉ còn 4.3V, liệu có đảm bảo cho VĐK hđộng ko bác?
                            bác sử dụng con nào vậy.

                            Comment


                            • #15
                              e sử dụng ATmega16.
                              WS:
                              Blog:

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X