Bootloader égetése ArduinoISP-vel

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
scalesman
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2010. augusztus 31. kedd, 6:00

Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: scalesman »

Sziasztok !

Részt vettem a 60 nap alatt Arduino tanfolyamon, melynek példaprogramjait egy UNO R3 klónon próbáltam ki, mentek is a mintafeladatok rajta szépen.
Ennek az alap mikrovezérlője még Atmega8A, az USB chip pedig CH340T.
Most gondoltam egyet, lecserélem a mikrovezérlőt Atmega328PU tipusra. Az eredeti UNO boardra rátöltöttem az AVRISP programot, majd próbapanelem összeraktam a 328PU-val az alap kapcsolást és összehuzaloztam az UNO boarddal. Programozó: Arduino as ISP. Eszközök: Bootloader beégetése .
Először nem ment, utána olvastam a neten a megoldás az volt, hogy át kellet írnom az avrdude.conf fileban az atmega328p esetében a signature bejegyzést
0x1e 0x95 0x14 re. Így már megtörtént a bootloader beégetése gond nélkül. Ugyanilyen beállítással a blink példaprogramot is beletudtam égetni, működött is a beégetett program is szépen az atmega328pu chipben a próbapanelen. Nosza , kicseréltem a két mikrokontrollert , a 328PU került rá UNO R3 boardra, USB-n rá a PC-re, fut rajta szépen a blink program.
Elindítom az IDE-t.(1.0.5) próbálok rátölteni más programot: "avrdude: stk500_getsync(): not in sync: resp=0x00
Próbáltam már úgy is, hogy visszaírtam a signature bejegyzést: 0x1e 0x95 0x0F-re , de az eredmény ugyanaz. Mi lehet a gond?
Köszönöm a segítséget.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: AVR-Duino / UNO (Arduino-UNO)

Hozzászólás Szerző: Robert »

Ez nem UNO, hanem egy hamisítvány. UNO-n más illesztőchip van, és a processzora is ATMega328-as (lenne).

Amit írsz HEX IC azonosítók, az a ATMega328/ATMega328P közti váltás miatt van.
Ami nálad a hiba: Üres mikrokontrollerre _nem_ programot kell rakni, hanem a bootloadert. Ezt a Tools->Board alatt válaszd ki (A panel Nálad _NEM_ UNO, hanem a diecimila/duemilanove), Tools->Port ahol az ISP-d van fenn, Tools->Programmer: ArduinoISP és végül a Tools->Bootloader beégetése résszel égeted be a bootloadert + állítod biztostékbieket.
Tipp: http://avr.tavir.hu/modules.php?name=Co ... ge&pid=158

Off: A témacímet áírtam, mert ez semmit nem mondott és még át is helyeztem az Arduino alá
Avatar
scalesman
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2010. augusztus 31. kedd, 6:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: scalesman »

Szervusz !

Mint írtam fentebb, a bootloader beégetése az lemegy gond nélkül. Majd utána töltöttem rá egy blink mintaprogramot szintén gond nélkül.
A gond akkor van amikor átrakom az immár bootloaderrel rendelkező chipet(Atmega328PU) az alappanelra az Atmega8 helyett. No akkor már nem tudok rá új programot tölteni , mert jön a hibaüzenet "not in sync: resp=0x0

Egyébként ez a klón, vagy nevezzük hamisítványnak a boards.txt fileban a következő bejegyzéssel rendben működött:

##############################################################
# Custom board "Arduino Optiboot8"
# Arduino uno r3 ATMEGA8A-PU

opti8.name = Arduino Optiboot8

opti8.upload.protocol = Arduino
opti8.upload.maximum_size = 7680
opti8.upload.speed = 115200

opti8.bootloader.low_fuses = 0xBF
opti8.bootloader.high_fuses = 0xcc
opti8.bootloader.path = optiboot
opti8.bootloader.file = optiboot_atmega8.hex
opti8.bootloader.unlock_bits = 0x3F
opti8.bootloader.lock_bits = 0x0F

opti8.build.mcu = atmega8
opti8.build.f_cpu = 16000000L
opti8.build.core = arduino
opti8.build.variant = standard

Esetleg megpróbálok az Atmega328PU chiphez új bejegyzést készíteni vmi ilyesmit:

##############################################################
# Custom board "Arduino Optiboot328"
# Arduino uno r3 ATMEGA328PU

opti328.name = Arduino Optiboot328

opti328.upload.protocol = Arduino
opti328.upload.maximum_size = 32256
opti328.upload.speed = 115200

opti8.bootloader.low_fuses = 0xBF
opti8.bootloader.high_fuses = 0xcc
opti8.bootloader.path = optiboot
opti8.bootloader.file = optiboot_atmega328.hex
opti8.bootloader.unlock_bits = 0x3F
opti8.bootloader.lock_bits = 0x0F

opti8.build.mcu = atmega328p
opti8.build.f_cpu = 16000000L
opti8.build.core = arduino
opti8.build.variant = standard

Mi a véleményed?
Egyébként a fuse bitek különböznek az UNO és az Otiboot( klón) panelnél:
Optiboot : BF CC 3F 0F
UNO: FF DE 3F 0F

Mit jelentenek az eltérések?
Ha más alappanelt választok ki, a bootloader rátöltése előtt, akkor más-más bootloadert fog rátölteni?

Köszönöm válaszod.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: Robert »

Igen, kamu, hamisítvány, kalapkaki. :)

A boards alatt a duemilanove/diecimila-t válaszd ki. A CHxxx NEM kommunikál 115200 bps-l. 57600-l valószínű még megy.
Az UNO 115200 bps sebessége sok, a Diecimila 57600-a működik.

Amikor az UNO bootloader volt fenn, akkor a tools->Board alatt az UNO volt kiválasztva?
Nem kell új bejegyzés. az Arduinoé teljesen jó.
Avatar
scalesman
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2010. augusztus 31. kedd, 6:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: scalesman »

Nos, megoldódott a dolog, ha csak a bootloadert égetem be és utána a próbapanelen nem töltök rá még mintaprogramot is , akkor áthelyezve az alappanelre, mostmár ott is megy a rátöltés. Egyébként mindkét bejegyzéssel tehát az UNO, illetve az Optiboot328 alappanel kiválasztással is megy. Akár kaki akár nem,gond nélkul megy a rátöltés a nagyobb 115200-as sebességgel is.
Köszönöm a segítségedet.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: Robert »

Mintaprogram rátöltés _égetővel_:
1. TÖRLI a flash-t,
2, Program felmegy
3, Fuse beállít.

Részflashtörlés _nincs_!
Avatar
scalesman
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2010. augusztus 31. kedd, 6:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: scalesman »

Köszönöm az infot !
retep
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2014. július 7. hétfő, 19:29

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: retep »

Sziasztok!

Az Arduino ISP-vel kapcsolatban lenne egy kérdésem. Két dolgot remélek, az egyik hogy jól értem-e, a másik pedig, hogy jó helyen teszem fel. Szóval: ez az arduino-isp alkalmas-e arra, hogy magán az arduino panelen az arduino nyelvezetén megírjak egy programot, le teszteljem azon, és ha jó a program, "tetszik" akkor ezt a kódot rá töltsem egy cél hardverre?

Miért kérdezem ezt? Mert az arduinóból a legjobban nekem a nyelvezete tetszik, és jó volna ha egy "pucér" bármilyen más típusú vezérlőt ugyanígy tudnék felprogramozni? Ez egyébként lehetséges? Teszem azt egy arduino-nano-n csinálok egy programot, és azt később szeretném -természetesen tesztelés után- áttölteni egy cél vezérlőbe? A nano vezérlője Atmega328, és mondjuk a cél vezérlő lehet-e: attiny 13,24,45,85,2313 atmega8,16,328 stb

Köszi a válaszokat.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: Robert »

Igen, nem, talán.

Az Arduino nyelv processzorai:
- ATMega8, ATMega168, ATMega328, ATMega328P, ATMega1280, ATMega2560
- Atmel Cortex M0 sorozat egyes típusai
A boards.txt állományt lesd meg, abban van a chip és a kötött órajel is.

A többi barkácsként vagy megy, vagy nem megy (általában nem, ha megy, akkor meg erősen korlátozottak a képességek)


Fejleszteni meg Arduino alatt _szigorúan csak azonos platformon_ (processzoron _és_ órajelen) szabad - ha nem akarsz sok/nagy szívást!


Az AruinoISP meg egy program, ami az Arduino HW-ből egy AVR910/STK500v1 programozót készít.
retep
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2014. július 7. hétfő, 19:29

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: retep »

Köszi a válaszokat

Akkor ha jól értem, az arduinoISP-vel mondjuk a nano avr-studio alatt STK500-knt fog látszani? Ekkkor a panel "megszűnik arduino lenni," és egy közönséges mezei programozó lesz belőle?

Az viszont sajnálatos, hogy ez a nyelvezet nem vagy csak nagyon nehezen protolható tetszőleges AVR vezérlőre. Pedig jó kis RAD-feljesztő környezet lehetett volna AVR-re.Az arduino akkor csak egy rapid-prototipyng környezet lenne?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: csabeszq »

Elég sok AVR-rel megy az Arduino.

Én prototype panelnek használom, gyorsan valami szemetet összedobsz, sőt, újabban ISP programozásra is.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: Robert »

Pontosabban STK500v1-nek, ami nem más, mint a AVR910 nevű (régi) programozó.

Az Arduino alá behackeltek jópár AVR-t, de ezek _nem_ rendszer és függvénykönyvtár-szinten teljesen támogatottak!
Még a Wiring-et nézd meg, abban van: Mega128, Mega1281, Mega2561, Mega644, stb...

Tipp: http://en.wikipedia.org/wiki/List_of_Ar ... le_systems
sn0wb34r
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2014. november 12. szerda, 23:47

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: sn0wb34r »

Helló,
előre bocsátanám, hogy nagyon láma vagyok, de próbálkozni azért szabad (ez nálam hitvallás). Leginkább ide illik az én problémám is. Van egy UNO R3 klónom (tudom, kalap kakit nem ér, de eddig tök jól működött nekem), amivel szeretnék egy friss, boltól hozott ATMega328P-PU vezérlőt olyan állapotra hozni, hogy sketch-eket tudjak rátölteni, és az UNO nélkül futtatni azt egy cél hardware-ben.

Pontról pontra követtem az ezen az oldalon levő leírást http://arduino.cc/en/Tutorial/ArduinoToBreadboard 1. ArduinoISP feltöltve az UNO-ra, 2. ATMega328 on breadboard kiválasztva az alappanelnál, 3. Arduino as ISP kiválasztva a programozónál, majd kezdem a bootloader beégetését, de mindig a következő hibával elszáll a folyamat:

Kód: Egész kijelölése

avrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Ja az fontos lehet, hogy 8MHz belső kristályos verziót próbálom összehozni (sajna csak 100 nF kondik vannak elérhető közelben, ezért a 16MHz kristályt nem tudom rákötni)

Ha esetleg lenne ötlete valakinek mit csinálok rosszul, azt nagyon megköszönném, mert kezdek egyre jobban elkeseredni...
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: csabeszq »

Ez így nem fog menni.

A hibaüzenet mindent elárul, szétszállt az UART kommunikációd.
0x14 0x50-et várt és 0x14 0x51-et kapott.

Miért 8MHz-es belső RC oszcillátorról akarsz Arduino-zni? Az UART alapfeltétele a stabil órajel kristállyal.
Amit javaslok: vegyél egy kvarc kristályt kondenzátorokkal. Ez a legjobb és leggyorsabb megoldás.
sn0wb34r
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2014. november 12. szerda, 23:47

Re: Bootloader égetése ArduinoISP-vel

Hozzászólás Szerző: sn0wb34r »

Köszi, megpróbálom akkor úgy. Kristályom van, csak kondenzátorok nincsenek ilyen kis értékűek csak 100 nF-os. Az gondolom nem jó hozzá. Illetve azt remélem jól tettem, hogy külső energiaforrást használtam az UNO-hoz...
Válasz küldése