[ DSL @ 09.11.2017. 21:38 ] @
Kao sto je Mikikg u raščišćenoj (pola izbrisano) temi sugerisao, narucena je i stigla razvojna ploča sa STM32F103C8T6. Uz nju je dosao i displej 16x2 sa sve konverzijom serial/paralel. ST link V2 programator i prelaz rs232-TTL su takodje tu.
Ne znam koliko je jos neko raspoložen da se ubaci u priču ali, vidim da se ovaj CPU nalazi u mnogo uredjaja koji mi dolaze na servisiranje i vidim sta taj i slicni mu cpu migu da urade i da se vredi potruditi oko njega i nauciti nesto. Ja sam odavno ispao iz te priče ali sam raspolozen da pocnem iz početka. Taman da zadovoljim znatizelju i potrebe.
Miki je tada saopstio da je raspolozen da nam drzi mali kurs velikih majstora sto je, i samo kao ponuda, vrlo velikodusno, obzitom da smo svi u stalnom trcanju i obavezama. Ja se raspadam trenutno od ucenja nekih drugih stvari i, ako me sreca posluzi, vrlo brzo ce to biti iza mene. Verovatno su i ostali u sličnim situacijama i samim tim, za mene je Mikijeva ponuda velikodusnija, obzirom da je volonterskog tipa.
Iskreno, nisam se potrudio da na netu nadjem info vise, ocekujuci da cu najbitnije informacije za pocetak dobiti od predavaca a za svako grebanje u sustinu ce trebati zagrejati stolicu i uloziti sopstveni trud. Zato valjda i nema ovih sega mega turbo fakulteta u tehnickim naukama, jer u njima, bez znoja, nema rezultata.
Miki, kada nadjes malo vremena, pozivam te da nam za pocetak sugerises sta od razvojnih alata treba da imamo i ako imas kakve linkove za dload bilo bi korisno. Predlazem da nam sugerises upravo ono sto i sam koristiš radi olaksanog debugginga i medjusobne komunikacije.
[ mikikg @ 10.11.2017. 00:30 ] @
Odlicno sto si startovao temu!

Trenutno sam na putu pa cu pokusati nesto da napisem mada tek sledece nedelje sam ponovo na home-page pa odatle mogu mnogo efektnije da kuckam i postavljsm linkove oko ove teme.

Evo za pocetak nesto iz glave oko korisne literature:
http://www.emcu.it/InsideCORTEX-1221142709.pdf

Naravno, obavezno štivo ce vam biti ST-ov Reference Manual, Programmers Manual i DS za taj MCU ...
[ ademare @ 10.11.2017. 01:04 ] @
@ DSL

Tebi kao majstoru bi mozda vise odgovarala ovakva neka stvarcica :

http://www.elecfreaks.com/stor...rammerclone-version-p-234.html

Na Aliju ima za 12 $ , mozda negde i jos koji $ ispod .
[ ColdKeyboard @ 10.11.2017. 02:27 ] @
Ako tek pocinjes da ucis, topla preporuka ti je da uzmes neku od razvojnih ploca od STM-a, tipa Nucleo ili Discovery.

Ako ti je DigiKey nedostupan iz bilo kojeg razloga, mozes da porucis Nucleo-F103RB razvojnu plocu koja na sebi ima sve sto i ta min-dev ploca sto si kupio
uz dodatak integrisanog programatora/debuggera (STLink V2), Serijsku komunikaciju, sve pinove dostupne na 2.54mm headerim-a i podrzava da na nju
direktno nakacis Arduino shield.

Takodje imas STM Cube Mx (koji ja vidim kao tesko sra*je) ali moze da posluzi pocetnicima da lakse razumiju kod ili nesto na brzinu sklepaju da radi. U principu dobijes GUI koji te vodi kako da konfigurises kontroler i nakon toga mozes da generises kod i vidis kako je STM zamislio da se koristi HAL/CMSIS biblioteke i kako uopste da podignes kontroler da radi.

Iskreno, ako zelis nesto da naucis, pogotovo ako ti mikrokontroleri i hardware nisu primarno zanimanje; jeftini klon sa eBay-a ce ti ustediti koji evro ali ako uzmes razvojnu plocu koja nije $5 nego je $15, neces
morati da razmisljas koji je kvalitet kristala koji je kinez koristio, kako treba da spojis programator i dal' ti ne valja klon ploce, klon programatora ili jeftini kineski kablovi, ne moras da se zezas i gubis tri dana da
pospajas sve na protoboard-u i onda ako "puhne vjetar" da bude jao kuku-lele gdje je ova zica bila. Da ne spominjem sate koje ces potencijalno ustediti tako sto neces morati da razmisljas dal' je problem, u hardware-u,
u firmware-u ili u varijabli izmedju stolice i tastature.

Moje misljenje je da su ti klonovi odlicni ako vec imas neko iskustvo i ne zelis da narucujes svoje ploce nego vec imas neki dizajn koji si verifikovao i znas da radi i onda samo kupis klon
od $5 (toliko bi te skoro izasao i sam cip), polemis na protoboardu i to je to.

U poredjenju sa Nucleo, Discovery ploce su uglavnom vise nabudzene sa vise periferija poput display-a, touch senzora, accelerator/gyro-a, temp senzora itd.
[ DSL @ 10.11.2017. 09:14 ] @
Opa...vidi jos ucesnika :)

Za pocetak, da se predstavim.

Sva moja iskustva sa mcu zavrsila su se sa zavrsetkom studija (četres osme). U to davno doba igrali smo se sa 89C5x Atmelovom serijom, uz koristenje cistog asemblera koji meni ostade u lepom secanju kao izvanredan alat za vladanje svim resursima čipova MCU, koji u to doba bejahu uglavnom 8bitni (valjda je Motorola sa svojim 68HCxyz imala pokoji 16bit primerak). Posle studija, drugi poslovi i sve ostale i neostale okolnosti me odmakose daleko od te price i sve ode u zaborav. Pratim ja to malo fenomenoloski kroz internet ali samo kao pasivni posmatrac. U tom smislu, sebe posmatram otprilike kao i nekog osnovnoskolca kome je to interesantno ali nikako da nadje senseija koji ce mu biti dobar putokaz. Masa termina koji se u toj oblasti pojavljuju meni je terminološki poznata ali suštinski mi je rebus. (Evo, npr, u startu mi nije jasno zasto narucih i ovaj STlink kad board vec ima microusb?). Dakle, mene licno ovde treba posmatrati kao dečaka kome se ovo pojavljuje na časovima opštetehničkog obrazovanja (bar ga je u moje doba bilo), i zna da ga interesuje ali nije siguran sta, kako i gde da počne...
U tom smislu, nije zahvalno koketirati sa više platformi/CPU/programskih jezika/čega već sve ne... jer se u izobilju svih tih resursa čovek zbuni i ohladi... Kao kad upadnete na svadbu na kojoj 100 cura, ne zna se koja je lepsa od koje...na kraju izadjete napolje i ispušite cigaretu, ili se urokate alkoholom i na telefonu diskretno gledate 9gag.com :-)
Cenim sugestije Ademare i ColdKeyboard jer su svakako plod veceg iskustva ali i ne zelim (bar ja, a nadam se da ce jos neki ucenik da se pridruzi casovima) da upadnem u zamku kupovine "najboljeg". To mu, meni kao pocetniku, dodje nesto kao kupovina super ultra giga mega besnog telefona, sta znam, nekog Note-a, koji..ima olovku, ima UV senzore, moze ovo, moze ono...a onda ga prosecan korisnik ili ne zna iskoristiti, ili mu to mreza ne omogućava (džaba je on LTE kad nemas 4G mrezu). Ili, kao kupovina neke lemilice od 200e a onda dete vrhom rasklanfava smotane pinove i unisti vrh za 10 minuta... Dakle, niti je ovo sto ste predlozili nesto skupo, niti bih ja kao pocetnik mogao da u punoj meri iskoristim potencijal brzih/vecih/boljih ploča i MCU. Zadovoljicu se sa ovom plocom koju je Mikijg predlozio. Usotalom, sve i da ima problema, i debugging proces je proces učenja, koji će takodje dati neki rezultat. Moje devojcice, od malena, kada setamo, imaju neku čudnu potrebu da nam istrčavaju pred noge i stalno imamo mogućnost da ih nagazimo i(li) oborimo... i na kraju, morao sam stalno da im u tim situacijama podmećem noge, da ih saplićem, ne bi li ih tim debuggingom naučio nečemu. Kroz proces traženja grešaka se i sam HW upozna malo bolje, nauče pravilno postavljati pitanja i češljati internet /forume) na pravi način.
Kupovina kojekakvog hardvera mi nije problem, niti su ovo neke cifre, bar za stvari koje ste predlozili. Meni je najveci problem vreme i zauzetost svim vrstama poslova, a sa druge strane i zamor materijala i pad koncentracije... u tom smislu, ja niti zurim gde, niti imam neki projekat koji moram da zavrsim.
Ono sto je meni bitno je sledece:
* savladati koncept i funkcionisanje razvojnog okruzenja, koje god ono bilo
* savladati topologiju pisanja koda, sintaksu i sam programski jezik (Cx, Phyton, kineski...). Nisam nikad nista ozbiljno pisao u nekom visem programskom jeziku, pa sam tu potpuno prazan.
* savladati unutrasnju arhitekturu i hardverske koncepte i rešenja samog CPU i njegovih periferija.
* savladati obraćanje periferijama iz koda
* savladati koristenje postojecih i eventualno kreiranje sebi potrebnih novih biblioteka
* savladati praktične primere obraćanja spoljašnjem hardveru, displejima, potovima, tasterima, enkoderima, ovom, onom...
* rešavanje praktičnih problema
* duvanje svećica, cepanje i bacanje knjiga u vazduh i udaranje skolskih drugova.

U ovom smislu, dobro je da se ne daju uopsteni linkovi ka nekim stranicama... ("vidi ovo na www.ti.com, www.st.com"...nego linkovi ka konkretnim dokumentima). Opet napominjem, u nauci nema carskih puteva nego sve treba temeljito i sa paznjom... ne trčim(o) nigde..

Još jednom, hvala svima koji će učestvovati...



[ Burgos @ 10.11.2017. 09:30 ] @
Ja sam takođe počeo da čačkam po ovoj oblasti pre nedelju/dve, čitajući datasheetove i reference manuale, i rekoh sebi (ohrabren Mikijevom slikom ploče od pre neki dan) zašto ne bih pokušao da razvijem nešto bottom-up. Tako da sam pre neki dan skinuo KiCad (na Bogdanovu preporuku sa PBC teme) i pokušavam da izdvojim po koji sat svakog dana (mada neću biti u mogućnosti u narednih par dana), i krenuo da crtam/čitam/brišem/crtam, nadajući se da će na kraju ispasti nešto od svega ovoga - ideja mi je da vršim softversku digitalnu obradu signala, sa STM32F4 i nekim audio codecom.

Ako nekoga interesuje, kicad projekat je ovde: https://github.com/Burgos/distorsion, a nadam se da ću imati vremena da napišem po koji blog post nakon svakog završenog milestona (naročito o glupostima koje su svakom iskusnom u KiCad-u jasne, a meni su bili potrebni dani da provalim).

Za sada ono što mogu da preporučim je Datasheet and Reference manual za dati čip (dosta informacija nalazim i u jednom i u drugom), a kako sam čuo (nije mi još stigla) knjiga "High speed Digital design" je odličan priručnik za ovu oblast.
[ DSL @ 10.11.2017. 10:19 ] @
Nazalost, ova politika preuzimanja tudjih projekata i slepo koristenje bez mogućnosti/pokušavanja da se nešto po potrebi prilagodi mene lično je odvela u slepi sokak. Malo je tu kriv i hronican nedostatak vremena ali, gde ima volje ima i načina. Samo treba malo pomoci, kao i detetu kad prohoda...
Sve dok ne budem mogao samoinicijativno da resim neki svoj problem necu smatrati da sam uspeo. Pri tome ne mislim na Hello world niti Blink probleme...
[ vucko47 @ 10.11.2017. 11:17 ] @
Poceo i ja malo da se zanimam sa svim tim al izgleda treba jos jedan zivot da se sve postigne. Poceo sam sa ovom plocom, Stm32_Smart i STLink v2. Od literature DiscoveringTheSTM i TheDefinitiveGuide.
[ bogdan.kecman @ 10.11.2017. 12:25 ] @
jaaaako kratak info od mene posto sam u mega frci sas vreme (dobih cerku
neki dan, starije kolege sa dvoje dece znaju u kakvom sam sad haosu sa
vremenom, a ovi mladji ce valjda da saznaju :D) elem da ne duzim

dogovorite se sami sa sobom "sta je cilj" .. da li je cilj "ultra mega
turbo upoznavanje sa mcu internals da bi mogao da iscedis vodu iz kamena
i iskoristis isti do poslednjeg poluprovodnika" ili je cilj "koristiti
jeftin 32bitni mcu u diy projektima uz brzi, jednostavni a jeftini
razvojni sistem" ? ili nesto izmedju...

ako je cilj ono prvo, treba se zakopate u mcu internals, asm i kopate
jedno 3-4 meseca i tek onda da izadjete iz rova uzmete jedan mcu
napravite mu neku bazicnu plocku i krenete jedno po jedno po ds-u... ako
je ovo drugo, uzmete bluepill napecete na njega stm32duino bootloader,
nasiljite stm32duino ide (arduino za stm32) i za 10minuta od kad ste
uzeli plocku u ruke ikrenuli sa podesavanjem sistema imate hello world
example koji trci bez problema ...

dakle za oba extrema realno ne treba gubite vreme na forumu, za prvi
mora se zakopate u knjige, za drugi na wikiju od stm32duino imate sve
sto treba da za 10min nasiljite i da mozete da radite .. ne morate znati
nikakve detalje samog cipa, registre, nista, ne brinete o
inicijalizaciji... klik klik i radi.. imate 32bitni nasvirani brzi
arduino :) .. idealno za ljude koji hoce "nesto na brzinu da
isprogramiraju" a nemaju zelju ili vreme da se bave sa mcu internals
(sto je 99% ljudi koji ovuda prodju, realno, ma koliko se oni lozili da
bi voleli da znaju najsitnije detalje nemaju za to vremena i na kraju se
to finisira kao - daj sta das samo da radi brzo i da ne gubim previse
vremena) .. te ako je to finalni cilj (svako za sebe razmisli da li je
ili nije, prespava, pa razmisli opet) ... stm32duino radi do jaja, ja ga
koristim ponekad, za 3min napises kod i on radi provereno ..

za ovo izmedju je vec prica na forumu super, ali ovo izmedju trazi od
svih dosta vremena i dosta citanja i puuuuuno strpljenja :D
[ DSL @ 10.11.2017. 12:38 ] @
Munjo,

Č E S T I TA M!
(i hvala za ovo starije, i sam imam 2 devojčice...tek to da znas sta je, ti si sad na konju. U jednom momentu kupujes pelene za troje...za dvoje dece i zenu...)





Ovo sto si rekao je filozofija za sebe. Uglavnom su svi u stanju da počnu sa dibiduino programiranjem i time će zadovoljiti inicijalne potrebe. Zagrebati sve ovo. Kasnije, kada porastu prohtevi, onda porastu i nokti, pa se dublje i grebe...
Meni treba i jedno i drugo (a najviše vremena :) ) ali poceo bih od ovog for dummies pristupa. Svaki cas koji sam tokom skolovanja propustio me dočekao , kad tad...
[ goran_68 @ 10.11.2017. 12:40 ] @
Čestitamo za ćeru!
A što se teme tiče više puta je pokretana, ima i ovde nešto malo:
http://www.elitesecurity.org/t...F-Inicijalizacija-startup-code
[ bogdan.kecman @ 10.11.2017. 12:47 ] @
hvala hvala mada ja sam tu samo par minuta nesto i to je to, supruga je
ta koja je odradila posao (i prvi i drugi put) a i bogami sad ...

elem, *duino je cool stvar za mnogo toga, posebno za "na brzaka
projekat", ono treba iscitas nesto sa 3 senzora, spucas na neki display
i eventualno posaljes na usb serial .. imas lib za senzore u *duino,
imas lib za lcd... 10 linija koda i bang radi..


http://www.stm32duino.com/

http://wiki.stm32duino.com/index.php?title=Blue_Pill

https://github.com/rogerclarkm...Bootloader-for-BluePill-Boards

https://www.cnx-software.com/2...rd-based-on-stmicro-stm32-mcu/

https://jeelabs.org/article/1649a/

obratite samo paznju, ako ste kupovali bluepill mora zamenite jedan
otpornik da bi USB radio kako treba
[ Burgos @ 10.11.2017. 13:37 ] @
Citat:
bogdan.kecman:
ako je cilj ono prvo, treba se zakopate u mcu internals, asm i kopate
jedno 3-4 meseca i tek onda da izadjete iz rova uzmete jedan mcu
napravite mu neku bazicnu plocku i krenete jedno po jedno po ds-u...


Upravo je ovo kod mene slučaj, samim programiranjem sam se zabavljao sa ARM11* + qemu (pogledati https://github.com/Burgos/micoos), pa sam pomislio da je možda vreme da napravim bazičnu ploču, i da krenem jedno po jedno - prvo I2C, pa SPI, pa I2S, pa dokle (ako igde) stignem.

Citat:
Nazalost, ova politika preuzimanja tudjih projekata i slepo koristenje bez mogućnosti/pokušavanja da se nešto po potrebi prilagodi mene lično je odvela u slepi sokak.


Sa ovim se apsolutno slažem. Ja sam krenuo vrlo prosto - staviš mikroprocesor na ploču, datasheet od njega u ruke i udri. Hiljadu pitanja je došlo dok sam samo stavio dva čipa na ploču i povezao, ali te odgovore (a ni pitanja!) sigurno ne bih pronašao kopirajući druge dizajne. Vrlo sam radoznao da vidim gde će me sve ovo odvesti, a i tebe DSL :-).

Bogdane, čestitam supruzi i tebi, živeli!
[ tuxserbia @ 10.11.2017. 13:41 ] @
Čestitamo, tatice!!!!
[ DSL @ 10.11.2017. 14:05 ] @
Citat:
Burgos:
Vrlo sam radoznao da vidim gde će me sve ovo odvesti, a i tebe DSL :-).


Da ti samo znaš koliki sam ja duduk za ovo... ali imam zube :)
[ mikikg @ 10.11.2017. 14:57 ] @
Za pocetak da napravim mali osvrt na ARM arhitekturu.

To je jedna od verzija Harward RISC arhitekture koju je osmislila ekipa iz UK, firma ARM.
Zanimljivo je da ARM ne pravi mikrokontrolere, oni samo projektuju i dizajniraju ceo taj eko-sistem (HW i SW) dok druge firme poput ST, TI, Microchip, NXP i ostalih proizvode konkretne kontrolete po ARM licenci.
Pojedinacni proizvodjac kupi licencu za neku od varijanti jezgra, to je u sustini klot CPU jezgro gde proizvodjac onda dodaje svoje razvijene periferije poput A/D, PWM, SPI i ostalo. Na taj nacin se diferenciraju prakticno proizvodjaci na trzistu, isto je CPU jezgro ali svako radi na svojim periferijama posebno i to se u sustini nudi na trzistu, ima brzih/sporijih periferija, imaju varijante za Low-Power, sa vise/manje memorije, razlicita kucista itd.
Taj pristup je zanimljiv jer dobijamo isto CPU jezgro sto je do nekle zgodno jer se sve pokrece prakticno kroz isti SW ali nam je ostavljena mogucnost (plus borba proizvodjaca na trzistu) da izaberemo konkretam MCU koji ce moci savrseno da cucne u nekoj nasoj aplikaciji jer je ogromna ponuda razlicitih MCU iz ARM serije.

U ovoj temi ce mo najveci osvrt napraviti na ST-ovu varijantu ARM kontrolera koji su nekako izbili u prvi plan u DIY vodama, kako sa cenom tako i sa tehnickim karakteristikama i mozda najbitnije zbog dobre SW podrske i kvaliteta njihovih MCU. Naravno, ovo povlaci za sobom da iste periferije (SPI, I2C itd) nisu 100% identicne izmedju razlicitih proizvodjaca iako na kraju rade prakticno iste stvari, svaki proizvodjac je to integrisao na svoj nacin, sa svojim nekim tehnickim karakteristikama, svoji nazivi i adrese registra itd sto do nekle komplikuje stvari ali dok se drzimo jedne serije i jednog proizvodjaca tu je manje-vise cista situacija i stvari su lepo i logicno organizovane.

U temi cu se truditi da sto sazetije predjem neke osnovne segmente i module oko cele ove price. Tema je veoma obimna, ne mogu vam prosto i sazeto tek tako preneti "sve", mora da citate, mnoooogo da citate da bi dosli do srzi!

Ideja mi je da se dotaknemo "niskog nivoa" programiranja, to znaci da se treba veoma detaljno poznavati svaka periferija posebno ali po meni i po misljenju ostalih kolega to je jedini ispravan put ucenja. U pocetku ce biti malo teze, kasnije sve lakse i lakse, Arduino dolazi na kraju kao slag na tortu.

Poznavanje C/C++ jezika je neophodno. Nije lose da se podsetite osnovnih stvari oko toga, variable, funkcije, logicke i matematicke operacije i ostalo. Sve sto ste znali o C/C++ za neke druge MCU ce vam koristiti.
[ DSL @ 10.11.2017. 15:32 ] @
Samo nastavi Mikikg. Pitko i sistematicno pises i milina je citati.
Evo, vec ovde sam saznao nesto sto me zbunjivalo godinama...
Ukapirao sam da je ARM napravio....nesto. Ok...ajde, napravili su neki MCU.
Kako sad ST napravio isti ARM...? Pa ovaj... pa onaj...?

Tek sam iz ove price pohvatao konce....
[ veselinovic @ 11.11.2017. 14:20 ] @
Citat:
bogdan.kecman:
dobih cerku
neki dan, starije kolege sa dvoje dece znaju u kakvom sam sad haosu sa
vremenom



Welcome to club dvije cerke.
neka je mala ziva i zdrava.
[ bogdan.kecman @ 11.11.2017. 15:31 ] @
@veselinovic, hvala hvala nego nije dve cure, samo jedna, prvo je pisonja :D

@miki, samo napred! :D

@dsl, za pocetak onaj inside sto je miki linkovao, to treba iscitati pre
nego miki krene dalje da kuca :D
[ DSL @ 11.11.2017. 15:43 ] @
Ocu, ocu, samo da završim sa ovim ispitom u cetvrtak..
[ vucko47 @ 19.11.2017. 13:47 ] @
Hoce li biti kakvog napretka sto se tice teme? Il ce da ode u zaborav?
[ mikikg @ 19.11.2017. 19:37 ] @
Za potrebe ove teme, predlazem da se baziramo za pocetak na Keil MDK-Arm, odlican i proveren alat koji se lako instalira i sigurno radi dobro bez nekih vecih problema sa instalacijom. Free verzija ce vam biti vise nego dovolja, nema potrebe za pro verzijom, kada budeti dosli dotle da potrosite raspolozivu memoriju u free modu onda ce vam neke stvari biti mnogo lakse za razumevanje i mozete da probate i druge platforme/GUI, za pocetak ovo je proverena stvar koja ce sigurno raditi a moze bez problema da se potera i u VM posto postoji samo za Windows.

Potrebno je skinuti instalaciju MDK524A.EXE (~700MB) posle kratke registracije na ovom linku:
https://www.keil.com/demo/eval/arm.htm
Kada se skine, pokrenite instalaciju i pratite uputsvo, klasika da ne slikam to sve.

Za pocetak postavljam slikovito uputstvo za pokretanje novog "klot" projekta i naglasene neke bitne stvari koje treba podesiti.
Ovi screen-shot su za referencu da svako moze da se vrati i proveri da li je dobro podesio trazene parametre posto pocetnicima to zna da bude konfuzno sve.
Trenutno ga prihvatite "as-it-is", sve ce to u jednom trenutku da savladate, za sad je cilj se uspostavi okruzenje koje radi i prevodi najprostiji "prazan" program.
Posle ovoga ide serija clanaka gde cu opisivati stvari koje moraju da se vec pisu u samom programu i vezane su za sam mikrokontroler.
Ima vise screen shot-ova pa ce morati da ide u vise postova ...
[ mikikg @ 19.11.2017. 19:40 ] @
Kreiranje novog Keil MDK-Arm projekta


Naziv projekta


Biranje MCU, tu izabrati STM32F103C8


Podesavanje SW paketa (ovaj korak ide prvo pre biranja MCU, posle prve instalacije se on prvo prikaze)


Podesavanje Run-time okruzenja za projekat, tu biramo minimum CMSIS i Startup samo


Ovo su podesavanja za target platformu, detalji u posebnom postu


[Ovu poruku je menjao mikikg dana 19.11.2017. u 20:54 GMT+1]
[ mikikg @ 19.11.2017. 20:00 ] @
Dodavanje novog/praznog main.c fajla u nas projekat


Biramo C ekstenziju


U main.c mozete prekucati ovo sa slike, stiskanjem dugmeta za prevodjenje se dobija rezultat poput ovog uokvirenog u crveno. To je za pocetak, slede detalji podesavanja za target.


[Ovu poruku je menjao mikikg dana 20.11.2017. u 12:02 GMT+1]
[ mikikg @ 19.11.2017. 20:11 ] @
Slede screen-shot svih 10 tabova u ekranu za podesavanje Target-a, predzadnji tab Debug je bitan (tu se podeava ST-LinkV2) i imaju pod-ekrani za njega, oni su u sledecem postu.



















[ mikikg @ 19.11.2017. 20:16 ] @
Stiskanjem dugmeta Settings u Debug ekranu pored izabranog ST-LinkV2 dolazimo do ovih ekrana







To bi bilo prakticno kompletno podesavanje, izgleda malo komplikovanije ali nije toliko strasno, navicice te se vrlo brzo.
Nakon ovog podesavanja ste slobodni da pisete sta god vam je volja u main.c i usnimite/flesujete MCU kao i da pokrenete dubegger, to je razvojno okruzenje.

Sledeci postovi ce biti konkretno oko STM32, Clock, GPIO i tako dalje ...
[ bojanum @ 19.11.2017. 20:36 ] @
ima li, i ako ima koja je razlika izmedju :
https://www.aliexpress.com/ite...7b-a36a-26846ff6fb93&tpp=1
i
https://www.aliexpress.com/ite...7b-a36a-26846ff6fb93&tpp=1
?
Koliko vidim ovaj skuplji ima opciju debagiranja...ovaj prvi nema...da li sam u pravu ?
Da li je bolje uzeti skuplji, razlika u ceni je mala....
[ vucko47 @ 19.11.2017. 20:41 ] @
Ja koristim ovaj sa prvog linka i radi debaging.

@mikikg

Ne znam sta da kazem za ovo do sada. I lud ce da razume. Hvala na izdvojenom vremenu i ovako opsirnom i slikovitom objasnjavanju.
[ mikikg @ 22.11.2017. 09:56 ] @
Sada prelazimo na konkretne stvari koje se ticu STM32F103 mikrokontrolera.

Svaki MCU ima u sebi razne pod module, to je ceo mali mini-racunar sa procesorom, memorijom, internim data/instruction bus-evima i ostalim perifernim modulima za komunikaciju ka spoljnjem svetu.
Kod STM32F103 ono su interno ovako organizovani:



Ovde sa slike je samo bitno zapaziti ove obelezene detalje jer ce vam trebati kasnije da bi videli koja je periferija na kom bus-u.

STM32F103C8T ima sledece interne module (imena su bitna jer se tako obelezavaju i u programu i u dokumentaciji):

- ADC1 i ADC2 - Prvi u drugi 12bit A/D konverter (dva nezavisna konvertera, broj ulaznih kanala je drugo, ima ih vise)
- CAN - CAN komunikacioni modul
- CRC - Modul za racunanje CRC-32 checksum-a
- I2C1 i I2C2 - Prvi i drugi I2C modul
- RCC - Ovo je glavni modul za konfiguraciju i distribuciju Clock-a, trebca ce nam cesto
- RTC - Modul za Real Time Clock, radi nezavisno, opciono sa Vbat
- SPI1 i SPI2 - Moduli za SPI komunikaciju
- TIM1 do TIM4 - Tajmer moduli sa capture/compare, tu je i PWM
- USART1 do USART3 - Asinhroni seriski moduli za komunikaciju (a.k.a. RS-232)
- GPIOA, GPIOB i GPIOC - I/O moduli gde se konfigurise pojedinacna nozica (ulaz, izlaz ili alternativna funkcija)
- EXTI - Modul za Externe (HW) Interapte
- AFIO - Modul za konfuguraciju i remapiranje alternativnih funkcija pinova (npr, tu se iskljucuje JTAG da bi oslobodili nozice)
- DMA1 i DMA2 - Modul za transfer podataka izmedju memorije i periferija bez zauzeca CPU
- ... ima jos nekih modula

PS: Adrese ovih modula preko kojih im se obracamo su promenljive i zavise od konkretnog modela MCU koji upotrebimo.
Da nebi pamtili adrese, uvedena su imena modula i ta imena su povezana na tacno potrebne adrese preko glavnog include fajla (u nasem slucaju stm32f10x.h) koji definise bukvalno sve do zadnjeg bita u svakom pojedinacnom registru za izabran MCU.
Takodje, svaki modul posebno ima za sebe svoj set registra i flagova (neki moduli po par stotina razlicitih) gde se podesavaju "fino" svi detalji za funkcionisanje tog modula.
Imena bitova/flagova po modulu su isto definisana i njih koristimo tokom pisanja programa.

Dalje, kompletna ova interna logika se pokrece u "ritmu" osnovnog Clock-a koji je kod STM32 malkice slozeniji (opet nista strasno) i interno je organizovan ovako:



Dakle, 8MHz kristal se pokrece preko HSE (High Speed External Oscilator), zatim se pomocu PLL frekvencija mnozi 9 puta i dize na 72MHz i to je baza za SYSCLK, sa tom brzinom radi CPU jezgro.
Periferni moduli rade sa razlicitim brzinama, neki rade sa istim clock od 72MHz dok neki rade na pola od toga tj 36MHz, uslovljeno nekom internom logikom za sinhronizaciju.
Naravno postoje i druge varijante da se sve ovo konfigurise, posebno ako hocemo da koristimo interni oscilator i izbegnemo kristal ili da postavimo neke nestandardne brzine, tu je i RTC oscilator itd.

Na srecu, sve ovo je vecim delom Keil konfigurisao umesto nas kroz svoj Startup fajl i u trenutku kada smo dosli do pocetka naseg programa u main(), Clock je vec podesen i postavljen na optimalne vrednosti.
Startup je takodje inicializovao tabelu interapta (NVIC table), podesio potrebne parametre za rad sa Flash memorijom i rezervisao deo RAM prostora za radni STACK C/C++ okruzenja.
[ mikikg @ 22.11.2017. 12:17 ] @
Mikrokontroler nakon ukljucivanja ili reseta kada prodje Startup proceduru je spreman da prima nase komande iz programa.
Naravno, prvo moramo da znamo sta hocemo da napravimo ali hajde za pocetak da napravimo klasican Blinky-LED primer i da predjemo detalje sta je tehnicki potrebno sve uraditi da bi to radilo trazenu funkciju.

Kod STM32 nakon reseta su osim CPU, FLASH i RAM sve ostale periferije iskljucene i to tako sto im je iskljucen dovod Clock-a preko RCC (Reset and Clock Controll) modula.
Da bi ukljucili neku periferiju moramo da se obratimo RCC modulu za odredjen bus na kojem nam je trazena periferija, konkretno APB2.
Konsultujuci (obaveznu) dokumentaciju i posto nam za pocetak treba GPIOC da bi pokrenuli LED (PC13 na Blue Pill, LED spojena na +Vcc), trebamo da se obratimo RCC->APB2ENR i setujemo 4. bit koji se zove IOPCEN.



Konkretno parce coda koje to radi izgleda ovako gde je bitno napisati ispravnu sintaksu koja je u relaciji sa dokumentacijom.

Code:

RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;


U prevodu, |= operacija znaci da se prvo iscita ceo sadrzaj tog registra koji je inace sirine/velicine 32bit (bitno uraditi da bi se zadrzala ostala podesavanja posto jedan taj 32bit regisar cuva sva ta podesavanja kao sa prilozene slike) i zatim da se setuje (setovanje=1, resetovanje=0) IOPCEN bit koji nam konkretno treba i da se ta nova sad 32bit vrednost upise nazad u APB2ENR.
To se zove "procitaj-modifikuj-upisi" operacija koja nam je sad konkretno ukljucila dovod Clock signala za GPIOC periferiju i periferijaja je spremna da primi neku sledecu komandu.
[ mikikg @ 22.11.2017. 13:14 ] @
Nakon sto se ukljuci zeljeni GPIO modul dovodom Clock signala, njegova default defincija je da svi pinovi na tom portu budu tipa INPUT (sa razlogom projektovano tako) sto nam za nas primer Blinky-LED ne odgovara jer nam treba OUTPUT kako bi pokrenuli prikljucenu LED na PC13.

Posto trebamo sad izmeniti konfiguraciju GPIOC porta, opet konsultujuci dokumentaciju dolazimo do potrebnih informacija i to tako sto moramo izmeniti vrednosti nad 4 konfiguraciona flaga i totako da budu CNF1=0, CNF0=0, MODE1=1 i MODE0=1 (General Purpose Push-pull 50MHz).



Zbog neophodne organizacije registara u kontroleru, neke stvari se "protezu" na vise posebnih registra i tu dolazimo do prvog takvog primera gde su 16 fizickih nozica na nekom portu (0 do 15) podeljene u dve grupe registra, prvi/nizi configuracioni registar CRL koji se odnosi na nozice pod brojevima 0 do 7 i CRH koji se odnosi na nozice 8 do 15, ovo pravilo vazi za sve portove.



Konkretno parce potrebnog coda-a izgleda ovako (dodatno ovde vidite i kako se resetuje neki bit):

Code:

GPIOC->CRH &= ~GPIO_CRH_CNF13_0; //ocisti bit CNF13_0
GPIOC->CRH &= ~GPIO_CRH_CNF13_1; //ocisti bit CNF13_1
GPIOC->CRH |=  GPIO_CRH_MODE13_0; //setuj bit MODE13_0
GPIOC->CRH |=  GPIO_CRH_MODE13_1; //setuj bit MODE13_1


[Ovu poruku je menjao mikikg dana 22.11.2017. u 14:25 GMT+1]
[ mikikg @ 22.11.2017. 13:52 ] @
I napokon jedan od lepsih delova price bar sto se SMT32 tice, on ima sjajnu opciju sa kojom mozemo da setujemo pojedinacan bit u nekom registru (za probrane registre, uglavnom za GPIO) bez predhodnog citanja sadrzaja tog registra koji je u pozadini 32bita i bez narusavanja sadrzaja ostalih bitova.
To se radi preko specificnih BSSR registra (Port bit set/reset register) gde se obracamo "atomski" izlaznom pinu i postavljamo definisanu vrednost, tj mozemo da ga setujemo ili resetujemo (1 ili 0).

Konkretna komanda koja upisuje na zeljeni Port C i nozicu br. 13 (PC13) stanje logicke nule (podsetnik, LED je vezana izmedju PC13 i Vcc) kako bi upalili LED je ova:

Code:

GPIOC->BSSR = GPIO_BSSR_BR13; //postavi logicku nulu na PC13


Ili za obrnuto stanje tj za logicku jedinicu (razlika u jednom slovu):

Code:

GPIOC->BSSR = GPIO_BSSR_BS13; //postavi logicku jedinicu na PC13



I to vam je odprilike sve sto je potrebno uraditi da bi pokrenuli nasu LED ;)
Sad mozemo da se igramo da stavljamo u petlju, da stavljamo delay, da pravimo ovo-ono ...
Poenta je da sam vam pokazao kako da koristite dokumentaciju i da je spovedete u C code i uspust objasnio osnovne elemente koje treba proci kroz jednam banalan program.
Sve ostale periferije rade po slicnom principu samo sto mora da se cita dokumentacija i prati sta je tamo i kako napisano ...


[ mikikg @ 22.11.2017. 21:16 ] @
Konkretan progam za Blinky-LED primer upotrebom gore spomenutih naredbi uz mali dodatak cistog C code-a (while(1) za beskonacnu petlju) i sa dodatim komentarima:

Code:

#include "stm32f10x.h"

int main(void) {
    //pocetak programa...
    
    //Ukljuci Clock za GPIOC
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //GPIOC
    
    //konfiguracija za PC13
    //po default svi pinovi su Input
    //ima dva registra CRL za pinove 0-7 i CRH za pinove 8-15
    //definisi pin kao general purpose Output push-pull, 50MHz
    GPIOC->CRH &= ~GPIO_CRH_CNF13_0; //ocisti bit CNF13_0
    GPIOC->CRH &= ~GPIO_CRH_CNF13_1; //ocisti bit CNF13_1
    GPIOC->CRH |=  GPIO_CRH_MODE13_0; //setuj bit MODE13_0
    GPIOC->CRH |=  GPIO_CRH_MODE13_1; //setuj bit MODE13_1
    
    //bezkonacna petlja
    while (1) {
        GPIOC->BSRR=GPIO_BSRR_BS13; //Set=1=uagasi LED na PC13
        GPIOC->BSRR=GPIO_BSRR_BR13; //Reset=0=upali LED na PC13
    }
    
}



Program ce naizmenicno paliti i gasiti LED i to veoma velikom brzinom (reda nekoliko MHz) tako da ce vam se ciniti kao da je polu-upaljena LED i jedino pomocu osciloskopa mozete da vidite prave signale, tj neke pravougaone oblike koji se ponavljaju periodicno.

Da bi ipak mogli da vidimo kako nasa led blinka, neophodno je u celu pricu umesati pauze koje ce da dovedu do toga da neko vreme LED bude upaljena pa isto toliko da bude ugasena pa sve to opet u krug.
Postavljam parce code-a za nadogradnju koji ce napraviti zeljeni efekat i to bez koriscenja specificnih delay funkcija jer mi je cilj da vam docaram kako to stvarno u pozadini MCU radi.

Code:

        while (1){
            for (int x = 0; x < 300000; x++) {GPIOC->BSRR=GPIO_BSRR_BS13;}
            for (int x = 0; x < 300000; x++) {GPIOC->BSRR=GPIO_BSRR_BR13;}
        }


MCU ce raditi jedno-te-isto i to tako sto ce prvo 300.000 puta postavljati logicku 1 na PC13 pa onda isto 300.000 puta postavljati logicku 0 na PC13 i to ce imati efekat blinkanja sa periodom oko 1 sekunde.
Cilj je da vidite sta je sve uradio procesor za to vreme od 1 sekunde!



[Ovu poruku je menjao mikikg dana 23.11.2017. u 02:42 GMT+1]
[ mikikg @ 24.11.2017. 10:32 ] @
Drustvo, da li vam je jasno ovo do sad?
Da li je neko uspeo da pokrene Blinki-LED primer?
Da li imate neka pitana u vezi dosadasnjeg pisanja?
[ ademare @ 24.11.2017. 13:21 ] @
Ja imam jedno pitanje Trenutno imam samo ST8 , znaci onaj osmobitas . Dobro nabavicu i 32 bit , nije skupo , ali se nisam previse upustao u materiju , jer ne znam koliko je ovo sa teme primenjivo na ST8 ?

Znaci to bi bilo pitanje , da li nesto od ovoga vazi i za ST8 ili da cekam ST32 ?
[ mikikg @ 24.11.2017. 17:01 ] @
Keil na zalost nema podrsku za STM8, ima gomila drugih ali uglavnom za ARM 32bit jezgra i jos neke platforme, tako da uputstvo "nema gde" da primenis, sacekaj ipak STM32 ;)


[ mnn @ 24.11.2017. 17:07 ] @
Ja imam predlog da za pitanja i odgovore otvorimo novu temu, kako bi ova za "edukaciju" bila preglednija.
[ tomam @ 24.11.2017. 17:48 ] @
Bilo bi dobro usvojiti predlog mnn-a.
Kako rece vucko47 "I lud bi razumeo " :) , ali uvek moze malo bolje :( bilo bi dobro da za apsolutne pocetnike okacis i ceo projekt == open projekt i sva podesavanja su tu

HVALA na trudu
[ mikikg @ 24.11.2017. 17:53 ] @
@mnm
Nema tu jos mnogo da se prica sa moje strane, ovo vam je kraj-pocetka, ovo je bio jedan primer i ako se isprati i zablinkaka vam LED na kraju, moj deo price je gotov :)
Ima toliko jos divnih perifernih modula koji rade razne stvari i svi su organizovani po slicnom principu, a kako su konkretno organozovani i sta rade to pise u dokumentaciji, ne mogu to da citam umesto vas, samo sam vam pokazao nacin da ukratko pokrene projekat kroz upotrebu jedne periferije (GPIO) i nesto sitnog C coda-a. Ne mogu ni C/C++ da vas "ucim" ovako po forumu, to su stvari koje su prica za sebe i uce se godinama.

Pokrenite Blinky-LED prvo pa onda pokusajte da pokrene bilo koju drugu periferiju ili osmislite sami za sebe neki projekat pa lagano jedno-po-jedno, ako ima problema iznetite ovde pa da prodiskutujemo.

Na primer prvi sledeci koistan modul koji bi valjalo da se pokrene bi bio USART, ali to je toliko slozen modul da ne mogu da vam prepiracam sta on sve radi, sa druge strane da vam postavim 5 linija CODE-a koji konfigurisu tu periferiju je cool ali nema sanse da se razume sta je tu napisano tek tako :)

Ili tajmer modul, za PWM, on je jos slozeniji od USART modula a moze da se konfigurise u 3 linije code-a :)

I tako ima jos kolko bese modula ... :)
[ mikikg @ 24.11.2017. 18:13 ] @
Znam da ce mozda da bude jedno od sledecih pitanja npr "Kako da pokrenem LCD 2x16 karaktera", sta da vam odgovorim? :)
Imate "nozice" te-te-i-te, "nozice" se kontrolisu preko GPIO (objasnio vec) i sve ostalo je suva LOGIKA, displej se incializuje tako-tako-i-tako (ovo je prepricana tema zilion puta u 20+ godina unazad, ima toooooona dokumentacije i primera), sve to vam je organizvano kroz nekoliko funkcija postavi-kurzor, upis-karakter, itd itd.
Mora da se sedne malo i zagreje stolica i istrazi sve jedno po jedno sto vas interesuje ...
Nisam rekao da ce da bude lako, ovo je hard-core :D
[ mikikg @ 24.11.2017. 19:14 ] @
Citat:
tomam:
Kako rece vucko47 "I lud bi razumeo " :) , ali uvek moze malo bolje :( bilo bi dobro da za apsolutne pocetnike okacis i ceo projekt == open projekt i sva podesavanja su tu
HVALA na trudu


Ne ne, bas suprotno, zelim da vas nateram da stvarno morate da prodjete ove korake koje sam opisao, pokusavajte po uputstvu sve dok ne zablinka LED :)
Kad vam LED zablinka, onda ce da budete srecni i zahvalni sto vam nisam postavio ceo "gotov" projekat jer ste tako onda savladali makar za pocetak taj korak a niste ga uzeli zdravo-za-gotovo.
[ tomam @ 25.11.2017. 16:14 ] @
:) Slazem se mikikg sa puno toga sto kazes , ali

Ja vidim ovu temu kao "prvi koraci za pocetnike" , primer neki klinac je kupio plocicu nezna da li radi / neradi ispravna / neispravna
instalirao softver i sve je kao ok ali jos uvek nezna da li je sve dobro i kako treba , tek pocinje da uci celu ovu pricu. Ako nesto ne radi on nezna odakle sta da pocne , da li je do njegovog neznanja compajlera hatdvera ........ A ako mu das primer koji radi , on za sledeci put vec ima puno elemenata sa kojima moze da resi problem. Trivijalno ali primer iz Arduino okruzenja , ne radi desni taster misa :( Ctrl v je resenje ali koliko pocetnika zna precice sa tastature ? ko zna probace ko nezna pita , ne treba mu savet uzmi upustvo za WIN :)
[ mikikg @ 25.11.2017. 18:32 ] @
Celo uputstvo sam sa razlogom tako osmislio, uslikao i opisao.
Tu ima pregrst gusto pakovanih informacija i kompleno su zaokruzile taj jedan segment u ovom pocetnom koraku price oko programiranja MCU.
Dovoljno je gledati u slike postavljene ovde na forumu i u sliku vaseg monitora i da se u 5 minuta rascisti sta to nije lepo podeseno.
Takodje MDK-Arm je izabran sto on radi sa 99.99% uspeha iz prvog puta samo instal, klik-klik-klik sta treba (USLIKAO sve) tako da sam smanjio potencialnu gresku na minimum opet oko tih stvari koje bi eventualno mogle da naprave probleme.

Recimo nisam spomenuo kako treba prikljuciti ST-LinkV2 na Blue Pill, ali sam zato uslikao ekran gde se vidi da je taj programator aktiviran i ispisan seriski broj mog MCU koji je zakacen.
Ako kod vas taj ekran "ne lici" kao sa prilozene slike, sta mislite gde jedino moze da bude problem? :)
Ipak smo u forumu mikrokontroleri koji je inace podforum elektronike i neko minimalno znanje elektronike se ocekuje, ima 4 zicica koje treba ispravno prikljuciti, za toliko ce se neko snaci.

Ako ipak postoje neki problemi zelim da znam koje to probleme prosecan korisnik moze da ima a ticu se ove price.
Neka svako ko ima problem i ne moze da prodje ovo uputstvo iznese sta je sporno pa da probamo da resimo.
[ mikikg @ 25.11.2017. 18:59 ] @
Kad sam pocinjao da se igram sa MCU tamo jos nekih 90' godina proslog veka, nije postojao Internet (postojali BBS-ovi, zvao par puta USA preko telefona, posle racuna za telefon otac mi je rekao da to vise ne radim :) i nije imao ko da mi ovako sazeto kaze nesto, pokreni to-to-to nego je moj Blinky LED primer bila muka od par meseci dok nisam to sve samo podesio da proradi kako treba.
Od dokumentacije sam imao samo stampano izdanje DS-a za PIC16C84, stotine stranica sitno kucanog teksta na tankom papiru ... sami smo pravili programatore ... pa sam se izborio :)
Sad u 21. veku je to sve drasticno lakse i makar sam nekome ustedeo vreme da ne luta previse, treba se samo skoncetrisati na primer i sve ce posle toga vec biti lakse ...
[ bogdan.kecman @ 25.11.2017. 19:27 ] @
@tomam, google 10min i nadje blink example koji skine i potera .. i ne
nauci nista

@mikikg, extra :D
[ mikikg @ 25.11.2017. 21:16 ] @
Citat:
bogdan.kecman:
@mikikg, extra :D


:D

https://www.youtube.com/watch?v=GbnYd_EBb9E

https://www.youtube.com/watch?v=cdaljLAul_Q

[Ovu poruku je menjao mikikg dana 25.11.2017. u 22:46 GMT+1]
[ tomam @ 25.11.2017. 22:09 ] @
Nije mi bila ideja kritika , zao mi je ako ste to tako shvatili , ja se izvinjavam.

Ako sam pre vise od 40 godina mogao / znao da pokrenem neki cetvorobitni Intel programirajuci bitove svicevima i OTP Rom sa olovka kompajlerom......

Ideja je bila samo eventualno , nekom ko pocinje olaksati prvi korak . A mislim i da sam to obrazlozio zasto.

bogdan.kecman onaj ko to zna da uradi i ne trebaju mu ovakvi tutorijali :) , takvi dolaze sa pitanjem ne radi mi to i to uradio sam ovo , ovo je tutorijal za one koji samo kazu ne radi :) a hteli bi nesto da nauce.

Ovo je samo moje misljenje i nimalo ne umanjuje mikikg trud , jos jednom BRAVO milikg
[ bogdan.kecman @ 25.11.2017. 22:13 ] @
@tomam nisam ja mislio da nesto kritikujes, ja sam samo stavio svoje
misljenje ... do sada kome god sam dao "gotov projekat da proba" nikad
nije otisao dalje.. dal ce ovaj mikijev princip da uspe ili ne - nemam
pojma, ali taj sa "evo ovo radi" provereno ne funkcionise

sto se tice "ko to zna da uradi i ne trebaju mu ovakvi tutorijali", ne
slazem se, ko ne ume da ode na google i trazi "blinky example for
stm32f103" taj nema sta da trazi u prici sa mikrokontrolerima uopste...
ako citas moje postove ja imam vrlo tvrd stav da se bez znanja odlicnog
engleskog, poznavanje koristenja racunara i poznavanja upotrebe
gugla/binga/duck-a ili nekog petog pretazivaca nema sta traziti sa
mikrokontrolerima.. to je azbuka
[ mikikg @ 26.11.2017. 10:40 ] @
Evo samo jedan zanimljiv primer odlicnog code-a ali koji ne mozete da upotrebite u ovoj konfuguraciji nikako sa copy/paste ili install-a kao neka biblioteka, mora da se prekuca funkcija po funkcija (nije 1:1 nego recimo 1:1.005 :) i da se kopa po oficialnoj dokumentaciji za taj neki RA8875 TFT/LCD kontroler ... ali posle toga se prave osciloskopi koje sam vam pokazivao cisto kao primer u nekim predhodnim temama jer dolaze na taj code jos recimo 5-10 linija coda koje su vezane za A/D konverter i to je ta cela nauka :)
https://github.com/adafruit/Ad...lob/master/Adafruit_RA8875.cpp

Taj code koji sam prekucao za STM32 sam posle upotrebio skoro bez izmene za totalno drugu platformu kontrolera i prevodioca i okruzenja, XMOS sa 16 komada 32 bitnih jezgra, proradio mi prakticno iz prve sav code za taj TFT/LCD, stim sto sam se posle "manijacio" pa poterao preko paralelnog porta na skoro 100Mbit/s transferom podataka ka ekranu ... :D

Poenta, nisam prekucavao to sto ne moze tehnicki da se uradi copy/paste, to je smesno, radio sam zato sto sam svakako morao da prodjem sve funkcije koje se ticu te neke nove periferije koju sam prikljucio (a to mi je jedno 50ta "nova periferija") i prakticno sam dosao do zakljucka da je najbolje "pomiriti se" sa tim da se mora proci i sav code i sav DS i to redom, jedno po jedno i to "znanje" je vasa biblioteka za tu periferiju i vi ste resili to jednom prakticno zauvek sto se tice MCU i PC ili bilo cega vec gde koristite to parce HW-a ...



[Ovu poruku je menjao mikikg dana 27.11.2017. u 11:40 GMT+1]
[ m51 @ 29.11.2017. 10:46 ] @
Zdravo,

Zahvalan sam Mikikg na detaljnom opisu pokretanja razvojnog okruženja Keil MDK-Arm, kao i pokretaču teme.
Kod mene ovo funkcioniše bez problema osim u delu korišćenja ST LINK V2 u debugging modu. Tada Keil prijavi:

Load "E:\\Projekti\\ARM\\KEIL ARM Probe\\Objects\\ARM STM32 blink.axf"
Cannot access Memory
Error while accessing a target resource. Resource perhaps not available or a wrong access was attempted.
*** error 57: illegal address (0x08000000)
BS 0x1FFFF020, 11

Možda se neko susretao sa ovim (ima tema naYouTube, ali se tamo pominje ST Cube Toolchain tj kaže da u stm32cubemx treba Debug opciju setovati na SerialWire), pa ako je rešio da podeli znanja. Inače koristim kineske klonove za ST Link i STM32F103C8T6.
Unapred Hvala.
[ mikikg @ 29.11.2017. 11:03 ] @
Mislim da je problem vezan za velicinu Flash memorije, trebalo bi da bude 64k a videh posle da se negde spominje u ekranima 128k.
Provericu to malo kasnije, sad moram neke druge obaveze da resavam ...

[ vucko47 @ 30.11.2017. 19:27 ] @
@m51

Odcekiraj 'download to flash' u podesavanjima za stlink i probaj onda.
[ mikikg @ 01.12.2017. 10:08 ] @
Da, to je potrebno uraditi da bi proradio debuger.

Uzgred, u primeru sam naveo da je potrebno 2 x 300.000 puta napraviti petlju za 1 sekundu periode blinkanja, mala greska, fali jos jedna nula, dakle 3.000.000 za 1 sekundu (grubo).
[ m51 @ 01.12.2017. 14:23 ] @
Da tako radi, hvala Vam puno.
[ mikikg @ 02.12.2017. 08:16 ] @
Da dodam par korisnih komandi koje ce vam zatrebati.
Ove dve komande postavite negde na pocetku vase Setup funkcije ili odmah posle ulaska u main() (ovo program prolazi samo jednom prilikom starta) kako bi oslobodili nozice koje po default zauzima JTAG interfejs i kako bi mogli da ih koristimo kao standardan GPIO, dakle sa ovim se oslobadjaju nozice PA15, PB3 i PB4 od JTAG i mogu posle da se prekonfigurisu po zelji:

Code:


        //Alternate Function I/O clock enable - Treba da bi proradile GPIO na JTAG, EXTI, I2C
        RCC->APB2ENR |=    RCC_APB2ENR_AFIOEN;
    
        //oslobodi nozice od JTAG, koristimo samo SWD
        AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; //JTAG-DP Disabled and SW-DP Enabled
[ DSL @ 04.12.2017. 11:21 ] @
NIsta i nikoga ne kritikujem. Iz iskustva znam da su najtezi putevi i najbolji. Dok sam radio sa 8031 u asembleru, bio sam i efikasan i naucio cpu jezgro u prste...

Jos uvek citam...tesno sa vremenom ali ne i sa voljom.
[ mikikg @ 05.12.2017. 18:33 ] @
Obavezno štivo za sve koji pisu programe u C/C++ i koriste GCC prevodioce (korisno u svakom slucaju), ukljucujuci i moderne derivate za mikrokontrolere poput STM32 i slicno.
Link (knjiga) opisuje najbitnije elemente procesa prevodjenja i linkovanja sa prakticnim primerima za *nix OS, make-fajlove, opcije za "include" header fajlova i staticnih/dinamickih biblioteka, makroe, pre-procesorske direktive, opcije za optimizaciju i jos dosta toga sto je prakticno potrebno za razumevanje ovih procesa, nevezano sa platformu za koju se program pise, bila ona Intel PC ili ARM MCU ili druge.

http://www.network-theory.co.uk/docs/gccintro/index.html
[ mnn @ 19.12.2017. 18:50 ] @
U MpLabX u tekst editoru postoji komanda za formatiranje koda. Desni klik/ format i sav kod lepo formatiran ( razmaci, uvlačenja... )
Postoji li i ovde slična komanda?
[ bogdan.kecman @ 19.12.2017. 20:56 ] @
keil stari editor je daleko od popularnih editora baziranih na netbeans
i eclipse.. e sad ovaj najnoviji je ako se dobro secam baziran na
scintilla (  http://www.scintilla.org/  ) za koliko koliko ja znam
postoji auto-indent plagin koji koliko ja znam ne postoji u keilu :( ..
tako da je odgovor general NE :(

ono sto mozes je da koristis externi program indent (
http://gnuwin32.sourceforge.net/packages/indent.htm ) koji to moze da ti
sredi, pritom indent-u mozes da kazes tacno kako hoces da ti formatira
kod, mozes da mu definises koji god standard hoces / izmislis i on ce ti
uvek formatirati kod prema njemu :D
[ goran_68 @ 21.12.2017. 07:09 ] @
Evo ekstra vesti za sve koji rade sa STM32

"If you have not yet heard, STMicroelectronics has acquired Atollic!
If you are an STM32 developer and an Atollic TrueSTUDIO user, think of it as an early holiday present. Soon, what was the paid Pro version of TrueSTUDIO will soon be made available to STM32 developers at no charge."

Dakle, Atollic TrueSTUDIO Pro verzija uskoro za jedno veliko DŽ!
[ bogdan.kecman @ 21.12.2017. 07:11 ] @
ako bude to ce biti mnogo dobro, ne samo sto je atollic odlican alat vec
sto je atollic usko vezan za gcc i svi njihovi alati su gcc kompatibilni
.. samo da ne bude patka
[ goran_68 @ 21.12.2017. 07:28 ] @
I ja se nadam da nije patka. Evo vest a i dobio sam od Atollic na mail>

http://www.st.com/content/st_c...ter/press-item.html/c2839.html

https://stm32f4-discovery.net/...tollic-enrich-stm32-ecosystem/

[ bogdan.kecman @ 21.12.2017. 07:33 ] @
to sam i ja dobio ali

Citat:


This acquisition means that TrueSTUDIO will be now part of STM32Cube
ecosystem and will be available for free for STM32 users.



ne spominju pro :( .. videcemo .. realno je atollic odavno deo cube-a i
svega ostalog sto stm radi (oduvek su njihovi primeri bili za mdk i
atollic i jos par drugih, ali atollic je tu skoro koliko i arm kad je
stm u pitanju) ... atollic je svakako dosta napredovao kao product a
koncept naplate je menjao vec 3-4 puta, ja se iskreno nadam da ce stm
inteligentno da pusti ceo atollic da bude free (jos bolje kad bi uradili
donaciju gnu i dali sve te alate open source, ionako je 99% toga vec
preuzeto iz open source sveta, i eclipse i gcc i ..) no videcemo..
[ foxhunter1 @ 21.12.2017. 15:04 ] @
"What was the paid Pro version of TrueSTUDIO will soon be made available to STM32 developers at no charge."

ovde pise...
[ bogdan.kecman @ 21.12.2017. 15:15 ] @
ja se radujem od kad sam video mail, no videcemo :D

realno, ja sam potrosio jako puno vremena probavajuci razne arm
procesore i zakljucio da je meni stm najbolji ... skoro sam pricao sa
kolegom koji je iz potpuno druge price, potpuno druge pozadine i on je
takodje iz potpuno drugih razloga zakljucio isto - da mu je stm najbolji
.. tako da mene ne tangira sto nece raditi sa drugim armovima .. za moje
potrebe je realno i free verzija atollica bila do jaja, ovo je sad mega
turbo :D .. samo da ne ureknemo :D
[ mnn @ 21.12.2017. 20:08 ] @
Kako se izboriti od zaključavanja kontrolera i famoznog "Can not connect to target"? Jednom upiše program i više neće. Pre sam to otključavao sa Discavery pločicom i njenim programatorom ali sada neće ni tako.
[ bogdan.kecman @ 21.12.2017. 20:21 ] @
meni se to nikad nije desilo (da ne mogu da otkljucam sa stlink-om) ..
ono sto je bitno kod ovih F103, posebno bluepill, mora se imati externo
napajanje i do tog problema ne dolazi. ako napajate kroz usb (ili nedaj
boze kroz debugger port) onda se to desava i to vrlo cesto .. sa
bluepill takodje zameniti pullup otpornik na usb-u
[ mnn @ 22.12.2017. 16:21 ] @
Na koji pullup otpornik misliš? U pitanju je bluepill. I nakon priključenja eksternog napajanja pravi problem.
[ bogdan.kecman @ 22.12.2017. 16:33 ] @
onaj na D+ obicno je R10 i pogresno je 10k a treba da bude 1.5k, zamenis
taj otpornik i USB proradi kako treba
[ mnn @ 22.12.2017. 17:05 ] @
bluepill ili stlink?
[ bogdan.kecman @ 22.12.2017. 17:11 ] @
bluepill
[ bogdan.kecman @ 22.12.2017. 17:12 ] @
https://amitesh-singh.github.i...ecting-usbpullup-resistor.html

https://amitesh-singh.github.i...wrong-pullup-in-blue-pill.html

http://wiki.stm32duino.com/index.php?title=Blue_Pill
[ scoolptor @ 04.06.2019. 10:59 ] @
Treba mi pouzdan a jeftin izvor STM32F103C8T6 mikrokontrolera.
Vidim da su na tme.eu 4.25eur+/pcs za 10 komada, a gde je tu PDV i marza dobavljaca.
Da li se moze naci nesto na AE, da nije klon, i da nije korisceno. Za pocetak mi treba 30tak komada.
[ foxhunter1 @ 04.06.2019. 12:36 ] @
Ovo bi trebalo da te zadovolji:
linkic

Vise puta sam narucivao materijal, do duse uvek uz neke plocice (od sestrinske firme). Imas izbor proizvodjaca (ako postoji vise proizvodjaca za odredjeni proizvod),
sto ovde za ove procesore odn kontrolere nije slucaj. Jedino mi se ne svidja sto pakuju u ogromne kutije i to onda automatski pali lampicu kod odredjenih sluzbi, ali i da platis dodatni harac (od 60%)
opet ce cifre biti prilicno manje od ovih tvojih.

[ scoolptor @ 04.06.2019. 13:21 ] @
Hvala

Edit: Nasao sam u Cometu F103CB sa 128kb flasha za pristojnom cenom

[Ovu poruku je menjao scoolptor dana 04.06.2019. u 14:31 GMT+1]
[ bogdan.kecman @ 04.06.2019. 14:24 ] @
ja uzimao u comet-u bili jeftini, al se ne secam koja cena bila... znam
da sam ih cekao 2 nedelje .. mislim da su bili red velicine 250din
[ mnn @ 06.06.2019. 06:52 ] @
Citat:
scoolptor:

Da li se moze naci nesto na AE, da nije klon, i da nije korisceno. .


Meni ovo nije jasno. Kako klon? Znači imaju fabriku koja može napraviti indentičan ili sličan čip.
Ovo drugo mi je malo jasnije, ali mi opet mi se kosi sa zdravim razumom. Odakle skinuti i razvrstati toliko čipova a da nisu "vidljivi" tragovi demontaže?
[ bogdan.kecman @ 06.06.2019. 09:56 ] @
oh da, imaju fabrike koje prave klonirane cipove, neki su klonirani tako
sto su skenirani/ukradeni planovi za iste pa je silikon isti i kod njih
je problem uglavnom samo sa kontrolom kvaliteta a neki su klonirani tako
sto se klonira funkcionalnost a cip je unutra drugaciji ...

sto se recikliranih tice, nema sanse da provalis da su reciklirani,
zagreje se pcb svuku sa njega cipovi, gurnu u kiselinu koja pojede kalaj
sa nogica budu cipovi izgledom ko novi
[ scoolptor @ 06.06.2019. 10:22 ] @
@mnn, u prilog bogdanovom komentaru: https://www.aliexpress.com/item/32952782064.html

"CS32F103C8T6 Completely replace STM32F103C8T6 STM32F103 LQFP-48 In Stock ARM-based 32-bit MCU with Flash for STM32"

Taj prodaju pod drugom oznakom, a ne kosta ih mnogo da odstampaju laznu oznaku.
[ mnn @ 06.06.2019. 11:13 ] @
I, šta sad? Kupiti za 5 dolara i nismo opet sigurni ili kupiti za 1 dolar i znamo šta smo kupili. Ako bude orginal super, ako ne, nema veze.
Masa je uzela razne "pilove", probali, učili, pravili nešto, prodali to nešto....Velika verovatnoća da su tu bili neki čipovi od ovih koje spominjete.
I šta ćeš ti "scoolptor" da uradiš?
Ja već neko vreme razmišljam da se prebacim sa PIC-a. To pitanje o dostupnosti neke količine u razumno vreme i razumne cene i mene kopka.
[ bogdan.kecman @ 06.06.2019. 11:46 ] @
pa vidi, ako kupis u farnelu, digikey-u, ili kod bilo kog reputable distributera (kod nas je recimo comet reputable dealer, a kelco je na primer klasicni mesetar koji moze ima original a moze ima i kinesku kopiju, no zato ima bolje stanje, veci izbor, kvalitetnije radnike.. ) sigurno dobijas original ... a sto se cene tice, ako ne uzimas direkt od kineza na brdo mesta ces divljaka platiti kao i original (ili cak vise)

drugo, kopiraju se samo high volume cipovi, sigurno neces smt32f7* naci kinesku kopiju :D ... ali zato 103 koji ide u bluepill ces original naci iskljucivo kod ozbiljnih dilera :D

e sad, ono sto je bitno, kada su razni cipovi u pitanju "kopija" je problematicna zato sto nije 100% ista kao original i zbog raznih nekih propusta i problema (setimo se ftdi kopija) ALI kada su u pitanju ARM cipovi, tu problema nema (ako radi, radi, moze da ne radi da je neispravan cip, ali ako radi to je to), zato sto je arm open source, tacno se zna sta je u kom cipu, razlika izmedju kopije i originala (prave se najcesce u istoj fabrici) je u tome sto je original platio licencu arm-u a kopija nije :D ... ono mozda moz imas problem ako prodajes u EU ili USA neki device koji ima divca cipove ako te neko nagazi, ali realno ARM je ARM :D ...


@mnn

pill-ovi su uglavnom divce i reciklaza, no ko sto rekoh, arm je open source, to nije niko gulio pa provaljivao, dizajn cipa mozes sam da skines, jedina zastita mu je papiroloska

pic je najkopiraniji mcu na svetu i najskidaniji sa reciklaze, 100% pic-a koji kupujes od non-reputable dealera je reciklirano ili je divca (ili je reciklirana divca) ... pri tome im je "bang for the buck" uzasan u poredjenju sa arm-om.

e sad, sta raditi, pa ne kupujes na aliju ili bleju, kupujes kod reputable distributera, provalices, da osim sto nekad mora sacekas 2-3 nedelje da dopeljaju to u beograd, comet recimo ima cene koje su mnogo bolje od svih ostalih mesetara elektronike kod nas, STM32F103C8T6 je tipa 2-2.5$ u beogradu u kometu, original, direkt od STM-a, nekoristen, os u kesici, os na rail-u... taj isti cip je najjeftiniji na aliju 1$ i 100% je ili divca ili reciklaza ili reciklirana divca .. ako pravis nesto u milion primeraka razumem zelu da ustedis ali za mini proizvodnju da li tih 1$ razlike pravi razliku ?! pritom pitaj comet za koliko mogu ti nabave milion komada :D verovatno ce dodirnuti kinesku cenu :D
[ scoolptor @ 06.06.2019. 18:36 ] @
"I šta ćeš ti "scoolptor" da uradiš?"

Uzecu iz Cometa. Imaju 128kb model za ~2,5eur.
[ bogdan.kecman @ 06.06.2019. 19:10 ] @
btw, najmanji flash i najveci flash model su potpuno isti :D ... uzmes
najmanji flash mode i u kompajleru kazes da je model sa najvecim
flash-em i ono radi :D .. meni se jos nije desilo da sam omanuo .. njima
se ocigledno ne isplati da prave razlicite tako da oni samo razlicito
lasiraju povrsinu gore sa oznakom, cip je isti :D ... mada i razlika u
ceni je smesna
[ scoolptor @ 06.06.2019. 20:32 ] @
Da, video sam neki YT video, kako se 'otkljucava' drugih 64kb.
Ali, ako se ne varam, na lageru u BG imaju samo 128kb verziju.
[ bogdan.kecman @ 06.06.2019. 20:40 ] @
ma da i ja obicno kupujem verziju sa najvise flasha da se ne smaram ..
sitna razlika u ceni
[ mikikg @ 08.06.2019. 19:31 ] @
Ja sam poceo da ih koristim umesto expandera :D
To je X puta pametnija fora nego sto skoro isto kosta kao MCP expander :)

Sa 3 x F103 + F407 master na jednoj PCB, hehe ... Isti mucak imao MCP ili STM32 na tom mestu, to radi sve razbija i I/O koliko hoces ...
[ bogdan.kecman @ 08.06.2019. 20:09 ] @
i2c ili spi slave?
[ mikikg @ 08.06.2019. 23:44 ] @
Kako kome odgovara, po izboru, meni sad za jedan projekat odgovara USART, 3 x USART konekcija, asinhrono se javljaju sto mi odgovara, nemam prozivanja od mastera, mogu i dodatne HW linije za interapte da se obezbede, moze da se konfigurises potpuno u smislu rasplozivih mogucnosti a ja biram tako da sto manje moram da programiram jer HW ne racunam u trosak posebno ne "neke IC" ma sta oni radili, a kad stavis tu MCU ihhh, radi sta hoces ...
[ mikikg @ 09.06.2019. 00:36 ] @
@bogdan.kecman
Pravim 12 kanalni step kontroler baziran na GRBL (nema veze sa CNC/3D), to je moj "expander" sa svim svojim I/O inijama, ima ih dosta, njima koordinira nezavisno F407 a na sve to ispod se kaci RPi koji ide na HDMI touch display (drajveri su napolju).
Nisu mi kriticni dogadjaji za svih 12 kanala istovremeno, to je sve OK, a "expandere" ne pipam, GRBL sve lepo ima u sebi a moze uvek da se dobudzi malo tako sto sam stavio jedan CBTLV3253 1:4 analogno MUX (hehe, preteklo od SDR) i lepo preko toga povezao sva 4 komada STM32, dakle 3 Pilulice i jedan F407 i to ide na RPi sa SWD-St-link podrskom tako da mogu da FLESUJEM sve kontrolere na plocici bez externih programatora, ulogujem se lepo ko covek na RPi i Flesujem Pilulice, startujem svoj deamon/driver i vozi Misko :)
[ bogdan.kecman @ 09.06.2019. 00:45 ] @
pogledaj klipper deluje mi mnogo bolji za to od toga sto pravis :D
[ mikikg @ 09.06.2019. 01:25 ] @
Hehe, eto vidis, pa to je to, ja to mogu da poteram na ovoj platformi, a rekoh da nije za CNC, ima tu jos vazdan nekih stvari koje F407 mora da radi, GUI radi druga ekipa (NDA), uglavnom nije CNC.
[ bogdan.kecman @ 09.06.2019. 01:31 ] @
pa ne moras ga koristis za cnc, uzmes klipper, cukas piton ko covek tu,
iskoristis njihov kod sa jedne i sa druge strane i vozi misko :D imas
istestiran sisten koji radi i mnogo jaci cpu i mnogo vise rama nego na f4 :D
[ mikikg @ 09.06.2019. 01:40 ] @
Razmotricemo i tu opciju, rekoh da mi je "sve programabilno na motherboard", Pilulice su tu zbog potrebnih I/O a koji firmware ce se vrti moze u letu da menjamo, rezervisao sam ja tu sve lepo sta mi treba +imam i rezervne I/O linije.

BTW: Slabo sa Python programiram, uglavnom prepisujem iz Pythona u C za tamo neke druge potrebe jer klient ima malkice problema za latencom svojih servisa :) a posto su i ove kontrolere sad gurnuli sve pod GCC ja nemam potrebe za drugim programskim jezicima niti kompajlerima, sve je pod istom kapom, tu je sve sto treba ...

[Ovu poruku je menjao mikikg dana 09.06.2019. u 03:01 GMT+1]
[ eembedded @ 10.06.2019. 17:40 ] @
Pozdrav svima, nisam siguran da je pravo mesto, ali me interesuje da li je neko pravio digitalno napajanje pomocu f103 tj. koristeci DAC?
[ mikikg @ 10.06.2019. 18:25 ] @
Citat:
eembedded: Pozdrav svima, nisam siguran da je pravo mesto, ali me interesuje da li je neko pravio digitalno napajanje pomocu f103 tj. koristeci DAC?


Pozdrav, najbolje da otvoris novu temu posto je to malo specificna oblast, ukljucicu se u tu temu, imam dosta materijala oko toga ...
[ mikikg @ 13.04.2020. 23:58 ] @
Mozda nekome zatreba (za "advanced" korisnike), u prilogu je CMake build skripta za prevodjenje projekta pomocu GCC alata. Takodje postavljam i linker skriptu za STM32F103C8Tx.

Ukratko, pod Linux je potrebno instalirati "cmake" (ako vec nemate) i "gcc-arm-none-eabi" i to je odprilike sav potreban alat za prevodjenje:

Code:

apt install -y cmake gcc-arm-none-eabi


Vase source/header/lib fajlove mozete postaviti u ove pod-direktorijume:

Code:

RTE/Device/STM32F103C8
Drivers/CMSIS/Device/ST/STM32F1xx/Include
Drivers/CMSIS/Include/
Src
Inc


Procedura prevodjenja je nadalje vrlo prosta, uobicajna za CMake projekte:

Code:

mkdir build
cd build
# cmake -DCMAKE_BUILD_TYPE="Debug" ..
cmake -DCMAKE_BUILD_TYPE="Relese" ..
make


Nakon ovoga u radnom folderu ce te dobiti myprj.bin, myprj.elf i myprj.hex prevedene fajlove.
[ mikikg @ 14.04.2020. 01:07 ] @
Da bude u skladu sa temom, evo postavljam kompletan projekat sa svim potrebnim fajlovima za "Blink LED" primer.

Vas ce uglavnom interesovati ono sto je u Src/main.c, fajlovi u RTE/ su deo minimalistickog CMSIS frejmwork-a, nema nikakvih HAL drajvera.

https://github.com/mikikg/stm32f103-cmake-template

Dakle jos jednom cela procedura:

Code:

git clone https://github.com/mikikg/stm32f103-cmake-template
cd stm32f103-cmake-template/
mkdir build
cd build/
cmake -DCMAKE_BUILD_TYPE="Relese" ..
make


Za snimanje (flesovanje) mozete koristiti "st-flash" i komanda je sledeca:

Code:

st-flash write myprj.bin 0x8000000