Thông báo

Collapse
No announcement yet.

Ai có AVR bị cà tưng vì fuse thì vô đây !

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

  • Ai có AVR bị cà tưng vì fuse thì vô đây !

    Trước hết , xin chia buồn cùng bác nào bị vấn đề này với ATmega8/ATtiny2313 vì hai con này có chân RESET có thể bị disable nên cách này không áp dụng được, tuy nhiên nếu may mắn con AVR của bạn vì lý do gì đó không bị disable RESET thì cách này vẫn dùng được .


    + Atmel nói rằng, fuse SPIEN không thể được đọc/ghi khi dùng mạch nạp ISP. do đó cứ an tâm , chip của bạn không bị "chết giấc" vì cái fuse này đâu.

    + AVR có thể chạy với một nguồn xung cấp từ ngoài với các thiết lập dùng nguồn xung ngoài ( mạch RC ngoài, thạch anh ngoài, clock ngoài...).

    Đa số AVR bị set fuse nhầm thường rơi vào trạng thái không hoat động được nên không thể nạp bằng mode ISP được, do đó , nếu khôi phục cho chip chạy lại thì hoàn toàn có thể chỉnh sửa fuse và nạp lại chương trình. Ít người chú ý rằng, AVR không chạy là do không được cấp xung giữ nhịp.

    Để tạo được nguồn xung giử nhịp, bạn có thể dùng một con AVR khác được lập trình để tạo xung xuất ra một chân nào đó, sau đó nối nó vào chân XTAL1:
    Code C đơn giản như sau:
    Code:
    while(1)
    {
    PORTB=0xFF;
    PORTB=0x00;
    } //loop forever;
    Các chân trên portB sẽ xuất là một xung vuông có thể dùng đưoc trong trường hợp này, ngoài ra cũng có thể dùng mạch dao động RC mà các bạn đã được học rất nhiều hoặc một mạch dùng 555 timer như sơ đồ trong file đính kèm ! (các thông số tạo xung 1MHz)

    Một trường hợp khá không may mắn là fuse setting chip về trạng thái dùng thạch anh 32KHz, nếu vậy thì bạn phải hạ xung từ mạch dao động xuống 32 - 40KHz. Sau đó điều bắt buộc là mạch nạp phải hỗ trợ xung SCK nhỏ hơn 8KHz, mà thật sự thì ít có mạch nạp miễn phí nào hỗ trợ việc này !

    Sau khi có nguồn xung rồi, mắc mạch tương tự như hình trong file đính kèm, ở đây lấy thí dụ là con mega8535.

    Sau khi nhận ra chip rồi thì viêc đầu tiên là erease chip một phát nhá, rồi muốn làm gì thì làm !
    Ít nhất 1 con Mega8 ( của mình) đã được cứu theo cách này, thật may mắn vì cái Fuse RSTDISL đã không bị set.

    Còn nếu bạn có điều kiện trang bị mạch nạp STK500 hoặc AVRISP xịn thì mọi chiện dể dàng hơn, xài cái này mà anh nào còn làm chip bị giật cà tưng thì thật là hết chổ nói !.
    Phòng hỏa hơn cứu hỏa ! Không set fuse sai thì làm gì cần set lại cơ chứ!


    Chúc bạn thành công !

    NVT2
    Attached Files
    Tín đồ AVR giáo.

  • #2
    Từ ngày biết AVR đến nay ,chưa hi sinh chú nào cả . mà thấy mấy bác kêu quá .

    Tôi vẫn chung thủy dùng cái mạch ISP 3.7 - Phải chăng cái mạch này có Clock 4Mhz ( external ) nên có phần vượt trội ???

    --- còn với PIC - đã thiệt mạng đến gần chục ông - PIC dễ ngỏm hơn AVR ... hì hì


    --- Các bác đừng có tham rẻ mà làm cái mạch nạp "đơn sơ " quá . Rất dễ sai áp ,đặt sai fuse không sửa được . Nhất là mấy chú mới học thì nên cẩn thận .
    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


    • #3
      Nguyên văn bởi nvt2 Xem bài viết
      Trước hết , xin chia buồn cùng bác nào bị vấn đề này với ATmega8/ATtiny2313 vì hai con này có chân RESET có thể bị disable nên cách này không áp dụng được, tuy nhiên nếu may mắn con AVR của bạn vì lý do gì đó không bị disable RESET thì cách này vẫn dùng được .


      + Atmel nói rằng, fuse SPIEN không thể được đọc/ghi khi dùng mạch nạp ISP. do đó cứ an tâm , chip của bạn không bị "chết giấc" vì cái fuse này đâu.

      + AVR có thể chạy với một nguồn xung cấp từ ngoài với các thiết lập dùng nguồn xung ngoài ( mạch RC ngoài, thạch anh ngoài, clock ngoài...).

      Đa số AVR bị set fuse nhầm thường rơi vào trạng thái không hoat động được nên không thể nạp bằng mode ISP được, do đó , nếu khôi phục cho chip chạy lại thì hoàn toàn có thể chỉnh sửa fuse và nạp lại chương trình. Ít người chú ý rằng, AVR không chạy là do không được cấp xung giữ nhịp.

      Để tạo được nguồn xung giử nhịp, bạn có thể dùng một con AVR khác được lập trình để tạo xung xuất ra một chân nào đó, sau đó nối nó vào chân XTAL1:
      Code C đơn giản như sau:
      Code:
      while(1)
      {
      PORTB=0xFF;
      PORTB=0x00;
      } //loop forever;
      Các chân trên portB sẽ xuất là một xung vuông có thể dùng đưoc trong trường hợp này, ngoài ra cũng có thể dùng mạch dao động RC mà các bạn đã được học rất nhiều hoặc một mạch dùng 555 timer như sơ đồ trong file đính kèm ! (các thông số tạo xung 1MHz)

      Một trường hợp khá không may mắn là fuse setting chip về trạng thái dùng thạch anh 32KHz, nếu vậy thì bạn phải hạ xung từ mạch dao động xuống 32 - 40KHz. Sau đó điều bắt buộc là mạch nạp phải hỗ trợ xung SCK nhỏ hơn 8KHz, mà thật sự thì ít có mạch nạp miễn phí nào hỗ trợ việc này !

      Sau khi có nguồn xung rồi, mắc mạch tương tự như hình trong file đính kèm, ở đây lấy thí dụ là con mega8535.

      Sau khi nhận ra chip rồi thì viêc đầu tiên là erease chip một phát nhá, rồi muốn làm gì thì làm !
      Ít nhất 1 con Mega8 ( của mình) đã được cứu theo cách này, thật may mắn vì cái Fuse RSTDISL đã không bị set.

      Còn nếu bạn có điều kiện trang bị mạch nạp STK500 hoặc AVRISP xịn thì mọi chiện dể dàng hơn, xài cái này mà anh nào còn làm chip bị giật cà tưng thì thật là hết chổ nói !.
      Phòng hỏa hơn cứu hỏa ! Không set fuse sai thì làm gì cần set lại cơ chứ!


      Chúc bạn thành công !

      NVT2



      Chân ICP nên nối điện trở 10k lên VCC (+5V)
      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


      • #4
        Nguyên văn bởi queduong Xem bài viết
        Từ ngày biết AVR đến nay ,chưa hi sinh chú nào cả . mà thấy mấy bác kêu quá .
        NVT2 cũng có thiệt mạng con nào đâu, chỉ tại thấy mấy bác nhà tao kêu gào thảm thiết quá nên viết thôi !

        QD xài cái ISP 3.7 thì không vướng cái này vì giao diện nó có phần fuse/lock tách biệt, còn với CodeVison, giao diện của nó khá phức tạp, cứ buồn buồn nhấn nút program all là tiêu thôi.

        Chân ICP nên nối điện trở 10k lên VCC (+5V)
        Cái này thì NVT2 thấy không cần thiết vì khi kéo RESET để enter prog mode thì chân này mất tác dụng !

        NVT2
        Tín đồ AVR giáo.

        Comment


        • #5
          Thế các anh cho em hỏi, set fuse trong AVR khác gì với set fuse trong PIC, với cả việc sử dụng XTAL trong AVR như thế nào, thí dụ trong CCS C thì mình chỉ cần khai báo (Clock=20000000) với set fuses là HS là được, nhưng mà các ví dụ mà các anh đưa ra toàn sử dụng dao động nội trong AVR. Hình như code trong CodeVision có ít code sẵn hơn code trong CCS C, và đôi khi còn có code ASM trong đấy nữa thì phải. Cho em mạo muội hỏi vài câu, vì em trc chỉ học PIC thôi, giờ chuyển qua AVR thấy đau đầu quá.

          Comment


          • #6
            AVR phân biệt rõ ràng việc cấu hình fuse và việc lập trình Flash hay EEPROM. Fuse được lập trình hoàn toàn độc lập, không liên quan đến việc lập trình Flash.
            Sở dĩ các bạn không nắm được vấn đề này là do không chịu đọc kỹ datasheet! Khi làm việc với vi điều khiển nói chung, gặp bất cứ vấn đề gì khúc mắc các bạn nên tìm hiểu trước hết trong datasheet, sau đó là các Errata của chíp đó rồi đến các Application Note được nhà sản xuất cung cấp. Chỉ cần đọc vài phần trong datasheet các bạn sẽ làm sáng tỏ được vấn đề, không thể lúc nào cũng trông mong vào người khác được!

            Vài lời góp ý!
            PNLab
            Mạch nạp/debug ULink2, Jlink ARM USB
            Mạch nạp AVR, PIC, 8051, MSP430 USB
            Mạch phát triển STM32, ARM9, ARM11
            more...www.pnlabvn.com

            Comment


            • #7
              Đúng là em chưa đọc kĩ datasheet thật, căn bản là em ko phải dân chuyên điện tử mà là dân cơ khí, chỉ có cái hobby điện tử. Hì hì, thôi để tu luyện thêm ít datasheet của AVR thêm.
              Nhưng mà có vẻ em thấy hình như đa số những người mới học đều học PIC với 8051, vì bên đó giải thích cặn kẽ, và có những tutorial cơ bản hơn. Còn AVR ít ng hỏi, 1 là vì toàn những người thạo VDK rùi nên quen, 2 là ko có tutorial cơ bản nhất, bên này em thấy mấy bài học cơ bản cho người mới bắt đầu toàn bị xpam ) sozy.
              Khi lên 4rum một số người học điện hoặc điện tử, còn một số lại ko phải mà họ là những người ham mê, ko thể đòi hỏi có những kiến thức cơ bản như dân điện và điện tử dc, vì thế theo em, khi các anh mở topic AVR dành cho người mới bắt đầu thì mod cần phải chọn lọc ra, chỉ post bài tutorial lên thôi, còn phần thắc mắc có thể cho thêm một topic ở ngoài, như thế mới dễ cho người mới bắt đầu, ko thì họ sẽ sớm nản.
              Đấy là đôi chút cảm nhận của em về bên 4rum AVR này.

              Comment


              • #8
                Nguyên văn bởi Auto_engine Xem bài viết
                Đúng là em chưa đọc kĩ datasheet thật, căn bản là em ko phải dân chuyên điện tử mà là dân cơ khí, chỉ có cái hobby điện tử. Hì hì, thôi để tu luyện thêm ít datasheet của AVR thêm.
                Nhưng mà có vẻ em thấy hình như đa số những người mới học đều học PIC với 8051, vì bên đó giải thích cặn kẽ, và có những tutorial cơ bản hơn. Còn AVR ít ng hỏi, 1 là vì toàn những người thạo VDK rùi nên quen, 2 là ko có tutorial cơ bản nhất, bên này em thấy mấy bài học cơ bản cho người mới bắt đầu toàn bị xpam ) sozy.
                Khi lên 4rum một số người học điện hoặc điện tử, còn một số lại ko phải mà họ là những người ham mê, ko thể đòi hỏi có những kiến thức cơ bản như dân điện và điện tử dc, vì thế theo em, khi các anh mở topic AVR dành cho người mới bắt đầu thì mod cần phải chọn lọc ra, chỉ post bài tutorial lên thôi, còn phần thắc mắc có thể cho thêm một topic ở ngoài, như thế mới dễ cho người mới bắt đầu, ko thì họ sẽ sớm nản.
                Đấy là đôi chút cảm nhận của em về bên 4rum AVR này.
                Tán thành ý kiến của bạn nhưng mà bạn à, không phải ai cũng rãnh rang mà ngồi chỉ bảo từng chút một đâu, tuy nhiên sắp tới hy vọng việc này sẽ được các nhà sản xuất tool cho VDK thực hiện.

                NVT2
                Tín đồ AVR giáo.

                Comment


                • #9
                  Nguyên văn bởi Auto_engine Xem bài viết
                  Thế các anh cho em hỏi, set fuse trong AVR khác gì với set fuse trong PIC, với cả việc sử dụng XTAL trong AVR như thế nào, thí dụ trong CCS C thì mình chỉ cần khai báo (Clock=20000000) với set fuses là HS là được, nhưng mà các ví dụ mà các anh đưa ra toàn sử dụng dao động nội trong AVR. Hình như code trong CodeVision có ít code sẵn hơn code trong CCS C, và đôi khi còn có code ASM trong đấy nữa thì phải. Cho em mạo muội hỏi vài câu, vì em trc chỉ học PIC thôi, giờ chuyển qua AVR thấy đau đầu quá.

                  Nội đâu mà nội , nếu để ý thì một số trình dịch ( có tích hợp lập trình ) nó set mặc định là mắc thạch anh bên ngoài .
                  Sau đó vì lơ mơ rồi bấm cái nút lập trình , lần sau muốn lập trình lại thì không nhận được chip nữa .
                  Nguyên nhân là không có clock cung cấp cho chip ( vì mạch nạp quá sơ sài ) .

                  Nói chung là nên đầu tư một cái mạch nạp tốt ( trên diễn đàn nhiều người bán )
                  Vừa đỡ lo lại được tiếng khích lệ tinh thần anh em
                  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
                    cho mình hỏi , mỗi lần nạp cho con atmega8535 ,nạp flash thì ok , nhưng nạp đến ểpom thì treo cứng ngắt, chạy lại cũng bị như vậy và báo là epprom không đọc được địa chỉ

                    Comment


                    • #11
                      Cái này có thể do con vdk đó ! mình cũng bị một con nạp flash bình thường nhưng khi đọc lại toàn FF .
                      Mạch nạp Little Programmer
                      MSC-51,AVR,EEPROM ... etc

                      Site Fukusei shop :

                      Comment


                      • #12
                        Dám Hỏi Các Bạn Về Tốc độ Hoạt động Lớn Nhất Của Avr Và Plc.hiện Tại Em Nghe Nói Avr 20mhz Mà Plc Lại Tới 40mhz.em đang Xài Avr Mà Chương Trình Thì Lại Cần Tốc độ Cao để Hiển Thị Cho Thằng Lcd 480x640 Không Biết Có Avr Nào Tốc độ Cao Không Nhỉ. Help Me...
                        linh kiện máy ép nhựa : điện , thủy lực secon-hand

                        Comment


                        • #13
                          Tốc độ lớn nhất hiện nay của AVR là 20MIPS, tuy nhiên đó thường là các chíp có ít chân. Để điều khiển GLCD bạn cần sử dụng các chíp dòng ATMEGA, dòng này tốc độ MAX là 16MIPS. Điều khiển GLCD có nhiều cách, nhiều kĩ thuật, màn hình 480x640 là khá lớn.

                          Không thể so sánh AVR và PLC vì chúng không cùng một dòng. Nếu có thời gian sẽ phân tích thêm về điều này!
                          PNLab
                          Mạch nạp/debug ULink2, Jlink ARM USB
                          Mạch nạp AVR, PIC, 8051, MSP430 USB
                          Mạch phát triển STM32, ARM9, ARM11
                          more...www.pnlabvn.com

                          Comment


                          • #14
                            Nguyên văn bởi nvt2 Xem bài viết
                            Trước hết , xin chia buồn cùng bác nào bị vấn đề này với ATmega8/ATtiny2313 vì hai con này có chân RESET có thể bị disable nên cách này không áp dụng được, tuy nhiên nếu may mắn con AVR của bạn vì lý do gì đó không bị disable RESET thì cách này vẫn dùng được .


                            + Atmel nói rằng, fuse SPIEN không thể được đọc/ghi khi dùng mạch nạp ISP. do đó cứ an tâm , chip của bạn không bị "chết giấc" vì cái fuse này đâu.

                            + AVR có thể chạy với một nguồn xung cấp từ ngoài với các thiết lập dùng nguồn xung ngoài ( mạch RC ngoài, thạch anh ngoài, clock ngoài...).

                            Đa số AVR bị set fuse nhầm thường rơi vào trạng thái không hoat động được nên không thể nạp bằng mode ISP được, do đó , nếu khôi phục cho chip chạy lại thì hoàn toàn có thể chỉnh sửa fuse và nạp lại chương trình. Ít người chú ý rằng, AVR không chạy là do không được cấp xung giữ nhịp.

                            Để tạo được nguồn xung giử nhịp, bạn có thể dùng một con AVR khác được lập trình để tạo xung xuất ra một chân nào đó, sau đó nối nó vào chân XTAL1:
                            Code C đơn giản như sau:
                            Code:
                            while(1)
                            {
                            PORTB=0xFF;
                            PORTB=0x00;
                            } //loop forever;
                            Các chân trên portB sẽ xuất là một xung vuông có thể dùng đưoc trong trường hợp này, ngoài ra cũng có thể dùng mạch dao động RC mà các bạn đã được học rất nhiều hoặc một mạch dùng 555 timer như sơ đồ trong file đính kèm ! (các thông số tạo xung 1MHz)

                            Một trường hợp khá không may mắn là fuse setting chip về trạng thái dùng thạch anh 32KHz, nếu vậy thì bạn phải hạ xung từ mạch dao động xuống 32 - 40KHz. Sau đó điều bắt buộc là mạch nạp phải hỗ trợ xung SCK nhỏ hơn 8KHz, mà thật sự thì ít có mạch nạp miễn phí nào hỗ trợ việc này !

                            Sau khi có nguồn xung rồi, mắc mạch tương tự như hình trong file đính kèm, ở đây lấy thí dụ là con mega8535.

                            Sau khi nhận ra chip rồi thì viêc đầu tiên là erease chip một phát nhá, rồi muốn làm gì thì làm !
                            Ít nhất 1 con Mega8 ( của mình) đã được cứu theo cách này, thật may mắn vì cái Fuse RSTDISL đã không bị set.

                            Còn nếu bạn có điều kiện trang bị mạch nạp STK500 hoặc AVRISP xịn thì mọi chiện dể dàng hơn, xài cái này mà anh nào còn làm chip bị giật cà tưng thì thật là hết chổ nói !.
                            Phòng hỏa hơn cứu hỏa ! Không set fuse sai thì làm gì cần set lại cơ chứ!


                            Chúc bạn thành công !

                            NVT2
                            Cảm ơn bạn nvt2, tui kíu được 2 em ATMEGA64L..
                            |

                            Comment


                            • #15
                              Ha ha, mình cũng cứu dc con ATtiny2313 rồi! Lần đó tư tưởng đang lơ mơ nên nạp luôn file hex của con 89S52 cho con tiny, thế là im từ đó!
                              !e

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X