DIY Electronic projects
Forth, za one sa razlčitim rasporedom vijuga... - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52)
+--- Forum: Microchip PIC (https://forum.yu3ma.net/forumdisplay.php?fid=53)
+--- Thread: Forth, za one sa razlčitim rasporedom vijuga... (/showthread.php?tid=674)

Pages: 1 2 3 4 5 6 7 8 9


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-05-2019

Ovi TI-ovi procesori inace imaju ECC RAM memoriju u sebi, to je posebna memorija sa "samo-kontrolom-korekcijom" greska, to je ozbiljna memorija, takva se koristi na serverima, tacno se zna zasto ona postoji jer se desava da RAM ne zapamti uvek bas svaki bit, desi se po nekad vrlo retko ali to je poznat problem i tako se resava!


RE: Forth, za one sa razlčitim rasporedom vijuga... - vedran - 03-06-2019

@Macola
ne znam 16-bit asm, a nešto malo sam bacio pogled. Morao bi dosta vremena izgubiti da skužim što se dešava pod haubom, a ionako prelazim na STM32. Onako letimično, naredba na adresi 316a bi valjda značila da na ++W14 sprema sadržaj W0. Ne znam koliko instrukcijskih ciklusa mu za to treba.

@mikikg
zgodno je što su memorijski prostor podijelili + upis sa jednom instrukcijom. Kako se pokazalo u praksi, jeli ima potrebe za ECC RAM u MCU?
Započeo sam čitati dokumentaciju, oko STM. Ono što sam vidio datasheet je teže "čitljiv" nego Microchip, malo je to sve razbacano. Pročitao sam ovdje temu o STM32.

Inače ne znam da li da ovdje pišem/pitam o generalnim mogućnostima STM ili da pišem u onoj generalnoj temi o tome?
Naletio sam na yt video gdje netko upisuje bootloader za usb (link ispod). Znači li to da ja mogu hex od Mecrisp upisati bez ST-link V2, koristeći samo UART?

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


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-06-2019

>>> Kako se pokazalo u praksi, jeli ima potrebe za ECC RAM u MCU?

Odgovor na to pitanje ne mogu da ti dam, nikad nisam uhvatio taj problem na MCU, to je extremno kompleksno da se uhvati, to se desi na primer na jednom bitu na jednoj lokaciji tad i ko zna kad sledeci put ... ne mozes to da usnimis/ispratis tako lako, bas je komplikovano i zato su sa ECC RAM to predupredili, postoji algoritam koji dok radi memorija prati checksum/parity i po potrebi moze da popuni jedan ili vise bitova ako zafale slucajno jer cuva checksum + ima logika ako je sam checksum problematican ... postoji i feadback informacija da kaze programu da je pocela RAM memorija da blesavi i broji koliko je puta morao algoritam da reaguje!


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-06-2019

Jedno malo off-topic pitanje ali je i vezano manje-vise.

Koliko bajtova memorije recimo zauzimaju tri variable tipa uInt8_t (unsigned char = 8bit) na 64bit procesoru?
Koliko bi mi recimo trebalo memorije da smestim hiljadu variabli tog tipa na 64bit procesoru?

Hmm, problem je sto mi treba 8KB da bi smestio 1KB : (
Treba mi milion variabli da smestim ...


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-06-2019

Za neki recnik (dictionary) mi treba da radi na serveru, ovi predhodni programeri su skarabudzili to nesto silnu memoriju na serveru su potrosili, cena opsluzivanja servisa katastrofa ...
20'000 konkuretnih konekcija kosta ~50k$ mesecno ... kinezi kad navale : ) ... mora da im to sve razbucam i napravim nov sistem, nema druge ... Smile
PS: Nije samo recnik, od ovoga sintetisu posle Speak/Voice, pretvara u Audio stream ...

Code:
龙竹坪 3 nr
龙筹股 3 nr
龙精虎猛 2 nr
龙纪元 3 nr
龙纹 11 n
龙纹剑 3 nr
...



RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

@Macola
Hehe, pogresne plocice smo uzeli, ova sto imamo je ustvari integrisana u ovoj drugoj i na ovoj drugoj MOZE da se vozi FORTH Smile

https://hackaday.com/2016/12/23/interactive-esp8266-development-with-punyforth/
A mozda moze i mecrisp-forth ...
Pogledao sam dokumentaciju, iskreno protokol hmm nije sladak, nema potrebe za tim da se bakcemo, isto sve za 1$ vise ima ceo ARM u sebi i hardwerski TCP/IP/WiFi stack.
Ovo sa slike je osnovni ESP8266 model, ima jos desetak modela, sve bolji od boljeg ...

PS: Ovaj ESP8266 utvari nije ARM jezgro, napravljeno je tako da ima sve osobine ARM-a ali je nesto mnogo unapredjeno, to je ceo SoC sa dva Xtensa LX6 Customizable DPU

Quote:Xtensa LX6 Customizable DPU
High performance with  exible I/Os and wide data fetches
Cadence provides system-on-chip (SoC) designers with the world’s  rst and only con gurable and extensible processor cores fully supported by automatic hardware and software generation. Cadence® Tensilica® Xtensa® processors, such as the Xtensa LX6 dataplane processing units (DPUs), enable SoC designers to add  exibility and longevity to their designs through software programmability as well as differentiation through processor implementations tailored for the speci c application.

https://mirrobo.ru/wp-content/uploads/2016/11/Cadence_Tensillica_Xtensa_LX6_ds.pdf
https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

PS2: Hmmm, ovaj LX6 je "customizable" CPU jezgro!!! Tu su pokrenuli ovaj "punyforth" Forth! To obecava! Smile
@Mladja ako ne koristi svoje jezgro, ovo jezgro bi verovatno probao ... Smile

[Image: attachment.php?aid=29088]

[Image: attachment.php?aid=29089]


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

Hmmm, pa tek sad povezeujm neke stvari, oduvek sam se pitao kako voze Python na ovom EPS32?
Pa mnogo prosto, prilagodili su CPU jezgro tacno tako da staje microPython unutra!

Isto kao sa Forth, Python je Interpreter i kompajler!

Quote:interactive REPL (Read-Evaluate-Print Loop). The REPL allows you to connect to a board and execute code quickly without the need to compile or upload code.
Konkretne perfomanse jezika Forth vs Python su verovatno na strani Forth-a ali ni ovo nije za bacanje, posebno za neke brzinske probe, pooooseeebno za TCP/IP ...

https://randomnerdtutorials.com/getting-started-micropython-esp32-esp8266/

---

Hehe, mora da pocnemo da pravimo svoja CPU jezgra, ta jezgra moraju da imaju bar 100MMAC, tj 100 Miliona MACOLA Operacija u sekundi Smile
Tu se bukvalno postavlja ovakvo pitanje "Gospodine Macola, kakvo vama CPU jezgro odgovara kao iskusnom izenjeru da vase sprave koje kontrolise mozete da upravljate instrukcijama koje se izvrsavaju u jednom CPU taktu?" Smile
Nema problema, to se sedne i izmozga i zapakuje u ove DPU jedinice ...

---

Koliko vidim sa ovim microPython ovako bez specialnih trikova postizu na primer 2.4MHz toogle na GPIO, to je odlican rezultat uzimajuci u obizr da u Python moze da se pise Inline Assembler i da se neke kriticne funkcije tako rese.
ESP32 vrti interni clock do 240MHz na dva jezgra ...


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

Pravim malo pregled tih arhitekura jer ima mnogo dobrih koje nismo ni "pogledali 36 godina", evo zadnji slucaj:

TM320, he he znate sta je to? Smile

Quote:Texas Instruments TMS320 is a blanket name for a series of digital signal processors (DSPs) from Texas Instruments. It was introduced on April 8, 1983 through the TMS32010 processor, which was then the fastest DSP on the market.

Eno ga u prednjem pogonu invertera za Teslu! Smile

---

Drugi procesor je Motorola 68000, kako je to dobar i snazan procesor bio za svoje vreme, to je tad bio 32/16bit procesor u odnosu na Intel 8086 (1979 GODINA, TATA SVIH INTELA SVE DO DANASJIH i7 i BUDUCIH i8) koji je izasao u isto vreme.
Cuveni Sincalair-QL je imao 68008 procesor sa "skracenim" adresnim bus-om, imao je čika Sinkler-ove Mikro-ketridze, to je bilo pre pojave PC-a Smile
Commodore Amiga je imala "full" 68000 sa custom grafickim i zvucnim chipom i tad su stigli floppy diskovi, to je radilo bolje nego bilo koji IBM PC u to vreme sa zeleno-belim MS-DOS ! Smile
Postojao je Workbech graficki operativni sistem u boji i sa misem, to nije bilo tad na IBM PC-XT u DOS, imalo je ono "kockasto" crtano text-grafikom Smile
Jedna "ekipa" je to skontala i otisla u drugu stranu i tako je nastao Apple, druga ekipa otisla na svoju stranu i tako nastao Microsoft Smile
Na kraju i jedni i drugi koriste Intelove procesore ...

---

Situacija postaje dotano veoma zanimljiva jer u celu tu pricu ulazi ni manje ni vise nego NVIDIA koju svim znamo po grafickim kartimaca, bas o tome se radi, graficki procesori, ne sto su graficki nego sto mogu da rade CUDA (stvarno se tako zove engine), koji ima ogroman broj "pipe-lines" i "proces-treads" koji se koriste konkretno kod Tesle za AI engine!!!

Dakle pod istom kapom:
- 2 x Denver2 (NVIDIA custom Cortex A) jezgra
- 4 x CortexA57 jezgra
- 256 x CUDA jezgra

https://www.nvidia.com/en-us/data-center/pascal-gpu-architecture/
https://blogs.nvidia.com/blog/2016/08/22/parker-for-self-driving-cars/

[Image: attachment.php?aid=29090]


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

Nas je Microchip malo-vise "zaludjivao" svojom tehnologijom, ja sam odavno postavio dva pitanja, zasto im se prvo kontroleri ne prave manjim procesom proizvodnje i zasto (tada) nisu imali multy-core jezgra, Samsung stigao na 8nm tehnologiju, pakuju u Exynos 9820 2xCortexM4 + 2xCortexA75 + 4x Cortex A55 i sve se vrti na GHz clock.

https://www.anandtech.com/show/13599/samsung-announces-8nm-exynos-9820-with-trigroup-cpu-design

Malo "vise" me to bode, jer PIC16F84 izradjen u 8nm tehnologji bi mogao bez problema da se vrti na 1GHz, da trosi manje struje nego ovaj na 4MHz i celo PIC jegro bi zauzelo mesta na silikonu kao trenutno sto im zauzima jedan na primer interni tajmer.
Dakle samo unapredjenjem procesa izrade mogli bi na isto parce silikona da spakuju oko 50 komada PIC16F84 jezgra koja se vrte na 1GHz+.
Nemoj samo da kazete da oni neznaju za to, znaju znaju, sve te firme su u "komsiluku", sve se zna ko-sta radi ...


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

@Macola @Vojce
Mnogo me "bode" sto godina kada se naprimer radio onaj foto-spektralni analizator sa 8080 (i PIC je bio umesan), tih godina je Texas Instruments imao ono TMS320 jezgro koje tad bilo 10+ godina na trzistu, tada sa tim DSP je taj spektrlni analizator mogao da radi u realnom vremenu, sa sve FFT analizom i sta je sve trebalo, mi smo to radili softwerski sa 8080 na PLC i softwerski na 8086 na PC i analize su trajale vise desetina sekundi sa sve zaglupima oko integracije pa smo radili Sample+Hold nad nekih silnim Megaohm od foto cevki ... tada se koristile Burr Brown INA101, za njih smo "znali" ... Texas Instruments nam je bio u fazonu "Daj SN7400" ...
Na kraju TI kupio BB i mi umesto da smo makar pogledali ta DSP jezgra mi se mucili sa PIC-om ... Da smo pratili TI samo zbog tih DSP jegra 10 godina pre bi se uhvatili ARM-a jer su ih oni medju prvima poceli prave, sad bi bili na Cortex-A57 "opusteno" sa sve Forth-om !!! Smile

---

[Image: optical-emission-spectroscopy-500x500.jpg]

[Image: qn50420000006zhl.gif] [Image: qn50420000007rmx.gif][Image: qn50420000007rnf.gif] [Image: oes-analysis-640x480.jpg] [Image: spectrolab.jpg]


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-08-2019

Pre 20 godina je TMS320 imao EPROM/ROM u sebi, isntrukcije su bile 16/32bit i izvrsavale se za 80ns, tada je PIC bio 8/14bit i instrukcije mu bile 400ns.

TMS320 je sad ustvari Piccolo i Delfino serija mikrokontrolera! Smile
Po meni su to najbolji mikrokontroleri trenutno na trzistu (oni ih zovu DSC, digital signal procesori), nije ARM, to je to njihovo jezgro koje radi neke stvari posebno sa motorima mnogo dobro.

TMS320F28076 je Piccolo, onaj malac sa "najboljim" PWM u svetu mikrokontrolera, zato je on u pogonu motora Tesle Model 3 i verovatno Roadster.
Sa tim jedino moze da imas ubrzanje od 0-100km/h za 1.9sec bez menjaca, tolika dinamika treba, o 0Hz do ko zna koliko MHz u 6-faznom motoru Smile


RE: Forth, za one sa razlčitim rasporedom vijuga... - vedran - 03-17-2019

Jeste li pomislili da sam nestao hehe

Stigla blue pill STM32F103. Hex ubačen bez ST-LINK V2, preko serijskog porta (kako automehaničari kažu, upalilo na zub  Big Grin ).

Sad možemo nastaviti gdje smo stali



Iako nisam još proučio koji sve registri utječu na postavljanje porta, dobio sam frekvenciju uključivanja i isključivanja od 450 kHz pri duty od 22,5% sa sljedećim kodom:
Code:
$40001018 constant RCC_APB2ENR  ok.
$40010800 constant GPIOA_CRL  ok.
$4001080c constant GPIOA_ODR  ok.
: set $00000100 RCC_APB2ENR bis! $11111111 GPIOA_CRL ! ;  ok.
: main begin $ffff GPIOA_ODR ! $0000 GPIOA_ODR ! again ;  ok.
set  ok.
main



RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-17-2019

Probaj sledecu stvar, bice ti korisno da znas kako stoji "tajming".
U main fuhnkciji dopisi tako da se ODR setujes/resetujes na primer 10 puta, napisi 10 puta komandu za set i 10 puta komandu za reset (ne for/next petlje), set pa reset, set pa reset i tako 10 puta pa onda na kraju "again".

Tako ces dobiti bolji utisak koliko treba da izvrsi jednu komandu za setovanje, takodje bi trebalo da se popravi duty na 50% bar za tih prvih 10 impulsa.
Asimetrija (<>50% duty) se desava jer programu treba vise/dodatno vremena da skoci sa zadnje linije "again' na "begin" nego sto mu treba da setuje port.


RE: Forth, za one sa razlčitim rasporedom vijuga... - Macola - 03-17-2019

(03-17-2019, 12:02 AM)vedran Wrote: Jeste li pomislili da sam nestao hehe

Stigla blue pill STM32F103. Hex ubačen bez ST-LINK V2, preko serijskog porta (kako automehaničari kažu, upalilo na zub  Big Grin ).

Sad možemo nastaviti gdje smo stali



Iako nisam još proučio koji sve registri utječu na postavljanje porta, dobio sam frekvenciju uključivanja i isključivanja od 450 kHz pri duty od 22,5% sa sljedećim kodom:
Code:
$40001018 constant RCC_APB2ENR  ok.
$40010800 constant GPIOA_CRL  ok.
$4001080c constant GPIOA_ODR  ok.
: set $00000100 RCC_APB2ENR bis! $11111111 GPIOA_CRL ! ;  ok.
: main begin $ffff GPIOA_ODR ! $0000 GPIOA_ODR ! again ;  ok.
set  ok.
main

Vedran,

Jesi li postavio brzinu tog output pina (2MHz, 10MHz, 50MHz) u registru GPIOx_CRL_MODEy?

Nisam se zavlačio u tvoje setovanje tog registra, samo pitam.


RE: Forth, za one sa razlčitim rasporedom vijuga... - vedran - 03-17-2019

@mikikg ima smisla probat ću čim stignem

@Macola još se mučim s tumačenjem datasheet-a, za razliku od Microchip ovdje se treba malo više pomučiti. Malo se mučim s adresama registara. Gledam registar GPIOx_CRL_MODEy, ali nemam blage još kako doći do adrese i s čime ju postaviti i koji bit što određuje.


RE: Forth, za one sa razlčitim rasporedom vijuga... - gorankg - 03-17-2019

Pogledaj Reference Manual RM0008. Imaš objašnjeno sve.
Inače, to sa merenjem frekvencije na pinu ti ne znači mnogo jer nikad nećeš koristiti na taj način.
Kreni sa tajmerima pa ćeš imati dovoljno za rad za narednih nedelju dana.


RE: Forth, za one sa razlčitim rasporedom vijuga... - vedran - 03-17-2019

@gorankg već je otvoren tab i pinned. Krećem od osnovnih stvari zasada puževim korakom, ali drugačije i ne ide. Kako je krenulo bit će i ovo nedjelju dana Smile ima tu još dosta učenja


RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 03-17-2019

Pogledaj ovde:
http://www.elitesecurity.org/p3794487

Tu sam objasnio kako da se tumaci RM0008


RE: Forth, za one sa razlčitim rasporedom vijuga... - vedran - 04-03-2019

Malo sam pohvatao to sve skupa. Datasheet-ovi su zapravo organiziraniji nego što se činilo na prvu. 
Mecrisp sam malo pomnije proučio, source kod je organiziran. Zato je i jednostavno prenosiv na druge mcu. Bit će red zagaziti svakako u assembler za neke vremenske operacije.
Bitno mi je da pohvatam osnovno, da mi postane upotrebljiv jezik i mcu, da dođem u točku gdje se ostalo uči usput kroz rad.

@Macolakg slučajno sam dobro postavio registre za rad na najvišljoj freq. 

@mikikg poslušao sam savjet (morati ću prokopati malo teme koje imaju ovdje i na ES) i puno puta sam ponovio unutar loop da uključi i isključi output pin.

Rezultati:
Dobio sam da je frekvencija oko 1 MHz kao na slici ispod. No i dalje postoji ta "praznina" vjerojatno skok na početak petlje. Na jednoj od slika sam postavio kursore gdje se vidi skok od oko 1 us .

E sad, nešto čudno se dešava, i to se može vidjeti na svim slikama, nakon svaka dva impulsa imaju malo kraće pauze. Na zadnjoj slici se vidi ta pauza, jedino što meni pada na pamet je da je to zato šta sam prilikom pisanja naredbe, u svakom sljedećem redu postavljao pin (stanje u registru) u "0" i "1" pa da "enter" odnosno novi red ne oduzima 240 ns






RE: Forth, za one sa razlčitim rasporedom vijuga... - mikikg - 04-03-2019

Dosao si do finesa kojih se ticu ajd da kazem main() programa, to ti je glavna petlja gde ces izvrsavati svoj code, zbog cele postavke tu imas i UART koji ima svoje neke interapte i hendlere, to gde ti se signal "produzio" tada je najverovatnije CPU bio u interapt rutini, to je neminovno da se dogadja kada ima interapta, sad recimo da imas samo JEDAN, imaces ih realno u programu 5-10, zato u main() skoro NIKAD ne mozes da realizujes precizan tajming i zbog toga se koriste interni HW tajmeri koji te stvari rade nezavisno a na programu je da se izbori sa sinhronizacijom dogadjaja.