Skip to main content

Arduino Nano nạp code không được

Arduino Nano
Tình trạng
Khi bạn nạp code cho arduino nano, IDE sẽ hiển thị là Uploading... rất lâu sau đó báo lỗi:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x5c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x5c
Problem uploading to board.  See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

 

Hoặc

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x74

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x89

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x6d

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x55

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xbf

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xba


Khắc phục 

Nguyên nhân 1. Có thể chip ATmega không có bootloader hoặc bootloader hỏng. Với trường hợp này cần phải nạp hoặc cập nhật lại boot loader. Để nạp lại boot loader bạn phải có mạch nạp USBasp hoặc dùng một mạch Arduino khác như Arduino UNO để nạp. Có thể xem thêm bài viết "Dùng mạch nạp USBasp để nạp code cho Arduino".

Nguyên nhân 2. Một số chip Atmega trên arduino nano phiên bản cũ có boot loader sử dụng tốc độ baudrate là 57600 khi nạp, trong khi boot loader phiên bản mới hơn sử dụng baudrate là 115200. Trong trường hợp này, để khắc phục, bạn chọn Tools > Processor > Atmega328P (Old bootloader) sau đó nhấn nút upload để xem có nạp được không.

Nguyên nhân 3. Về căn bản khi thấy thông báo "programmer is not responding" có nghĩa là Arduino IDE không thể giao tiếp được với chip Atmega. Trường hợp này xảy ra khi bạn chọn không đúng cổng COM hoặc driver của giao tiếp COM có vấn đề. Như bạn biết Arduino IDE giao tiếp với Atmega thông qua một chip serial trung gian. Các board arduino phiên bản gốc thì giao tiếp serial là chip Atmega 16u2, đối với các board clone thì sử dụng chip CH340G. Cho nên, bạn cần kiểm tra lại driver cho CH340G nếu trên board arduino của bạn dùng chip này cho giao tiếp serial.

Đây là hình ảnh của cửa sổ Device Manager cho thấy bạn chưa có driver cho chip CH340G

No CH340 driver

Đây là hình ảnh của cửa sổ Device Manager cho thấy bạn đã có driver cho chip CH340G

CH340G Driver

Driver của CH340G có thể tải về tại đây, chạy file exe để cài đặt như hình dưới đây

CH340G Driver Setup

Hãy chia sẻ trường hợp của bạn bị lỗi như thế nào và cách khắc phục được / hoặc không được bằng cách comment ở dưới nhé! Có thể comment của bạn sẽ hữu ích cho nhiều người khác nữa.

Nếu bạn muốn đọc sách về arduino thì có thể tải về từ đay nhé:

 


Comments

  1. ko cos ATmega328P(old bootloader ) thif lamf sao

    ReplyDelete
  2. Trên Processor không có ATmega328P( old bootloader ) nhỉ

    ReplyDelete
  3. Board của bạn có phải là Arduino Nano không? Trường hợp nạp không được này là của board Arduino Nano nhé. Bạn phải chọn Tools > Board là Arduino Nano, thì khi đó sẽ có menu cho old bootloader.

    ReplyDelete
  4. Không thấy mục Processỏ luôn. :v

    ReplyDelete
    Replies
    1. Bạn phải mở Tools > Board, rồi chọn board trước thì mới thấy mục Processor được.

      Delete
  5. Mình bị tình trạng này trên LGT8F328P, mong bác cho cao kiến ạ

    ReplyDelete
    Replies
    1. Bạn thử xem bài viết này https://minhcnguyen.blogspot.com/2021/02/Board-LGT8F328P-LQFP32-MiniEVB-giao-tiep-led-TM1637-dung-Arduino-va-cai-ket.html. Trong bài viết có đề cập đến việc nạp code cho board LGT8F328P

      Delete
    2. mình làm y hệt và coppy cả đoạn code để nạp nhưng vẫn xảy ra lỗi trên, đã thử xoá đi cài lại vẫn không đc, bác dùng bản Arduino IDE bản bao nhiêu vậy ạ?

      Delete
    3. Mình dùng Arduino IDE 1.8.13 thấy nạp ok, chưa lần nào bị trường hợp như vậy. Không biết board của bạn có phải là board LGT8F328P-LQFP32-MiniEVB giống như trong blog của mình luôn không?

      Delete
    4. Bạn thử vô Tools > Programmer rồi chọn "LGTSWD mkII as ISP" xem có xi nhê gì không

      Delete
  6. Board của mình giống y chang, từ thông số tới hình ảnh. Mình có 2 board, 1 board nạp được 1 lần xong từ đó cũng bị lỗi, reset không được. Mình cắm board mới để nạp cũng xảy ra lỗi tương tự. Mình đã thử chọn những board khác nhau rồi nạp, có khi nào đó là nguyên nhân gây brick không nhỉ

    ReplyDelete
    Replies
    1. Nghĩa là board đã từng nạp được, có thể trong code bạn đã dùng đến chân nào đó liên quan đến phần giao tiếp nạp code. Bây giờ thử lại bằng board mới, nạp code blink led thôi, thử nạp đi nạp lại vài lần xem code blink led có nạp ok không.
      Còn đối với board bị brick thử như này coi sao: nhấn đồng thời cái nút upload ở arduino ide và cái nút reset trên board. Hoặc thử nhấn giữ nút reset trên board, sau đó nhấn nút upload trên arduino ide rồi thả nút reset ra liền. Thử các kiểu xem sao.

      Delete
  7. Mình nạp được rồi, cảm ơn bạn!

    ReplyDelete
    Replies
    1. Cảm ơn bạn đã ghé thăm, nhớ xem thêm bài mới nhé https://minhcnguyen.blogspot.com/2021/03/arduino-leonardo-co-chuc-nang-usb-host.html

      Delete
  8. Tôi cũng gặp trường hợp này với arduino pro mini. Chả là mua promini cho mạch nó gọn, ai dè lại bị lỗi vậy, còn dùng với arduino nano thì load bình thường, trơn tru.

    ReplyDelete
    Replies
    1. Cách giải quyết cho promini cũng giống như trên nano luôn bạn

      Delete

Post a Comment

Popular posts from this blog

Dùng mạch nạp USBasp để nạp code cho Arduino

Arduino có thể dễ dàng nạp code và chạy chương trình chỉ với thao tác đơn giản cắm board mạch vào máy tính chọn cổng COM và nhấn nút Upload. Để làm được như vậy, bên trong chip vi xử lý được nạp sẵn một đoạn mã lệnh gọi là boot loader. Boot loader luôn luôn được chạy lên đầu tiên, sau đó mới chuyển quyền điều khiển lại cho phần mã của người dùng nạp vào.   Như vậy để các Chip Arduino có thể làm việc được với Arduino IDE thông qua giao tiếp USB-COM thì trong vi điều khiển phải được nạp sẵn boot loader. Các board mạch Arduino bán sẵn trên thị trường như Arduino Uno, Arduino Nano, Arduino Mega 2560,... đều được nạp sẵn boot loader. Như vậy ưu điểm của boot loader là để người dùng dễ dàng tiếp cận, thử nghiệm, và làm ra được sản phẩm nhanh chóng, dễ dàng. Nhưng nhược điểm là boot loader luôn luôn cần một khoảng thời gian từ 1.6s đến 2s để khởi động. Nếu bạn không muốn mất 1.6 - 2s đầu tiên mà muốn chương trình chạy gần như ngay lập tức khi cấp nguồn hoặc reset thì dùng mạch nạp USBasp để n

STM32F103C8T6 lỗi không nạp được code

Tình trạng Sau khi nạp code lần đầu, STM32 ST-Link Utility sẽ không kết nối được nữa và hiện lên thông báo lỗi: Cannot connect to target! Please select "Connect Under Reset" mode from Target -> Settings menu and try again. If you are trying to connect to low frequency application, please select a lower SWD Frequency mode from Target -> Settings menu. Tình trạng này có thể xảy ra với tất cả các dòng F1 và cách khắc phục cũng tương tự nhau. Khắc phục 1. Trong STM32CubeMX cần phải chọn lại trong SYS > Debug là Serial Wire sau đó generate lại code. 2. Board arm kết nối ST-Link Utility không được, lúc đó hãy nhấn giữ nút Reset trên board rồi nhấn nút Connect trên ST-Link Utility, chờ khoảng 3-5 giây sau đó thả nút Reset. Có thể bạn sẽ phải làm vài lần như vậy mới có được 1 lần kết nối thành công. 3. Sau khi kết nối thành công, nạp code mới có config Debug là Serial Wire ở trên. Khi đó board sẽ kết nối bình thường cho các lần tiếp theo Mạch nạp ST-LINK có thể m