(upravil mechanik 15. 3. 2021 23:11)

Téma: programovanie cez ISP na vlastnej doske atmega328 a iné

Chcem si urobiť pre MCU, ako ATmega328 a iné, programovanie rovno na vlastnej doske cez ISP. Zaujímalo by ma aké máte skúsenosti s "implementáciou".

ISP obsahuje MISO, MOSI, SCK, reset, VCC, GND. Tak logicky to VCC ak mám nejake na doske tak pripájať nemusím. Možem tam dať nejaky jumper na možnosť výberu napájania. Ostatné je nutné pripojiť všetko.

Ako je to riešené už na doske arduina že bez ohladu na to či sa cez piny programuje alebo nie tam ide čokolvek zapojiť a nechať to tam aj počas programovania? Relé, LEDky a uplne všetko... Nikdy som nič nemusel odpájať. Neviem či tie piny nechať na vlastnej doske volné alebo ich môžem využiť. Ale može byť len štastie že som to mohol nechať zapojené/ tie piny využité... Je fakt že natvrdo na zem som ich pri programovaní neskúšal pripojiť big_smile

No a čo oscilátor pri programovaní cez ISP? V schémach pri programovaní cez ISP nikdy nie je. Mal by som ho nejako odpojiť? Či je to uplne jedno?

Ďakujem. Ukáž sa kaed big_smile

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

PIny: pokud pin není zkratovaný, tak to prostě tu logickou úroveň dostane "direkt" z programátoru (druhýho arduina) a není co řešit. Ostatně ani tlačítka se nedoporučuje z tohoto důvodu (že nevíš, jestli nějakým hnutím programu se ze vstupu nestane výstup ) zapojovat "natvrdo" ale raděj přes nějaký 100R odpory...
Zkus datasheet https://ww1.microchip.com/downloads/en/ … 02061B.pdf strana 36 ohledně toho, jestli krystal potřebuješ nebo ne. Je jednodušší ho tam dát, a nejlíp 16MHz a nic neřešit, jinak se musí patřičně nastavit tzv "pojistky" protože pokud použiješ některej jinej jak krystal, nebo jinej oscilátor, tak najednou nebude 1s jedna s, a co horší, nebude ti fungovat sériová komunikace, DO... Takže pokud nevíš jestli krystal jo nebo ne, tak to zatím neřeš a dej ho tam dycky. NA ISP programování to z nějakýho důvodu nemá vliv, nikdey jsem neřešil, proč je to tak a ne jinak.  Potom můžeš použít na tvorbu programu  standartní arduino ide a nemusíš na začátek dávat deklarace kmitočtu oscilátoru, navíc ten interní je RC, což není žádná výhra ohledně stability... Jenom pro info kalkulačka "pojistek" http://eleccelerator.com/fusecalc/fusec … atmega328p tj vlastně  HW setup procesoru. Některý, když se nastaví blbě, tak už je s procesorem konec, jedině nějaký vysokonapěťový programování, ale s procesorama za pár korun nemá cenu tohle asi řešit.
Kdysi jsem něco zkoušel s attiny 85 s interním oscilátorem s různým předděličem, ale už si to moc nepamatuju, na to jsou tady jiní machři.

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Oscilátory používam 16MHz. Menšie odpory dávam na výstupné piny vždy. To s tymi časmi a tak ma ani nenapadlo, dobre vedieť. Dík za odpoveď. Tak podrobnú odpoveď som hádam ešte nedostal smile

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

16MHz není dogma, klidně dej 8MHz  beze změny programu ti budou vycházet dvojnásobný časy a poloviční baudrate na sériovým portu . A nebo stačí dát na začátek programu něco takovýho

#ifdef F_CPU  
#undef F_CPU
#define F_CPU 8000000
#endif  

a můžeš ten procesor provozovat s 3V napájením - zase míň rušení, navíc spousta periferií je s 3V logikou. potom můžeš změnit pojistky a nastavit ještě nižší hodinovej kmitočet, nastavují se tam předděliče.  Na 1MHz můžeš jít až tuším pod 2V, ale nemám odzkoušeno.
Je dobrý do programu dát nějaký sleep state, nejenom že ušetříš elektriku smile, ale procesor když nic nedělá, tak tolik neruší.

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

S Arduinem nepracuji, ale třeba se i tak bude pár postřehů hodit...

Programovací ISP konektor stačí pětipinový bez VCC, přesto používám 6 pinů, někdy se hodí mít možnost programovat procesor připojením jediného konektoru bez nutnosti napájení celého přístroje. Také je pak možné tento konektor využít pro připojení různých "option" modulů. U Tiny85 je vhodné vyvést ještě o jeden pin více, pak je možné HV sériové programování, což mimo jiné umožní využití Reset pinu jako klasického I/O pinu.

Interní oscilátor je nepřesný a to jak kus od kusu, tak je také frekvence závislá na teplotě. Pokud jsou potřeba přesné hodiny např. pro UART, tak určitě použít externí krystal. Pokud se teplota příliš nemění, je možné interní oscilátor softwarově zkalibrovat, ale je to nouzovka, má to smysl snad jen u malých procesorů typu Tiny85, kde je každý pin dobrý a "zabít" dva piny krystalem už může být problém.

S Mega328 používám krystal 12 MHz, je to maximum pro napájení 3,3V. Je skutečně potřeba dát pozor na nastavení fusebitů, je to podrobně popsáno v datasheetu, špatné nastavení může způsobovat nepříjemné problémy např. s nestabilitou hodin po resetu. Staré Megy328A,P měly mimo jiné možnost nastavení tzv. full-swing krystalového oscilátoru, t.j. oscilátoru s velkým rozkmitem, byl odolnější proti rušení, ale zároveň více rušení vyzařoval. Od určité šarže P a na novém PB už tato možnost není.

ISP programovací piny určitě připojit přes odpory. Případně cíleně obvody připojit tak, aby nemohly "kecat" do programování a naopak, aby pulzování pinu při programování nemohlo způsobit nějaký problém periferním obvodům.

(upravil hranatybraska 16. 3. 2021 12:19)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Megu328P jsem nahrával přes ISP z Arduina s nahraným ISP loaderem mnohokrát a nikdy nebyl problém.
Pouze jednou jsem udělal chybu v pojistkách a zakázal si nevědomky u tý Megy programování přes ISP. Pak jsem se divil, že mi to po nahrání nelze přehrát další verzí.
Takto zamknutá Mega se dá přeprogramovat pomocí paralelního módu, takže jsem si z arduina ubastlil na nepájivym poli parlalení programátor, přepsal jsem fuses a jelo se dál.

Krystal pro Megu328P používám 4MHz a nestalo se mi, že bych měl nějaké problémy.

Pokud nechceš flashovat ve velkym, ISP loader z Arduina je nejvíc easy varianta. Implicitně je v knihovně Arduina a tak vytvoření programátoru byla 10min práce i s kafem a hotovo. Funguje mi i s AtmelStudiem, vůbec už nastavit ho pro programování vlastně zabralo víc času, než sestavit ten programátorek.

Jinak dnes už jsem línej vymejšlet něco, co už nekdo vymyslel - a tak používám Arduino, vetšinou na netu najdeš někoho, kdo tvůj problém už řešil - ev. si upravíš prográmek k obrazu svému.

Web

(upravil mechanik 16. 3. 2021 14:19)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

kaed, ten sleep state by som chcel len neviem či to zvládnem.

Možno mám najivnú predstavu ale príliš sa rušenia z MCU nebojím. Audio má vlastné trafo a zdroje. Digitál má svoje trafo a MCU má vlastný regulátor oproti zvyšku digitálu. Digitál sa s analogom stretáva len v relé. Nejake veci sú ešte oddelené optočlenmi... K analogu. Rozliate zeme, koaxi, blokovanie napájania, vstupné filtre a nízke impedancie. Ak by bol problem tak dobre vedieť pôjdem dole s napätím a kmitočtom oscilátoru.

Ten interný oscilátor som nikdy ani použiť nechcel. Asi som to zle napísal.

hranatybraska, vlastne ten boot loader sa nahráva tiež cez ISP. Ten tam budem musieť tiež dostať. Ja som ani tak neuvažoval o programovaní ISP cez dosku arduina... Kúpil som si dva ISP programátory.

Teda tipujem že by sa to nejako mohlo hlásiť v SW arduina. Alebo nie? Musím skúsiť.

Ďakujem za odpovede.

(upravil mechanik 4. 4. 2021 21:18)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Tak som si dokreslil dosku či už pre atmega328 alebo atmega1280/2560.

Doteraz som používal k displejom tú čínsku I2C hračku čo je v každom arduino projekte s LCD cez I2C. Počíta s tým aj knihovna v arduino (s tým I2C). Divné bolo že s LCD fungovalo všetko super ale s OLED konkretne týmto   https://www.tme.eu/sk/details/dep16203- … p-16203-w/   mi to občas blblo. Už po nahratí kodu to prehodilo riadky alebo zobrazilo len jeden. Alebo tam nebahli podivné znaky. Vtedy som musel všetko odpojiť od napájania a znovu zapnúť. Inokedy urobiť reset 0-4x kým to nabehlo dobre. Myslel som že keď to pripojím cez 4-bit komunikáciu a použijem k tomu aj inú knihovnu tak to bude ok ale nie je. Teraz to nabehne na každý 10 reštart big_smile Skúšal som aj 8bit a blbne to asi tak ako pri I2C.

Každopadne displej už sa nerobí. Takže som hladal alternatívu a našiel som toto   https://www.tme.eu/sk/details/eaw162-xb … ea-w162-xb   a toto   https://www.tme.eu/sk/details/rec001602 … pp5n00100/   Podporujú 4bit aj 8bit. By ma zaujímalo či budú fungovať správne ako LCD alebo bude tiež blbnúť... Tipujem že nie je iná možnosť to kúpiť a vyskúšať big_smile Ale pri mojej smole pobeží rovnako blbo alebo ešte horšie big_smile

Podla mna je to len nejaka kravina. Možno OLED vyžaduje nejake iné časy, napríklad na reset alebo niečo. Každopadne ja do toho nemám ako zasahovať. Najviac môže urobiť knihovna.

Knihovnu špeciálne pre alfanumerické OLED som nenašiel. Ešte budem hladať.

Našiel som toto: "When you need low power, ultra-high contrast and any-angle readability, you can't beat these great looking character OLEDs. They are pin/shape compatible with 'standard' HD44780 LCDs. The code is slightly different (they're more timing sensitive) so we have our own Arduino library that plays better with the OLEDs than the standard LiquidCrystal library. Best of all, no backlight or contrast control is required, so they're even simpler to get running."   https://www.adafruit.com/product/823   https://github.com/ladyada/Adafruit_CharacterOLED   Idem skúsiť.

Ak Vás niekoho niečo napadne tak prosím napíšte. Inak tak velký displej chcem. LCD sú nezretelné a pomalé. Velký OLED je pre mna ideál napriek vyššej cene.

EDIT: vyriešené, tá druhá knihovna beží super

(upravil rvx73 4. 4. 2021 19:47)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

nedávno jsem narazil na tohle
http://robodoupe.cz/2021/raspberry-pi-pico/
za 4 dolary to nevypadá špatně, mohlo by to nahradit Arduino
používáte to někdo?

... nové téma na to zatím zakládat nehodlám, jenom pro zajímavost, třeba se to někomu hodí ...

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Velice zajímavá věc, ale pokud to nebude "arduino friendly" tj možnost použití knihoven pro periferie a pod, tak tomu velkou budoucnost nedávám. Na druhou stranu, výpočetní výkon stm32 v tom nejlevnějším balení od číňana za 2USD mě trochu ohromuje, atmega sotva stačí generovat SPWM načtením z tabulky hodnot, a tohle dokáže každou další hodnotu sinus vypočítat "on the fly" mezi jednotlivejma pulsama, což při nosné 25kHz jsou 4mikrosekundy!!! Ostatně takhle výkonnej procesor jsem kdysi neměl ani v prvním PC, dnes se s tím výkonem neskonale plýtvá...

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Já jen přidám, že bych VCC na ISP konektor určitě vyvedl. Většina programátorů jako například https://cz.farnell.com/microchip/atatme … tmel%20ice používá VCC jako detekci, že je MCU pod napětím.

Jinak ISP piny použít můžeš, ale bacha. Při programování jsou ty piny ovládané, což může způsobit paseku ve tvé aplikaci (nemáš je pod kontrolou) a můžou ti třeba sepnout motor. Dále je problém když ten pin používáš jako vstup, ale při programování je výstup atp. Já většinou tyto piny nechávám na LEDky nebo tlačítka.

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Díky, nechal som tie piny uplne volné. Atmega 1280 má pinov dosť smile S 328 na drobnosti mi to tiež vyšlo.

Teraz sa trápim kde zohnať SMA konektor pre anténu, do panelu. Ibaže potrebujem odizolovaný. To sa hádam ani nevyrába, katastrofa...

(upravil scoop 6. 4. 2021 11:50)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

taketo nieco ?
https://techfun.sk/produkt/zlaty-sma-ko … ikQAvD_BwE

EDIT: samozrejme izolaciu si sam musis pomoct, urcite kupis plastove kruzky . napaja sa len stred, takze realne izolacia ?

(upravil mechanik 6. 4. 2021 12:50)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

No kúpiť plastové podložky nie je problém ale ak nemajú "rantlik" na vystredenie tak sa ti to pri uvolnení dotkne. Nemôžem spoliehať na matku že to udrží vystredené.

Ten v odkaze čo posielaš mi google našiel ako jedinú čo celkom aj vyzerá ako izolovaná ale z fotky to nepoznám. Či je tam jedna podložka alebo dve a či je tam "rantlik" smile Ja myslím že to je len guma proti vnikaniu vody. To sa na rozdiel od izolovaného konektoru robí.

Potrebujem odizolovať tak ako sú všetky CINCH do panelu alebo aj mnohé BNC. Len tento debilný SMA sa izolovaný nerobí sad

Našiel som toto   https://www.distrelec.biz/en/sma-connec … p/30061837   big_smile Už len plastové šrouby (srandujem).

Chcel som ten debilný konektor na BT audio. Anteny na 2,4GHz majú SMA konektor... Ak ho mám týždeň hladať na internete a potom 2 mesiace čakať než príde z druhej strany zemegule tak sa na to asi radšej vyseriem. Dávať sústružiť tak malé podložky zo silonu sa mi tiež nechce... DIY je proste tažký masochizmus.

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Co toto? https://www.pasternack.com/sma-female-s … 067-p.aspx

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Práve som na to chcel poslať odkaz. Použiť sa to dá len neviem prečo nerobia verziu na kabel. Zbytočný konektor...

Toto je zatial najlepšie čo som našiel   https://grabcad.com/library/isolated-gr … -adapter-1   Je to sice len 3D model ale výborný big_smile

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

A co je srandovního na plastovejch šroubech? běžně používám plastový M3 distančky matka/ šroub, mám i nějakáý plastový matičky a možná i šroubekby se našel. A na 3d tiskárně klidně vytiskneš M3 vnitřní závit, ani jsem tomu nechtěl věřit...

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Mne by stačil obyčajný izolovaný SMA konektor. Som už unavený z vymýšlania rôznych blbostí... Fakt nechápem že to nikto nevyrába.

(upravil scoop 15. 12. 2021 21:25)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

snad ma mechanik nezabije, ale nechcem to pchat do dispre temy...existuje sposob prevedenia programu napisaneho v arduinoIDE s koncovkou *.ino do binarneho suboru ? resp. moznost nahrat to na lubovolnom PC do atmegy bez nutnosti ustrazit si kniznice ?

https://www.instructables.com/How-to-Ge … _page=true

Nasiel som takyto navod, vyzera to primitivne…tym padom by stacil xloader a hex subor

EDIT: funguje to paradne...

(upravil kaed 15. 12. 2021 21:40)

Re: programovanie cez ISP na vlastnej doske atmega328 a iné

Je to jednoduchý. v ide si nastavíš v "soubor"- "vlastnosti" zatržítko na "zobrazit víc informací o výstupu" a pod oknem s prográmkem ti po kompilaci a pokusu nahrát to do procesoru zůstanou informace, něco jako

/home/karel/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude -C/home/karel/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/arduino_build_904626/Blink.ino.hex:i

  kde

/tmp/arduino_build_904626/Blink.ino.hex

je cesta a název souboru .hex, kterej se nahrál do procesoru. Samozřejmě je to HW závislý, musí to být vytvořený pro danej procesor (atmega328, ATTINY85....) no a když si tenhle příkaz uložíš do text. souboru a jenom přepíšeš tu část s cestou a názvem .hex,  tak si potom po vložení do  příkazové řádky nahraješ do procesoru jakejkoliv hex. Ještě by se měly u AVR nastavit pojistky, ale to je trochu jiná kapitola. Jo a upozornění - je to z PC s linuxem, ty budeš mít místo /home/karel C:/programy/ nebo tak něco, ale to jsou drobný nuance... A žádnej Xloader nepotřebuješ, máš v PC AVRDUDE, kterej si tam zatáhlo už arduino ide, ten stačí na všechno.
Ten návod je vlastně složitej. Já v tom /tmp/ mám těch .hex tolik, že se v tom nevyznám smile Pokud se podíváš podrobněj na ten příkazovej řádek, zjistíš, že to není atomová věda,

-patmega328

je copak asi,

-P/dev/ttyUSB0 -b115200

a že by tohle byl port a přenosová rychlost? avrdude.conf je to důležitý, kde jsou konfigurace pro všechny procesory, který umí tvoje arduino ide. Tj když si doinstaluješ attiny core, bude ti to nahrávat i attiny procesory, a vytvářet pro ně .hex
Ale jestli umíš jenom klikat myší, je to marný...