aktualizování firmwaru přes uart
Úvodní stránka › Fórum › Vaše projekty › Arduino › aktualizování firmwaru přes uart
- Toto téma obsahuje celkem 68 odpovědí. Do diskuze (3 diskutující) se naposledy zapojil uživatel michal123 a poslední změna proběhla před 7 roky a 6 měsíci.
-
AutorPříspěvky
-
12.4.2017 v 13:49 #11100michal123Účastník
Děkuji, bohůžel nemohu obrázek otevřít (pravděpodobně starý prohlížeč nebo blokovaná ip)
12.4.2017 v 13:58 #11101Vojtěch VosáhloÚčastníkZkuste to přes odkaz: https://drive.google.com/open?id=0Bxq_OMaWO7CwaGY5M2VzWWxtSzQ
12.4.2017 v 14:00 #11102michal123ÚčastníkDěkuji, tohle funguje. Obrázek je jasný, už se těším až se večer dostanu k druhému arduinu.
14.4.2017 v 18:55 #11126michal123ÚčastníkZkoušel jsem snad všechno a spojení se nepodařilo. Kód se zasekne při čekání na odpověď na řádku 55.
Reset proběhl úspěšně, kody pro zadost o synchronizaci arduino poslalo taky ale odpověď žádná. Zkoušel jsem i jiré rychlosti, prohodit tx/rx jeslti nemám špatně ale už význě nevím co zkusit.Nějaká rada?
14.4.2017 v 19:05 #11127Vojtěch VosáhloÚčastníkJaké arduina používáte a které dělá co? Mají jako sériové převodníky použity ch340 nebo mega16u2?
14.4.2017 v 19:12 #11129michal123Účastníkprevodník FT231 a procesor ATMEGA328P-AU
14.4.2017 v 19:27 #11130Vojtěch VosáhloÚčastníkTak pojďme nejdřív zjistit rychlost UARTu. Jděte do arduino IDE, projděte toudo cestou File->Preferences a zaškrtněte obě možnosti u Show verbose output during…
Pokud máte česky tak Soubor->Vlastnosti Zobrazit více informací výstupu během: [Y] Kompilace | [Y] Programování
Teď nahrajte jakýkoliv kód do toho arduina co bude programované (to co bude updatované). Nahrajte normálně přes kabel třeba program Blink, je to jedno. V konzoli by vám mělo vyjíždět výrazně víc informací. Po nahrátí projeďte konzoli a zkuste najít takovýto blok textu:
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.2.0_x64__mdqgnx93n4wtt\hardware\tools\avr/etc/avrdude.conf" Using Port : COM4 Using Programmer : arduino Overriding Baud Rate : 57600 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail :
Tenhle řádek, Overriding Baud Rate : 57600 nás zajímá nejvíc. Jaká je tam rychlost? Klidně sem hoďte celý výstup konzole ale až od toho
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch
, může se to hodit.
14.4.2017 v 19:38 #11132Vojtěch VosáhloÚčastníkTaké můžete přihodit fotky zapojení ale předpokládám že tam problém nebude.
14.4.2017 v 19:38 #11133michal123ÚčastníkUsing Port : COM2
Using Programmer : arduino
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 usale je divné třea ty rachlost krystalu (je to chyba?)
14.4.2017 v 19:51 #11134michal123Účastníkzapojení jsem kontroloval už mockrát, dokonce měřil jestli není někde špatný kontakt, ale signál de kam jít má.
14.4.2017 v 19:53 #11135Vojtěch VosáhloÚčastníkAsi se pudu pifnout 🙂 je to moje hloupá chyba. Na začátku je baud definován jako int, nahraďte int typem long a mělo by to fungovat. Pro UNO by to tedy mělo vypadat takoto
long baud = 115200;
Krystal je v pořádku.
14.4.2017 v 20:06 #11137michal123Účastníkna to jsem přišel už na začátku a ani mě to nenapadlo, ale to mám upravení již dloho, taky jste napsal při resetu (nepodstatné), že pinMode ( 7 , HIGH ) ; na řádku 49
ale to problém pořád neřeší. napadá mě uz snad jen čpatní doba čekíní ale i to jsem zkoušel
14.4.2017 v 20:41 #11138Vojtěch VosáhloÚčastníkJak tak na to koukám tak možná dobře že jsem tu chybu neopravil. Nechte delay na 100, baud nechte jako long ale řádek 49 zakomentujte. Teď mi nedochází proč ale mě kód funguje jen bez něj…
EDIT: Taky mějte obě arduina napájená z výkonných zdrojů. Mě např. nefunguje napájet jedno arduino z druhého, musí mít obě zvlášť 5V zdroj. Nevím proč, regulátor by měl dodávat víc než dost proudu…
14.4.2017 v 21:29 #11140michal123Účastníkřádek 49 bude souviset s tím, že nastavujeme úroveň stejnosmšrného signále ale apsoň u mě je před nožičkou resetu sériově kondenzátor takže se tím jen (maximálně) prodlouží interval, tud´ž by bylo možné že naše sířka restartovacího pulzu není dostatečně široká pro dokonalý restart.
obě arduina mám na stejném napájení (z usb opravdu 0,5A), a k tomu paraelně zdroj 5V (abych mohl usb odpojit)
pořád to můj problém neřeší, tak doufám, že ráno moudřejší večera. (i když se sem pravdšpodobně dostanu až odpoledne)
14.4.2017 v 22:07 #11141Vojtěch VosáhloÚčastníkTak to můžu popřát jen hodně štěstí. Já testuju na UNU a NANU a vše šlape jak hodinky. Ještě mě napadla jedna věc, když jsem vymýšlel jaká pauza má po resetu nastat, zapojil jsem reset toho programovaného arduina na D13 programátoru. Programátor měl pak nastaveno že hned po spuštění odešle příkazy. Programované arduino bylo tedy resetováno prakticky tou ledkou na pinu 13 a tím jak bliká při běhu bootloaderu. Vše taky fungovalo bez problému a na testování to postačilo, v takových chvílích by bylo hezké mít po ruce osciloskop… Možná by se s tím dalo něco vymyslet. Já se taky zítra pustím do testování 😉
Hezký večer.
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.