• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
UNU CH340 - problem z wgraniem bootloadera
#1
Witam,

do swojego w UNO dokupiłem Ethernet Shielda, a gdy wgrywałem przykładowy sketch, wyskoczył mi błąd (już nie pamiętam jaki). Od tamtej pory, podczas próby załadowania dowolnego sketcha, IDE wyrzuca mi błąd :
Kod:
avrdude stk500_getsync() attempt 10 of 10 not in sync resp=0x60

Doczytałem, że to może być kwestia bootloadera, a dokładniej jego uszkodzenie. Płytka normalnie identyfikuje się w systemie jako port COM.

Posiadam programator USBasp v2.0 oraz drugą płytkę NANO, ale przy każdej próbie grania bootloader, dostaję:
Kod:
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x0c
avrdude: verification error; content mismatch
avrdude: verification error; content mismatch

Sprawdziłem samego Shielda na innej płytce i działa bez zarzutu. Pomoże ktoś w uratowaniu płytki??
Do wgrania bootloadera używałem AVRDUDE oraz IDE w najnowszej wersji
 
Odpowiedź
#2
Czasami USBASP działa źle w Arduino IDE - niezgodność wersji AVRDUDE i driverów. Sprawdź czy tego działającego NANO możesz odczytać/zapisać w IDE Arduino, a najlepiej programem AVR LAB++ spróbuj tylko odczytać płytkę. Nie pomyliłeś orientacji wtyczki przy podłączeniu programatora do ISP? Wiele odpowiedzi znajdziesz tu, szkoda pisać drugi raz to samo: http://forum.arduinopolska.pl/watek-ster...y85?page=2 .
 
Odpowiedź
#3
Wygląda mi na to, że zostało przestawione taktowanie uC na zewnętrzny generator.
 
Odpowiedź
#4
kaczakat, jak można poprzez IDE odczytać płytkę?? Przy podłączaniu programatora do UNO, wykorzystałem poniższy rysunek:
[Obrazek: 0c2a8.jpg]

es2, a co to znaczy i jak to teraz naprawić??

Dzisiaj odkryłem coś nowego. Uno zasilane było przez StepDown ustawiony na 5.04V. Osobną linią zasilania, StepDown zasilał moduł przekaźników oraz PIR. StepDowny, zasilane były z 12V zasilacza.
W piątek przyszła nowa płytka UNO, którą wpiąłem w miejsce tej uszkodzonej, podłączyłem do niej shield i wszystkie peryferia, ale okazało się że płytka wstaje, ale peryferia już nie. Po dłuższej analizie, wyszło że peryferia działają tylko przy zasilaniu z 5v i GND z Arduino, ale też nie do końca. Sam PIR i sam Relay działają, ale oba już nie koniecznie.
Gdy wywaliłem Shielda i zapiąłem wszystko do płytki, działa idealnie.. Może przy wgrywaniu sketcha do starej płytki, nastąpił jakiś spadek prądu, który spowodował problem??
 
Odpowiedź
#5
(15-04-2018, 16:34)Mad_Maxs napisał(a): es2, a co to znaczy i jak to teraz naprawić??
To znaczy, że może, bez programatora HV się nie obejdzie (gdy np wyłączone zostało programowanie przez SPI). Można spróbować podać zewnętrzny sygnał zegarowy (to gdy przestawione jest tylko taktowanie)..

(15-04-2018, 16:34)Mad_Maxs napisał(a): Może przy wgrywaniu sketcha do starej płytki, nastąpił jakiś spadek prądu, który spowodował problem??
Spadek napięcia, mógł spowodować niekontrolowane ustawienie bitów konfiguracyjnych.
 
Odpowiedź
#6
Z poziomu AVRLAB, wygląda to następująco:
[Obrazek: PoElFgDU_t.png] [Obrazek: 3uZfsUAw_t.png]

Próba exportu pliku z avr kończy się błędem:
Kod:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ComponentModel.Win32Exception (0x80004005): Nie można odnaleźć określonego pliku
  at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
  at System.Diagnostics.Process.Start()
  at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
  at WindowsFormsApplication1.Form1.button7_Click(Object sender, EventArgs e) in c:\Users\Admin\Documents\Visual Studio 2013\Projects\AVR Lab\Form1.cs:line 2021
  at System.Windows.Forms.Control.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ButtonBase.WndProc(Message& m)
  at System.Windows.Forms.Button.WndProc(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
   CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
AVR Lab
   Assembly Version: 1.0.0.0
   Win32 Version: 1.0.0.0
   CodeBase: file:///C:/Documents%20and%20Settings/Czarek/Pulpit/AVR%20Lab++/AVR%20Lab.exe
----------------------------------------
System.Windows.Forms
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 built by: RTMRel
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 built by: RTMRel
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 built by: RTMRel
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Data.SQLite
   Assembly Version: 1.0.107.0
   Win32 Version: 1.0.107.0
   CodeBase: file:///C:/Documents%20and%20Settings/Czarek/Pulpit/AVR%20Lab++/System.Data.SQLite.DLL
----------------------------------------
System.Data
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Core
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 built by: RTMRel
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Transactions
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.Xml
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 built by: RTMRel
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Configuration
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.EnterpriseServices
   Assembly Version: 4.0.0.0
   Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
   CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
   <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 
Odpowiedź
#7
Podłączasz płytkę np. Nano 328, a jako cel wskazujesz Nano z prockiem 168. Jak programator wybierasz USBASP, wybierasz Upload sketch trzymając Shift (alb z menu szkicu opcje upload używając programatora). AVRDUDE najpierw sprawdza jaki jest procek i jak mu się typ nie zgadza to wypisuje na ekran komunikat na jaki chcesz wgrać a jaki on widzi i nie wgrywa. Wgrywasz do innych arduino programatorem USBASP? Wiesz, nie obraź się, ale to jest trochę nieintuicyjne w Arduino, jak nawet wskażesz programator to on wgrywa przez bootloader, jest właśnie opisany specjalny tryb powyżej do wgrywania przez USBASP. Przeczytałeś tamten wątek? Sprawdziłeś co odczytuje AVR LAB (nie trzeba go instalować)? A jak kombinowałeś wcześniej ze sterownikami USBASP to mogłeś coś namieszać i tam jest rozwiązanie. Poza tym AVRLAB pozwala właśnie na tylko wysłanie komendy sprawdzenia co widzi USBASP. Są różne wersje AVRDUDE i wymagają różnych driverów. Są też różne wsady do USBASP, często te kupowane nawet dzisiaj przychodzą ze starymi sprzed 5-10 lat. Kabel USB odłączasz jak podłączasz USBASP? Wtyk ISP też w Arduino łatwo pomylić, inna jest orientacja w UNO, inna w NANO. Do takiego komunikatu wystarczy niepewna masa.
Jak byś napisał, że masz 10 płytek Arduino, 9 odczytujesz AVRLAB/Arduino/czystym AVRDUDE w trybie USBASP i do/z każdej wgrywasz/odczytujesz HEX to mam pewność, że problem jest z tą 1 płytką, a Ty masz ileś tam płytek i ciągle piszesz o tej jednej i coś tam, że na innych coś tam działa/nie działa. Jak testujesz czy płytka jest OK, to samą płytkę. Jak coś Ci zabiło płytkę, to ustal najpierw co to było, zanim urośnie Ci sterta na cmentarzyku.
 
Odpowiedź
#8
Do dzisiaj nie wgrywałem nic poprzez programator, zawsze przez usb z IDE.

Przeczytałem ten wątek, który podałeś wcześniej. Zastosowałem się do wskazówek w nim, jednak bez szczególnych rezultatów. Wygląda to na problem driverów do USBasp, ale na jednej z wersji, jak podłącze do kompa i płytki, to AVR LAB++ jest w stanie odczytać zarówno UNO jak i NANO. W poprzednim poście dałem nawet screeny z tego co wyrzucił AVR LAB++ w temacie UNO. Niestety przy próbie wczytania lub odczytania czegoś z płytek, wywala błąd Visual Studio.

W ręce wpadł mi za to MKAvr
Przy jego pomocy, bez problemu mój USBasp, pozwala odczytać rodzaj płytki, zczytać z niej HEXa, oraz wczytać innego. Zgrałem i wgrałem przez programator przygotowany HEX z bootloaderem i blinkiem do NANO i działa.

Niestety próbuję wgrać bootloader do UNO, niby się powiodło, bo jak zczytuję to dostaję dokładnie taki sam plik (rozmiar) jak wgrałem, a jednak bootloader nie działa, a sketch się nie realizuje.

EDIT//
Możliwe że znalazłem problem z Fuse bits. Z tego co wyczytałem, dla 328P powinienem mieć LOW 0xFF, HIGH 0xDE oraz EXTENDED 0x05, a u mnie HIGH jest 0xDF, EXT 0xFF. Mimo, że przy zapisie Flash ustawiam, żeby zmieniło mi Fuse Bits, to i tak zostają takie jak były
 
Odpowiedź
#9
Ważne, że coś gada, to na pewno nie jest przestawienie na zewnętrzny generator. Fuse bity na obu arduino (UNO/NANO) powinny być ustawione tak jak masz podane w pliku c:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt:
Kod:
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0xFD

nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
Sprawdź swoje.
Wpadł w ręce? On w wersji free wgrywa tylko do Atmega8. Ten ma jeszcze inną wersję AVRDUDE.  Poza tym ten program akurat bez pytania łączy się z netem, niby "sprawdza czy jest nowa wersja", także...  Na bank masz coś nie tak z driverami, do tego stary wsad programatora (to zostaw jako wisienkę na koniec). No i z tym AVR LAB też coś nie tak, ja mam wersję 2.4.
W każdym bądź razie rozwiąż kwestię sterowników, w tamtym temacie jest do tego program. Jak arduino nie da rady to zmień fusy AVRLAB (ściągnij 2.4). Takie kłopoty mogą świadczyć o problemach z zasilaniem, dołóż kondensator przy VCC/GND do pinów płytki. A jak już widzisz plik z boards.txt to obok jest katalog bootloaders/atmega/. Jak już masz ustawione fuse to wystarczy AVRLAB (lub tym drugim) wgrać pliczek ATmegaBOOT_168_atmega328.hex i powinno działać jak wcześniej.
 
Odpowiedź
#10
No to Fuse Bity się nie zgadzają :/
AVR LAB nigdzie nie znalazłem nowszej wersji, ale może słabo szukałem Smile
Kwestia sterowników to trudniejsza kwestia. Instalowałem tym programikiem, który podrzuciłeś w tym drugim temacie, ale to również nie pomogło.

Rozwiniesz kwestię tego kondensatora przy VCC i GND??

Postaram się znaleźć nowszą wersję tego AVRLAB, to może uda mi się ustawić Fusy jak należy
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości