Bootloader égetése ArduinoISP-vel

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: rostasc3 » 2015. május 14. csütörtök, 15:26

Így még nem próbáltam. Én olyat csináltam, amikor az uno-ba bootloader néküli 328-ast tettem, és úgy programoztam ftdi bitbang-gal, de az is pár éve volt. A Gammon féle viszont majdnem ez a módszer (ezt most csináltam), mert ott egy pro mininek ugyanezeket a lábait kellett az uno-ra csatlakoztatni, és működött.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Robert » 2015. május 14. csütörtök, 15:36

Diecimilával próbálva működik.

nosztraia
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2016. január 5. kedd, 16:34

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: nosztraia » 2016. január 5. kedd, 17:15

Sziasztok!

Köszönöm ezt a hozzászólást és ezt a topicot. Nekem is megoldódott egy probléma az itt leírtak segítségével, ami talán másnak is hasznos lehet.

A problémám az volt, hogy túlvezéreltem az Arduino UNO r3-asom PWM 3-as PIN-jét és ezen keresztül valószínűleg az ADC konvertert is, mivel az Analóg Input pin-jeinek működésével is gondjaim akadtak. Mivel a soros pinek és más PWM pinek azért még mentek, azt gondoltam, hogyha összeépítek egy breadboard Arduinot, azonos típusú Atmega328p-PU vezérlővel, a rossz Arduinommal még Bootload-olni tudom az újat és csak simán kicserélem a chipet. A művelet látszólag sikerült, "Arduino as ISP" megoldással bootloadert töltöttem az új Chip-re és amikor kész volt ugyanúgy ISP segítségével egy Blink progit is ráküldtem az új Chip-re, ami villogni is kezdett.

Ekkor úgy gondoltam elérkezett az idő a régi, rossz Chipet kicserélni az újra. A művelet után azonban az új Atmega328-PU nem volt hajlandó komminikálni a PC-vel az USB porton, bár a 13-as PIN-en továbbra is boldogan villogtatta a LED-et.8 Upload során viszont "not in sync" hibaüzenetet kaptam. Ellenőriztem COM portot, drivert frissítettem, stb, de amikor a rossz achipet tettem vissza, akkor megint minden rendben volt. Ebből gondoltam, hogy a bootloader égetése során van a hiba.

Az itt leírtak alapján újrakezdtem a bootloader telepítését és ez után az új Chip cseréjét követően az "új" Arduinom megint tudott PC-vel kommunikálni.

Ergo, ha Arduino Unoban megdöglik a mikrovezérlő, az új chipet _csak_ bootloadelni szabad, mintaprogramot rátölteni nem, mert akkor nem fog tudni PC-vel kommunikálni. Valószínű certificate vagy más jogosultsági, aláírási nyűgje van, amit én máshogy nem tudtam orvosolni.

A lap: Arduino UNO rev3.
A régi mikrokontroller: ATmega328p-PU 1430
Az új mikrokontroller: ATmega328p-PU 1510

Köszönöm ezt a topikot és a hozzászólásokat,
Udv Adam

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Robert » 2016. január 5. kedd, 17:42

Pontosítás:

Chiphalál
PWM illetve az ADC nem vezérelhető túl. Legalábbis szoftverből nem. Viszont kaphat ami a halálát okozza:
- külső 5V feletti feszültséget
- statikus tölétést
- rövidzárat
Ezek a kapcsolódó chip belső részt tönkre teszik/tehetik.

BootloaderA chip programozása a flash területre történik. Ez 2 részből áll: Főprogram illetve ha szükséges, akkor a végéből lecsípve kerül fel a bootloader.
Bővebben: http://www.tavir.hu/bascom-bootloader

A chip írásakor az első utasítás ami kimegy (ISP programozáskor) a Chip Erase. Ez a _teljes_ flash területet törli (főprogram és bootloader is).
Ha feltöltjül ISP-n át a főprogramot, akkor ugye bootloadert nem raktunk rá. Hiszen a főprogram _nem_ tartalmaz ilyet!

Ha azt akarjuk, hogy a bootloader _és_ a főprogram is megmaradjon - akkor a bootloadert feltöltjük, majd a szabványos bootloaderes feltöltéssel a főprogram is felmehetz a chipre.
Semmiféle egzotikus Cetificate, jogosultság, aláírási szükségesség nincs a háttérben. Csak egyszerű chipműködés.

nosztraia
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2016. január 5. kedd, 16:34

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: nosztraia » 2016. január 5. kedd, 20:46

Kedves Róbert!

Igen, köszönöm a pontosítást. A Chip halálát az okozta, hogy az Arduino 0-5V kimeneti PWM jeléből 0-10V analóg jelet akartam csinálni analóg digitális átalakító nélkül. Ezt hasonlóképpen oldottam meg, mint egy low-pass filter: az aktív impulzus során feltöltöttem egy kondit is, amely a tervek szerint az impulzusidő hiányzó szakaszait kitöltötte volna nagyjából egyenfesszel. A hibát ott követtem el, hogy nem tettem elég nagy ellenállást a vezérlő irányába, így a kondi egyik kisülésekor elképzelhető, hogy 5V feletti feszültség jutott vissza, nem kívánt irányba a 3~ PIN-re. Az ADC tönkremenetelét nem biztos, hogy ez okozta, de ezt követően a valódi analóg bemeneti jeleket sem tudta a rendszer értelmezni. Ha pl. az Arduino saját 5V-ját átküldtem egy 100kohm-os potin kb. 0, 80, 940, 996 értékeket olvastam vissza AnalogRead(A0) utasítással akárhogy tekergettem a potit. A fentebb írt Chipcserével minden megoldódott, a rendszerem jól működik.

Jól értettem a leveledben, hogyha az "Arduino as ISP" metódussal minden ISP művelettel teljesen töröljük a chip memóriáját? Tehát ha bootloadert töltök rá, majd ezt követően akármilyen programot küldök át, akkor a bootloader _is_ törlődik?
Lehet, hogy naív vagyok, nem mélyedtem még el az ilyen jellegű programozásban korábban, de azt hittem, hogy a bootloader egy külön, dedikált memóriaegységben található, tehát a sima programfeltöltés nem törli akkor sem, hogyha egy másik mikorkontrollerrel küldök át rajta programot, csak ha burn bootloadert indítok.
Üdv,
Ádám

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Robert » 2016. január 5. kedd, 21:43

A bootloader nem külön rész. A Flashmemória része. Valójában a biztosítékbiteknél állítom be, hogy a chip milyen címen kezdje futtatni a programot:
$0000 - normál, a főprogram fut.
A chip vége mínusz 512/1024/2048/4096 byte : ha a bootrst biztosítékbit aktív és a mértet megmondtam.
Azaz virtuálisan van csak bootloader rész.

Az ISP programozás első lépése a teljes flash törlése. A teljes alatt a $0000....$chipvége tartomány értendő.

Benett
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2013. február 22. péntek, 15:20

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Benett » 2016. március 17. csütörtök, 11:23

Sziasztok !
Egy Arduino leonardoval szeretnék egy másik leonardot programozni és bootladerezni.
A programozónak szánt leo-ban gyári bootloader benne. rátöltöm az ArduinoISP-t, dobog a szíve. ICSP csatin összekötöm a cél leo-val, úgy , hogy a programozó leo D10 lába megy a cél leo Reset-jére.
Tápot a cél a programozótól kap, MOSI, MISO ,SCK ICSP-n összekötve.
IDE megnyit 1.6.8. Tools-ba port kiválaszt, board-> leo , programozó -> arduino AS ISP .
Aztán burn bootloader és 10próbálkozás után sem válaszol a programozó hiba. A cél eszköz jó. Egy UNO-ról programozható.
Hogy tovább ? :?: :?: :| :|

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Robert » 2016. március 17. csütörtök, 11:34

A RESET nincs bekötve. Lsd arduionoISP elején.

Benett
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2013. február 22. péntek, 15:20

Re: Bootloader égetése ArduinoISP-vel

HozzászólásSzerző: Benett » 2016. március 17. csütörtök, 12:50

Az programozó Leo-ra USB-n kapcsolódok. A cél leo ICSP-re pedig a D10 van kötve a programozóról az ISP szerint. Így nem jó valami.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég