DIY Electronic projects

Full Version: Forth, za one sa razlčitim rasporedom vijuga...
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9
Hm,
Raspberry Pi, jedan TFT od 7 inča, instaliran terminal i standardni pacov i tastatura.
Maltene u džep pa na teren. Zanimljivo zvuči...

Ili možda na telefonu.
Mikiii kolika skalamerija. Ostao sam bez teksta, sad i ja ne mogu da se ne prebacim na ARM Big Grin . Jesi li povezao ove sve module preko i2c ekspandera? 

Macola, odkada si napisao da STM32 radi već nekoliko godina besprijekorno, gledam koji programator odabrati i koji procesor da odaberem.
Jesi li ti STM32 postavio kao Miki (slika nekoliko postova ranije) ili si direkno zaletovao posebno IC posebno kristal i ostalo na pcb? Pretpostavljam da si za taj stroj pisao u c-jeziku? Kakvu komunikaciju si koristio između STM32F407 i servo-kontrolera? 
Gledam malo, cijene koje su veće pri kupnji samog procesora nego kada je na pcb. A napon i šum nisu nerješive komponente, tako da kompromis je prihvatljiv.

Imam osjećaj da ćemo sa svim tim silnim hardware-om doći do zida kroz nekoliko godina, gdje će se sve više okretati efikasnijim programima. Baš me zanima kako će se razvijati tehnologija i software kroz godine. Tko zna možda negdje u nekom kutku se razvija Forth OS  Shy 

Ukoliko se naučim do te mjere da mogu pisati programe i ugrađivati MCU u hardware, vrlo vjerojatno ću radii komunikaciju (umjesto uart) bežično i to ili serijski preko bluetooth ili wifi komunikaciju kao što je Miki spomenuo, no o tom potom, mogućnosti su beskonačne.
@Vedran,

Ono na slici u Mikijevom postu je moja test skalamerija :-)

Tu sam upotrebio Blue Pill i razgazio ga pod ozbiljno.
6 ekspandera po 16 pina (96) + još 8 direktnih I/O.
Ekspanderi su SPI na 2.5MHz, galvanski rastavljen RS485 ide ka konzoli sa drugim Blue Pill.

Na mašini za sečenje žice imam običan pulse train za servo i direction komandu. To je krajnje jednostavno generisati bilo iz Blue Pill ili iz F407.
Čak ni nekoliko MHz nije poseban problem, mada ne treba.

Što se programatora za STM tiče, imaš ga već ugrađenog na bilo kom Discovery board i može se koristiti za programiranje eksternih MCU, a ima i da se kupi kineski ST Link V2 za sitne novce.

Kad budeš video da flešovanje traje sekundu-dve, zaboravićeš PIC.

A za Forth ti ST Link treba samo prvi put.

P.S.

Heh, zaboravio sam da kažem da su one pločice sa plavim kondenzatorima izlazi sa trijacima BTA16, za 110Vac. To pokreće neke razne hidraulične ventile i kontaktore. Ostalo su DC I/O na 24Vdc.
Da. Zaboravih da kažem da sam to sve pisao u C.

Sad ozbiljno nameravam Forth kad sam video da ima jaku podršku na STM32.
Imao sam ortaka koji je ultra ekspert za Forth i radili smo zajedno 14 godina, a ja sam propustio priliku da učim od najboljeg...
Ali zato sam svojim očima mnogo puta video moć Forth sistema u odnosu na ono što sada radim sa C.

No polako, pokušaću da iskopam vremena i počnem od početka, opet. Svidelo mi se kako na F407 to radi na keca.

A inače, jevtinije ti je da koristiš Blue Pill ili veći DiyMore sa F407, nego da kupiš MCU i lično ga lemiš. Malo je glomaznije fizički ali sasvim pouzdano radi. U industrijskim aplikacijama koje radim prostor nije poseban problem.
Preventive radi ja svaki prelemim Pb kalajem vrhunske klase, sa 1% bakra i tome nema smrti od vibracija.
Kineski Pbfree je dosta nepouzdan na mehanički stres, pa mu to prevaziđem odličnim i veoma proverenim Pb tinolom.

Jbg. Pb tinol se razvijao dva veka, a ovaj novi tek od skoro i sa posebnom namerom skraćenja veka proizvoda...

A utvrdio sam da niko nema želju da pojede pločicu sa MCU :-)
Ortak je inače u najmanjoj meri koristio ANSII Forth, samo oko malog broja osnovnih reči, a sve ostale alate je skrojio prema svom kaputu.

To je inače tek pravi način rada sa Forth jer ga ANSII približava ostalim sistemima i degradira mu izuzetnost i prednosti povodom toga.
Osnovna ideja je bila prenosivosst koda ka drugim programerima, što se pokazalo kao ne baš najbolja ideja po razvoj samog Forth.

Po meni je Forth vrlo individualistički pristup, gde svako može razviti sopstvene alate koji mu najviše odgovaraju i prijaju.
Spadam u tipove koji će radije da se namuče od početka nego da nešto kopiraju. Ježim se od kopiranja bez mozga.
Zato mi se jako sviđa Forth i njegova bliskost hardveru.

Kao što rekoh, propustio sam priliku da učim od najboljeg, u najbližem okruženju i sada ću platiti cenu toga učenjem od početka.
A tada možda nije bio pravi trenutak jer da je trebalo dogodilo bi se...
Drugari, nisam imao vremena da dodjem do racunara, da dam komentar.
Kao prvo, ja nisam protivnik Forth programskog jezika. Ucio sam ga cika Zokija i zajedno sa njim ga primenjivao u automatizaciji raznih masina. Miki to zna. Naravno, nikada nisam dosao Mladjinog nivoa iz vise razloga, ali mogu slobodno da kazem da sam imao nekoliko implementacija, sto na PIC-u, sto na EMC-mini-ju. Krenuo sam kompletnu pricu mikrokontrolera od ASM-a i dan danas tvrdim da mi je ASM prirodniji i vise lezi od bilo kog drugog programskog jezika. Sve pogodnosti Forth-a znam i video sam Zokija kako radi sa tim na masinama za spektralnu analizu varova itd. Jednostavno, filozofija programiranja mi je skroz OK, ali mi jednostavno nije legao. ASM mi je mnogo blizi. Posle toga sam provalio C i video da mi je on nekako blizi ASM-u, nego Forth i nastavio sam sa C u kombinaciji sa ASM kada je to potrebno.
Jos jednom da napomenem, sve sto si rekao je u potpunosti tacno i treba probati, ne treba ti konzola, sam interpretira samog sebe itd. Sve sam probao i video, samo jednostavno mi ne odgovara. Ja to javno kazem.

@vedran
Slika koju je Miki prikazao nije poenta STM32. Mnogo slabiji kontroleri mogu da voze taj broj I/O, pa cak i veci (Macola i Miki znaju o cemu pricam). Ovde je najmanje bitna stvar koji MCU je u pitanju (neko ce da dovede moju konstataciju u pitanje), vec je glavna stvar da imas distribuirane periferije koje rade sa MCU-om preko nekog interfejsa, a ultra su imune na smetnje. Macola ili Miki su vec napomenuli da su presli na tu platformu zbog cene. Iste stvari su radili i sa PIC-om. Programska podrska moze da se napravi u bilo kom programskom jeziku i da savrseno radi, ali ako hardware nije isprojektovan adekvatno za rad u prljavom okruzenju, nista od toga.
Miki i Macola su ovde vise pricali o moci programskog jezika, ali bih ja voleo da napomenem, da na takvom sistemu moc programskog jezika ne moze nikada doci do izrazaja ako veliki magovi nisu uradili hardverski posao kakav je na tom PCB-u, a to je da su svaki moguci scenario (posle visegodisnjeg, da ne kazem decenijskog iskustva) uzeli u obzir i vodili racuna o tim sitnicama koje du dovele taj uredjaj do visegodisnjeg nesmetanog rada.
Vojče,
Sasvim si u pravu. Dobra naprava je skup dobrog hardvera i dobrog softvera, ma u kom jeziku pisano.
Podjednako pouzdane stvari smo pravili i u asm i u Basic i u C i u čemu sve ne.
To ne zavisi od jezika. Jezik ne gradi napravu već čovek.

Fort takođe nije čak ni programski jezik već metajezik, više sistem.
Sasvim pogrešno ga nazivaju jezikom čak i na raznim "pedijama".
Nešto što nema definisane ključne reči i čemu se čak i to može prekompajlirati u bilo šta, ne može biti jezik već metajezik...

Forth, kao što si i sam rekao, nekom leži nekom ne leži.
Sam pristup je specifičan i individualistički.
Kao način pisanja koda je takođe specifičan i ima neke vrhunske prednosti, ali i mana, kao i bilo koji drugi sistem.

Da je do sada pronađen neki način bez ijedne mane, svi ostali načini bi brzo bili potisnuti u zapećak.
Forth je pronašao sebe u mernim sistemima i upravljačkim oblastime gde je potrebna iznenadna fleksibilnost i brzo prilagođenje na takav poremećaj.
Našao je svoju nišu i tu se neprekidno koristi.
Ostale metode programiranja su takođe stekle svoje stambeno područje i tu obitavaju.

Sam naslov teme koju sam odavno postavio govori o Forth kao sistemu:" Forth, za one sa razlčitim rasporedom vijuga..."
Jednostavno neke ljude će privući izdvojenost iz opštih pravila, uz istovremeno ostvarenje programerskih želja.
Svako ima svoj ukus i nešto ga privlači a nešto odbija i to život čini zanimljivim.
Da je sve svedeno na jedan način, život bi izgubio svoju draž. Postao bi jadan i čemeran.
Ko uspe da nađe sebi igračku za veći deo života i da se igra za sve pare, verovatno nije daleko od ideala sreće...

Što se mene i Forth tiče, pokušaću da budem dovoljno uporan i istrajan, što je kod Forth neophodnost.
Ako ne uspem da istrajem iz bilo kog razloga, uvek mi ostaju C i asm, a na Basic se neću nikad vratiti za primenu na MCU čak i da me motkom tuku i ako sam ga nekoliko godina koristio na PIC...
Samo bih da dodam jos jednu bitnu stvar za programiranje MCU-ova. @Macola, ako pogledas istoriju programiranja MCU-ova i procese ucenja cela prica ti govori jednu stvar, koja je vezana indirektno i za Forth.
Nekada davno su ljudi programirali u masinskom jeziku, pa ASM, kao simbolickom masinskom jeziku. ASM koliko god bio prevazidjen razvojem novi jezika, okruzenja biblioteka ili bilo ceka u danasnjosti, sto po meni samo sputava razvoj mozga, je jezik gde mozes direktno da osetis sta je MCU, sta je programski brojac, sta je interapt, sta je SFR, sta je itd. i kako se u stvakoj situaciji ponasa. Posto je Forth Stack orjentisan i sam si rekao da je logican sled posle ASM-a, u ASM-u (u Forth-u jos vise) naucis sta znaci stack i sta znaci ta dubina stack-a koja se provlaci kroz literaturu. Npr. u C-u programer nema sanse da zna sta kompajler stavlja na stack pri ulasku u interapt i zasto to stavlja na stack. Po meni su to mnogo bitne stvari jer ti problizavaju nacin funkcionisanja i razumevanja rada MCU-a. Kada se te stvari nauce u ASM, logican sled je Forth. Ali, opet ono moje lezi ili ne lezi. U potpunosti je tacno da se pomocu Forth-a (koliko god bio tezak za razumevanje) nauce principi funcionisanja MCU-a.
Otisao sam daleko sa pricom. Pogledaj sada koliko ljudi prilikom upoznavanja rada sa MCU uci ASM?! To cak vise nisu ni %. Takodje, pogledaj kolika je ekspanzija Arduino smeca na trzistu i koliko ljudi koji rade sa tim pricaju kako programiraju MCU-ove, a realno ne znaju ni sta je MCU, a kamoli sta je programiranje MCU-ova. Koliko ljudi koji ulaze u tu pricu razvija svoje biblioteke koje ce koristiti kasnije itd.
Sve stvari koje su kompleksne sa jedne strane, a logicne sa druge strane nisu zazivele, a nece nikada nikada ni zaziveti. Sve se svodi na koriscenje gotovih resenja i sto je moguce jednostavnijih programskih jezika/okruzenja kako bi se doslo do nekog resenja.
Mislim da mali broj ljudi zna da je snimanje Forth koriscen prilikom snimanja ratova zvezda.
Forth zbog toga ima mali broj ljubitelja, ali oni koji ga vole, oni ga vole. Ja sam licno ljubitelj ASM-a i uvek cu da zagovaram prvo ASM. Basic kao sto mu samo ime kaze je pocetni. Ako posle xx godina treba da se vratim na njega, onda bataljujem celu ovu pricu.
Slicna je prica i oko PC programiranja. Pogledaj samo koliko ima low-level PC programera koji se bave razvojem drajvera, a da ne kazem razvojem operativnog sistema.
Takodje mislim da bi ovde bilo veoma bitno spomenuti novu arhitekturu procesora, tj. FROG (FoRth OrGanized) koju je razvio Mladja, a na kojoj su realizovani brojni kompleksni sistemi. Posto Mladja slabo posecuje forum zbog obaveza, mislim da je Macola jedini adekvatan da malo vise kaze o tome jer je to procesor koji je razvijan specijalno za izvrsavanje reci programskog jezika Forth. Moderni procesori se cak deklarisu kao Optimised for C, ali se na njima Forth izvrsava munjevito. Prava prica je kada je arhitektura prilagodjena programskom jeziku.
@Macola
Koliko su pouzdani ti mikrokontroleri?  Nisam doživio, ali sam čitao da kinezi rade kopije mikrokontrolerima pa sam do sada uglavnom kupovao na mjestima gdje znam da je original MCU?
Nije mi problem zalemiti procesor (ako to prostor bude zahtijevao) jer vidim da je cijena na ebay ista samog modula s mikrokontrolerom i modulom bez mikrokontrolera. Te količine olova što mi koristimo su neznatne koliko čitava industrija koristi za proizvodnju čitavih serija, tako da to ne predstavlja problem. Osim u slučaju ako se želi certificirati, jer bez RoHS nema CE certifikata.
Iako kasnim za tvojim znanjem, moći ćemo skupa razrješavati Forth probleme u procesu učenja, jer ću ja vrlo vjerojatno nabaviti isti komad STM32F407 i blue pill.
Macola, ako ne ideš po ANSII Forth, onda moraš sam ispočetka pisati u ASM-u sve sam redom? To bi moglo oduzeti jako puno vremena? Doduše ako malo bolje razmislim, ti si već ekspert u ASM. Meni bi to oduzelo dosta vremena, možda da prvo naučim Forth pa onda ćemo vidjeti dalje.

@vojinilic
Jasno da slika nije poanta, vjerojatno sam ostavio pogrešan dojam. No netko sam tko čita jako puno postova koje piše Macola (svjestan sam da će biti muke kod hardware).

Kad netko tko ima ovakvo ogromno iskustvo kao Macola kaže da bi trebao preći na ARM onda je to ima veću težinu. Nadam se da mi mikikg neće zamjeriti radi toga, iako je on prvi koji me je savjetovao u vezi toga. Na početku sam Forth-a i sad je pravo vrijeme ako mislim mijenjati arhitekturu na kojoj radim. Nisam netko tko je zagrižen za jednu opciju, već razmatram i prihvaćam bolje opcije, ali moram na temelju nečega donesti odluku.
Samo da napravim mali pregled oko ARM arhitekture, bice koristan svima u temi.

ARM kontrolera ima raznih, stvarno jako puno ih ima, postoje serije kontrolera gde mi ovde ugalvnom pricamo o ARM Cortex-M seriji, simobolicno "M za mikrokontrolere".

Cortex M se dalje deli u nekoliko pod serija i to M0, M0+, M1, M3, M4 i M7.

Konkretno ovde u temi spominjemo ova jezgra:

STM32F103 je Cortex-M3 jezgro.
STM32F407 je Cortex-M4 jezgro.
CC32xx od TI je Cortex-M4 jezgro.

[Image: attachment.php?aid=29017]

Sledece su samo spomenuti, pored Cortex-M postoji jos dve velike grupe, to su Cortex-A "A za aplikativni" procesor (nije vise mikrokontroler) i jedna malo specificna grupa Cortex-R koja je predvidjena za "safety critical" aplikacije sa posebnim jezgrima i logikom koja nadgleda rad glavnog jezgra.

Na Cortex-A platformi sada rade skoro svi mobilni uredjaji, Apple, Samsung itd, to su procesori optimizovani za operativne sisteme ali bez osobina "real-time" upravljanja.
Tu se postavlja uvek zanimljivo pitanje, kako neki procesor iz Cortex-A serije koji se vrti na npr 1GHz, ima uz sebe npr 1GB DDR3/4 RAM-a i tako dalje NE MOZE da radi neke operacije tako dobro kao sto radi Cortex-M sa bukvalno 10X manje resursa, i manji clock i manje memorije a brze radi!
Cortex-A je optimizovan da se vozi neki operativni sistem kao na primer Linux, Android ili iOS.
Jednostavno nije predvidjen za to (real-time), radi on neke druge stvari mnogo brzo i tu je ARM to tako rascistio, imaju A procesori sa ovo a imaju M procesori i za ovo drugo.

Evo poredjenje Cortex-M (levo) naspram Cortex-A.

[Image: attachment.php?aid=29014]

I sad sta je tu tek zanimljivo, na primer ovaj AM335x je ARM procesor iz tkz "Sitara" serije koji dolazi uz Beagle Bone Black, opet jedna mala simpatcna masinica ali koja sa uz Cortex-A jezgro u sebi ima i jos dva dodatna 32bit jezgra koja su tu konkretno tip PRU ali ima i modela procesora koji imaju i Cortex-M kao ko-procesor i to jedno ili vise jezgra integrisano u sebi + imaju 2-4 Cortex-A jezgra u cipu.

[Image: attachment.php?aid=29016]

Kada vidis sta se sve tu nudi, kada vidis da sve to radi po istoj logici, pod istim IDE alatima i to na nivou svih proizvodjaca na planeti ne samo jedan kao sto je bio slucaj sa PIC-om, to je i Microchip na kraju ukapirao samo malo kasno, gledaj gde je Texas Instruments otisao, pogledajte kakve su to mrge od procesora i sta sve mogu da rade ...
Samo HRPWM modu koji dsPIC ima stvarno dobar, ovi imaju 10-20 puta bolji za iste novce Smile

Inace imaju u ponudi opake-opake kombinacije jezgra i koprocesora, imaju varijantu na primer sa 2-4 Cortex-A jezgra a za ko-procesor 2-4 njihova DSP jezgra C6xxx koja tuku 1000MIPS+ nezavisno od svega, to je surova procesorska snaga u jednom parcetu silikona, sa tim prave pametne automobile, robote itd ...

Za Microchip evo posle koliko godina vidim, ispalo je "bruka" da nisu nikada razvili na primer svoje DSP jezgro, ostali su svi po malo oko toga radili, Analog Device i Texas Instruments su bili uvek baje na tom polju a to znaci da su celu neku tehnologiju mnoooogo bolje poznavali od Microchipa i da su imali viziju da ulazu u to i da evo posle koliko godina i dalje koriste taj svoj IP koji drugi proizvodjaci sad moraju da jure ili da kupuju!
@Vojče,
Pitaću Mlađu da uz njegovu dozvolu postavim uputstvo za Frog.
Njegov prvi MCU  "Frog1" je stek mašina koja je u prvobitnoj verziji radila na 60MHz.  
Ono koliko znam oko Frog1 je da bi otprilike STM32F407, pošto nje stek orijentisan ali radi na 168MHz, najverovatnije mogao da postigne brzinu koju je postizao taj Frog1.
Verujem da sada Mlađa ima ko zna koju generaciju FrogX i pretpostavljam da je neuporedivo moćniji i brži od tog prvog.

@Vedran,

Sami MCU nisu klonovi jer se inače veći deo toga proizvodi u Kini, po STM licenci i sa njihovom kontrolom.
Sasvim su pouzdani i to je proverena stvar.
Sistemi poput Blue Pill ili DiyMore sa F407 sadrže puzdan MCU ali zavisno od privatnika koji ga je uradio ili klonirao kolegu, mogu imati loše lemove, što sam objasnio kako se prevazilazi.
Ostalih problema nema.

Pogrešno si shvatio udaljavanje od ANSII Forth.  Svakako da treba koristiti ceo set osnovnih primitiva i grupa zgodnih reči, ali ne treba pratiti ceo ANSII spisak forth reči, koji je ogroman da ne poveruješ.
Osnovni alati su već urađeni u "mecrisp-stelaris-stm32f407" i ima još poprilično dopunskih alata. Već su definisani: portovi, tajmeri, Usart moduli, spi, i2c, fleš, i rečnik je već prilično bogat.
Zašto ga ne upotrebiti kad je već sasvim lepo odrađen.
Odatle treba nastaviti svojim stilom.

Evo jednog korisnog teksta o tome:
http://hightechdoc.net/mecrisp-stellaris...anti-forth

Evo ujedno i paketa koji koji sam našao uz taj Forth za F407:

[attachment=29018]

Evo i rečnika koji je bio inicijalno u 407, po uključenju. Snimio sam ga za svaki slučaj.
[attachment=29019]

I nekog detaljnijeg opisa rečnika koji sam iskopao:
[attachment=29020]

Iskopao sam mnogo toga odavde:
http://hightechdoc.net/mecrisp-stellaris...index.html

U paketu koji sam postavio ima dovoljno toga da se potroši mnogo dana rada dok se to sve ne upotrebi realno.
Vremena imam malo, i neću skorije moći da se bavim tim.

Ako imaš vremena ti počni.
Pratiću na forumu i pomoći ako budem umeo.
Jeste tema oko Forth ali to cudo treba na "necemu" i da radi. Imamo jezgro, savladace se, NEGO, gde su periferije ?!

Pogledajte na primer sta Analog Device radi.
Cortex M3 na 16 MHz ali sa integrisanim svim ovim ostalim, u AD stilu, 24bit A/D Smile

@Macola, samo im jos fali da spakuju izolator i DC/DC pretvarac sa "magnetics" u chipu! Smile

PS: Cortex M jezgro je inace veoma veoma kompaktno napravljeno, Cortex-M0 se pravi sa 12k kapija/gates (u VHDL), Cortex-M3 je tipicno 50k do 60k kapija, to je veoma efikasno i zauzima malo prostora na silikonu, mnoooogo veci prostor i dalje zauzima ovaj analogni deo koji ne moze tek tako da se smanji, plus flash/ram memorija koja je prica za sebe i obicno zauzima vise od polovine chipa ...

[Image: attachment.php?aid=29021]
@Macola
Sad sam bacio pogled, po ANSI Forth ima 373 riječi ako sam dobro brojao  13 . Flashforth ih ima daleko manje, a razlog je očit.

Quote:Ortak je inače u najmanjoj meri koristio ANSII Forth, samo oko malog broja osnovnih reči, a sve ostale alate je skrojio prema svom kaputu.

To je inače tek pravi način rada sa Forth jer ga ANSII približava ostalim sistemima i degradira mu izuzetnost i prednosti povodom toga.
Osnovna ideja je bila prenosivosst koda ka drugim programerima, što se pokazalo kao ne baš najbolja ideja po razvoj samog Forth.

Po meni je Forth vrlo individualistički pristup, gde svako može razviti sopstvene alate koji mu najviše odgovaraju i prijaju.
Spadam u tipove koji će radije da se namuče od početka nego da nešto kopiraju. Ježim se od kopiranja bez mozga.
Zato mi se jako sviđa Forth i njegova bliskost hardveru.

Ovaj dio nisam shvatio, kažeš da je ostale alate skrojio po svom kaputu, moguće je zbog mojeg nepotpunog razumijevanja Forth-a. Pri tome sam razmišljao misliš li na nove riječi pisane u asembleru. Sad mogu pretpostaviti samo da je od postojećih riječi skrojio nove riječi? 
Idući tjedan ću imati daleko manje vremena za Forth. Nema žurbe jer nemam kod sebe niti jedan stm32, a niti programator. Inače volim odmah raditi direktno s nekim komadom hardware, zadam si nekakav zadatak i problemi će već doći sami po sebi. Zasada mogu probati osnovne stvari, poput petlji na ovom dsPIC30.
 

@mikikg
na PC komponentama su već odavno preselili gpu u cpu (naravno za ove everyday use, za igrice i složenije stvari ne ide), malo sam izašao iz te priče, ali mislim da je i pola NorthBridge-a već u cpu. Ne bih se čudio da će jednom pod istim krovom biti i PSU.


Zanimljivo je to oko ARM. Pomalo ću čitati ovaj neslužbeni Mecrisp-Stellaris wiki.
Malo dobre literature oko Cortex M3 i M4, ovu knjigu obavezno preporucujem

The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors
https://www.amazon.com/Definitive-Guide-...0124080820
Noćas sam malo radio na Forth-u. Zanimalo me koliko brzo može uključivati i isključivati digitalni izlaz na pinu RD1. 

Code:
$02d2 constant trisd                                \da ne moram stalno pisati adresu trisd, imenovao sam adresu sa trisd
$0000 trisd !                                       \postavi PORTD kao izlaz
$02d4 constant latd                                 \da ne moram stalno pisati adresu latd, imenovao sam adresu sa latd
: blinkanje begin $0000 latd ! $ffff latd ! again ; \definirana riječ je blinkanje u petlji begin again i izmjenjuje bitove na adresi latd,
                                                    \$0000 je vrijednost koju želimo upisati na registar latd. znak "!" upisuje vrijednost u reg,
                                                    \vidimo da će u petlji izmjenjivati cijeli registar iz 0 u 1
blinkanje                                           \pokretanje petlje


Maksimalna frekvencija je 46,3 kHz. Malo sam probao istražiti, ali to je izgleda najbrža moguća frekvencija na portu. Ispada da kompajler nije napisan optimalno ili sam ja negdje profulao. Ako netko zna neka napiše, a ako netko i ne zna neka ne gubi  vrijeme, ionako sam probao malo rad na dsPIC30f4012 dok ne pređem na STM32.
Eh, to je sad ono sto smo rekli na prvom mestu. Moras da znas arhitekturu ispod, da znas koliko inace treba u ASM (ili C) instrukcija da se setuje jedan bit na nekom portu.

U ovom gore programu si koristio ciste Forth instrukcije, sto isto tako ne postoji reč "toglujRB1" koja ispod definisana sa nekih 10-15 ASM instrukcija i onda bi sve to isto radilo na nekih 4MHz+ togle porta Smile
@mikikg znam, toggle sam tražio, nema je na popisu riječi. Sjetio sam se da mogu učitavanjem riječi see (datoteka see.txt) dobiti ispis u asm neke riječi, pa ispod se može vidjeti jasno kako radi :

Code:
3168 0020 0000 mov 0 , W0 
316a 0078 2f00 mov.w W0, [++W14]
316c 0007 fff4 rcall latd
316e 0007 f310 rcall !
3170 002f fff0 mov ffff , W0 
3172 0078 2f00 mov.w W0, [++W14]
3174 0007 fff0 rcall latd
3176 0007 f30c rcall !
3178 0037 fff7 bra un, 3168 
317a 0006 0000 return
Jedan zanimljiv detalj zasto smo inace presli na STM32 i vezan je bas za to "togle i setovanje" jednog bita na nekom portu.

Kod STM32 posto ima 32bitni memoriski prostor, oni su iskoristi jedan segmen i adresirali pored klasicnog "celog" porta pa upisujes 8, 16 ili 32 bit duzinu podatka, postoje bit-mapirane adrese tako da mozes sa posebnim instrukcijama da postavis 0 ili 1 na bilo koji pin u portu i to "atomski" dakle ne radi se read-modify-write nad celim portom nego procesor moze u jednoj isntrukciji da setuje jedan bit na portu sto je fenomenalna opcija i ja sam je bar prvi put bideo kod ARM STM32 i mnogo je korisna posebno zbog interapta jer ne mozes da napravis "race conditions" i da zabrljas ostale bitove na portu jer operises islkljucivo jednim bitom u jednoj istrukciji!
Opet oko platforme, sva je sreca pa je ovo ARM Smile
Pogledajte ovo, cudo ima 4 hardverska PID-a u sebi plus gomila stvari koja je specificno predvidjena za digitalno upravljive DC/DC pretvaracima bilo koje topologije!
"250-ps DPWM Pulse-Width" dsPIC moze jedino da sanja Smile

http://www.ti.com/lit/ds/symlink/ucd3040.pdf

Inace su napravili software sa GUI sa kojim moze da se prati u realnom vremenu rad pretvaraca i da se menjaju parametri, ima Auto-tuning, strasno ... Smile
Kod ovakvih procesa i procesora nema debagiranje sa breakpoint, svi znamo sta bi se tada desilo, jedno veliko kabooommm Smile

[Image: attachment.php?aid=29062]

[Image: attachment.php?aid=29063]
(03-05-2019, 11:53 AM)vedran Wrote: [ -> ]@mikikg znam, toggle sam tražio, nema je na popisu riječi. Sjetio sam se da mogu učitavanjem riječi see (datoteka see.txt) dobiti ispis u asm neke riječi, pa ispod se može vidjeti jasno kako radi :

Code:
3168 0020 0000 mov 0 , W0 
316a 0078 2f00 mov.w W0, [++W14]
316c 0007 fff4 rcall latd
316e 0007 f310 rcall !
3170 002f fff0 mov ffff , W0 
3172 0078 2f00 mov.w W0, [++W14]
3174 0007 fff0 rcall latd
3176 0007 f30c rcall !
3178 0037 fff7 bra un, 3168 
317a 0006 0000 return

I dalje nema dovoljnog objašnjenja na šta se troši čitavih 107 instrukcija (100nS) po jednom stanju led?
Ni meni nije potpuno jasno.
Upitao sam Mlađu i čekamo da se javi.

P.S.
Kad ti trebaju jako brze stvari uvek možeš umiksovati asm.
Pages: 1 2 3 4 5 6 7 8 9