STM32 osciloskop?

Imam jedan ovakav:

formatting link

STM32 dev board s 2.4" TFT-om viska pa trazim neke projetke za mini osciloskop. Naso sam par komada ali me zanima da li se je netko s grupe vec igrao s takvim projektima pa zna koji su upotrebljivi(ji).

Trazim iskljucivo samostalni mini osciloskop, znaci ne ovakav projekt:

formatting link

koji zahtijeva PC s instaliranim programom/driverom nego nesta ovakvoga tipa:

formatting link

formatting link

Manje-vise upotrebljivi projekti postoje cak i za AVR na 8 Mhz + ekran od Nokie 3310 pa bi mini osciloskop s ARM-om na 72 Mhz trebao imati cak i neke (istina minimalne i prilicno ogranicene) mogucnosti primjene u realnim uvjetima. Naravno, uz uvjet da je firmware napisan kvalitetno i da je maximalno optimiziran - zbog toga i trazim preporuku za neki od takvih projekata.

Isto tako me zanimaju i kvalitetni projetki za LCR i ESR metre s istim hardware-om.

ps Cini se da ce mi za tu razvojnu plocicu trebati novi ekran jer je prestao raditi touch a i pritisak na lijevi dio ekrana ponekad uzrokuje da svi pixeli poprime bijelu boju. Trazio sam takav 2.4" TFT montiran na plocicu koja pase na ovaj dev board ali su svi ti shield-ovi koji se mogu kupiti zasebno (barem oni koje sam naso) za montazu na Arduino i header-e imaju drukcije pozicionirani header s konektorima - ili se moze kupiti samo 'cisti' ekran kojeg treba zalemiti. Pa ako netko zna gdje naruciti samo LCD modul s prvog linka. Nije valjda da se takva izvedba LCD modula s tim TFT-om moze kupiti samo u kompletu s STM razvojnom plocicom :-/

pps Sta koristite za razvoj - CooCox ili neki drugi toolchain?

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo
Loading thread data ...

Ovaj o'skop ima sampling fq 461 kSps, dakle prema Mr. Nyquist-u uporabljiv je do 230 kHz (ako i to!) a u slicnoj kategoriji su i manje-vise svi DIY osciloskopovi bayirani na rijesenju sa jednim MCU-om. Pitanje je dali ti

smatra DIY-rijesenjem koristi FPGA+AD kao npr. ovaj od 30 MSps:

formatting link

popis ovdje:

formatting link
, pa navali

LCD na tvom boardu je HY-280_262K, sa LCD driverom ILI9325 i Touch Screen driverom ADS7843. ST outsourc-a ovaj board i masivno proizvodi Shenzen MYDY,

formatting link
, a ima ih i na ebayu
formatting link

RIDE, IAR-EWARM (IAR mi sluzi i za TI & NXP i jos ponesto)

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Sad sam tek vidio post, nisam bio na newsima od prije Bozica pa sve do jucer a jucer valjda nisam cuo zvuk novog posta.

U vezi osciloskopa - sta ja znam, trazim nesta pa da iskoristim tu plocicu viska. Za vecinu stvari koje mi padaju na pamet bi mi bili dovoljni i AVR-ovi pa trazim nesta sta bi iskoristavalo vise processorske snage ili nesta za sta bi bio neophodan touch screen s tolikom rezolucijom i u boji.

Mozda da slozim neki visekanalni logic analyzer pa da mogu debuggirati razne SPI, 1-wire i I2C sklopove. Tu bi opet frekvencija sample-iranja trebala biti bar 10 puta veca od takta signala koji se snima :-/

Hvala na informacijama!!

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Moj savjet ti je: nemoj upadati u rekurzivni problem "debugiranja debuggera" prilikom izrade DIY mjernih instrumenata, nego si nabavi neki decentni tool

free software (koji ide uz njega) "zna" dekodirati i SPI, 1-wire i I2C.

-- -- Stonethrower

formatting link

9A5DGM
Reply to
Stonethrower

Da li po necemu iz nekog od file-ova od projekta mozes prepoznati koji je za ovo koristen IDE?

formatting link

To je jedan od 18 demo-a s CD-a koji dolazi uz tu STM plocicu.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Arm/Keil uVision

formatting link

--
- while (1); 

"I don't believe anything I hear and only half of what I see..."
Reply to
while(1);

Aaaaaaaa, sad vidim da ne samo da se u hrpi file-ova u object folderu u command line parametrima vidi path na Keil folder nego k tome jos i u RAM.ini i STM32DBG.ini pise:

This file is part of the uVision/ARM development tools. Copyright (c) 2005-2007 Keil Software. All rights reserved. This software may only be used under the terms of a valid, current, end user licence from KEIL for a compatible version of KEIL software development tools. Nothing else gives you the right to use this software.

Hvala!!

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Za svaki kreirani projekt Keil IDE/uVision stvori project-file sa ekstenzijom .uvproj. To je XML filek kojeg mozes otvoriti i notepad-om i u kojem pise svce sto ti treba za prepoznavanje, od imena IDE-a do memorijske mape target-iranog MCU-a.

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Tnx, nisam ga jos koristio.

Ako si radio simulacije s Proteusom - zvuci nevjerojatno ali nigdje ne mogu pronaci gdje se (i da li se) nakon kompajliranja mogu procitati podaci o potrosenoj programskoj memoriji i RAM-u ko sta se to ispise kad se kompajlira s AVR Studiom :-/

Radim nesta specificno s KS0108 ekranom pa ne mogu iskoristiti nijedan library kojeg sam naso niti trenutno imam ekran s tim kontrolerom pa sam po prvi put iso raditi simulaciju. Iako sam poceo tek u petak navecer je source vec poprilican (dosta toga sam ubacio iz starih projekata) a par KB su mi pojele i 24x48 bitmape. Kod kompajliranja nemam indikaciju koliko sta zauzima a bezveze mi je projekt samo zbog toga prebacivati u AVR Studio.

Ne mogu pronaci niti da li se prilikom simulacije moze vidjeti s kolikim postotkom brzine u odnosu na realtime simulacija radi :-/

Inace mi se je desila i greska (odnosno na desetke gresaka) koja je opisana na 100 mjesta na netu - kad compiler bez obzira na ispravan kod izbacuje gresku 'multiple definition':

formatting link

formatting link

formatting link

formatting link

Makefile se u Proteusu dosta razlikuje od Makefile-a u AVR Studiu i iako se i preko IDE-a mogu ubacivati dodatni parametri nisam to uspio rijesiti na niti jedan od opisanih nacina niti uz sve podatke koje sam procitao o uzroku greske pa sam na kraju sve include-ane file-ove u kojima su deklarirane funkcije ili prototipovi strpao u main.c i greske su onda nestale.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Uz pretpostavku da programiras u C-u (WinAVR/GCC), onda znas da se kompajler i njegove postavke pozivaju preko Makefile fileka. (Proteus samo izvrsava program sadrzan u HEX fileku, ali kompajliranje i generiranje HEX-a je u potpunosti u WinAVR/GCC domeni). Ono tvoje nabrojano mozes dobiti editirajuci linije u Makefile-u koje se odnose na postavke linkera. Npr. memprijska mapa se zapisuje u .map fileku kojeg generira linker ali se ta komanda mora prenijeti linkeru eksplicitno navodeci to kao parametar (flag), mislim da se taj flag zove LDFLAGS.

Ovdje ti ne mogu direktno pomoci, ali Proteus ima demo "\VSM for AVR\AVR and SED1520" pa probaj izvuci nesto iz toga, barem koncept. Makefile ima direktno veze sa kompajlerom i njegovim postavkama (pretpostavljam WinAVR/GCC) a manje sa Proteus-om.

Rekao bih da Proteus nije ni zamisljen kao real-time simulator. Proteus je primarno EDA tool za hardware design (schematic, PCB) i najbolje sto mozes dobiti je step-by-step debugging u sluzbi analize hardware-related problema. Ta step analiza odnosi se na assembler (tj. HEX file kojeg "upisujes" u simulacijski model procesora) ali nista od C-level debugginga i real-time simulacije. Za ovo ti treba RTD (real-time debugger / emulator), tracer (software u funkciji RTD-a, "offline" debugger) i profiler (execution time calculator), sve troje dio ili plug-in kompajlera (GCC).

Ocito Proteus nema nista s tim, vec je to compiler/linker issue/problem. Postavke GCC/linker-a mijenjas u Makefileu, otvori ga i editiraj text editorom. Za detalje o Makefile i njegovim flagovima, ima toga podosta na 'netu. Preporucujem sluzbenu GCC/GNU dokumentaciju na

formatting link

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Da ali, ko sta sam reko, makefile kojeg je kreirao Proteus je u odnosu na Makefile kojeg kreira AVR Studio neprepoznatljiv. Mislis da bi editiranjem Makefile-a mogo postici da Proteus u VSM Studio Output prozoru nakon kompajliranja ispise:

AVR Memory Usage

---------------- Device: atmega8

Program: xxxx bytes (x.x% Full) (.text + .data + .bootloader)

Data: xxxx bytes (x.x% Full) (.data + .bss + .noinit)

ko sta se nakon Build ispise u AVR Studiu?

Napravio sam simulaciju ATmega8 + KS0108 i to radi OK. Neko vrijeme je radilo cak i kad je projekt bio organiziran u .h i .h file-ove koji su se include-ali s #include direktivama ali su se u jednom trenutku pocele javljati greske 'multiple definition of' i nakon toga sam sadrzaje svih .h i .c file-ova koji su sazdravali prototipove i definicije funkcija morao kopirati u main.c pa izbaciti sve #include direktive za te file-ove.

Ako se source napise direktno u Proteusu ili se umjesto .hex-a u simulirani mikrokontroler ubaci .elf file kojeg je napravio Avr Studio onda se cini da radi i high-level debugging!!

U nekim sample-ovima koje sam pokrenuo se je na dnu ispisao Warning da simulacija zbog zahtjevnosti ne radi u realnom vremenu (u tom je trenutku processor bio na 50% pa program valjda koristi samo jednu od dvije jezgre). U mojoj se simulaciji to upozorenje ne ispisuje, processor mi je na oko 12% a pauze koje sam u program ubacio odgovaraju pauzama kakve bi bile u realnom vremenu pa se cini da se simulacija odvija s brzinom 100%. Medjutim, prilikom slanja podataka u ekran to ide sporije nego bi islo u stvarnosti a nigde ne vidim indikaciju da bi u tim trenucima brzina simulacija pala.

Znas mozda da li se s KS0108 kontrolerom moze komunicirati na clock-u od 8 MHz bez ubacivanja timing pauza? Jer u ovoj simulaciji komunikacije s ekranom na 1, 2 i 4 MHz sve radi OK a na 8 MHz Proteus javlja logic contention 8 data linija za ekran (mada se na ekranu i dalje sve prikazuje ispravno). S obzirom da sam na YT vidio da su ljudi na KS0108 ekranima pokretali Wolfenstein, cisto sumnjam da ne bi mogo primati podatke kad mikrokontroler radi na MHz pa pretpostavljam da je prijavljivanje logic contention-a jos jedan od Proteus-ovih hirova.

Sve sam vec to davno procitao ali ovdje Makefile stvara Proteus i taj Makefile ko da ima drugu syntaxu od onog kojeg slozi AVR Studio. Ko da je u pitanju neki preprocessor.

Sad sam u sred izrade uredjaja pa ne stignem proucavati kako sve to skupa funkcionira tako da cu ovo dovrsiti s kompletnim programom strpanim u main.c a kad cu imati vremena cu probati skuziti u cemu je stvar kad se koristi #include.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Ustvari krivo sam to zakljucio - na taj se nacin moze debuggirati uz kod u assembleru ali upotpunjen s dosta dodatnih informacija. Dobro si reko u vezi debuggiranja s Proteusom - ne znam kako sam mogo pomisliti da bi se iz .elf file-a mogo rekontruirati source u C-u :-))

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Nisam probao, ali rekao bih da se output linkera zapisuje u .map file a ne na stdout, pa taj ispis Proteus nemoze prihvatiti kao stdin. Drugim rijecima, linker ne salje ispis na ekran nego u file. Eventualno mozes nakon kompajliranja vanjskim editorom zahvatiti .map file iz Proteusa.

Netko je na sajtu StackOverflow upitao nesto slicno (

formatting link
) pa probaj izvuci nesto od toga. (Mozda te spasi u SO odgovoru spomenuti "inline")

Cuo jesam za ovo ali nisam probavao jer mi nije niti nuzno trebalo. Ja sam u tih nekoliko projekata sa KS0108 uvijek copy-and-pasta-o vecinu funkcija, pa onda i te delay-e. Nego, zasto ti smetaju delay/pauze ? Ako ti je u pitanju cekanje na delay unutar main()-a pa ti program zashtopa/stoji svaki put kad naleti na delay, probaj koristi koncept counter-a koji broje otkicaje Timer0 (tzv. "ticks" u RTOS-evima) pa uz pomoc if-ova i stanja counter-a osiguravas nesmetanu main petlju, npr. umjesto funkcija pauze od 1 ms "delay_ms(1)" definiraj Timer0 ISR s nekom zgodnom brzinom recimo 100us i counter kojeg inkrementiras u tom ISR-u a, npr.:

ISR_funkcija_Timer0_overflow() { brojac_100mikrosekundi += 1; Timer0(sadrzaj_postavi_na_100us_overflow); }

a u main()-u koristis ovakav izraz:

if( brojac_100mikrosekundi > 10 ) /* 10 x 100 us = 1 ms */ { /* cini nesto */ }

a na slican nacin definiras i "normalni" delay ali tako definiran delayt ti nece shtopati program.

Ako mislis na

formatting link
, da to je cool ali ne pise s koliko je fps to izveo. To je samo raycasting "zidova" koje slice na Wolfenstein. Nize ispod videa na YT veli i da je koristio "slightly modified KS0108 library" ali nema objasnjenja sto je modificirao. Malko sam pogledao source na github-u ali u tom source-u nije naveden link na spomenuti KS0108 library pa nisam dalje kopao. Mozda cu se poigrati malo s ovim "Wolf3D" kad nadjem vremena i motivacije.

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Iz Proteusa tesko, osim ako Proteus nema otvoren interface prema gdb serveru, u sto sumnjam (ali nisam niti probao), ali inace moze, to sto ti nazivas rekonstrukcija, .elf -> gdb -> C source, vidi:

formatting link
Nisam dugo vec na AVRu (vec vise godina ja sam na ARMu), pa vjerovatno ima AVR/gdb-related novosti za koje neznam.

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Ako pod "rekonstrukcija" mislis na "decompilation technique" iliti reverse engineering (RE) iliti translacija odn. pretvaranje ASM-a u C, i to je moguce, samo je ovo posve drugi par cipela. Odustani od RE, programiraj u C-u od pocetka.

--
Stonethrower 
www.dgmicrosys.com 
 Click to see the full signature
Reply to
Stonethrower

Ne vidim ga u folderu gdje je projekt (iskljucio sam Embed files) tako da je mozda negdje u

Tnx! Za sad cu ovaj projetk dovrsiti s source-ovimam u jednom file-u a kad uhvatim vremena cu prouciti sta treba napraviti.

Ne smetaju mi nego ne znam koliko ih treba za komunikaciju za 8 MHz, u low-level driverima za KS0108 vidim da je na par mjesta samo ubacen po jedan NOP:

asm("nop");

ali ne znam za koliki je to clock i da li bi na 8 MHz ta pauza trebala biti veca.

Nemam problema s tim rutinama, delay() u main-u mi je trebao da bi mogo generirati video od simulacije pa da mogu poslati kupcu na odobrenje a so obzirom da cijeli SW jos nije dovrsen sam s kratkim programcicem u main-u simulirao kako ce program raditi kad bude dovrsen (bila je to simulacija unutar simulacije :-) ) pa su mi tu trebali delay-ovi od nekoliko sekundi.

Evo kako mi recimo izgleda rutina koju sam napisao jucer a koja omogucava de se u toku rada uredjaja s tipkama korigira parametar na ekranu. Sve skupa radi u interrupt-u a simulirao sam typematic rate i pocetnu pauzu (od trenutka pritiska tipke pa do pocetka ponavljanja generiranja novih pritisaka) slicno ko sta je slozeno i na kompjterskim tastaturama. Rutina je tek napisana i moguce da ima bug-ova (mada za sad radi OK). Znam da nisu te sve variable trebale biti static ali kako vidis to je tek skica - po komentarima mozes vidjeti da sam u ranijoj verziji koristio drugi algoritam pa da sam naknadno neke variable izbacio itd. Znaci ovo je tek razvojna verzija i to je samo djelic programa kojega sam napisao od petka navecer:

#define INPUT_PORT PORTB // na portu B su gumbi #define INPUT_PINS PINB

#define BTN_PLUS PB0 // PIN xx = PLUS #define BTN_MINUS PB1 // PIN xx = MINUS #define BTN_MASK (1 Wolfenstein

Da, na to sam mislio. Jos sam neki dan skinuo source-ove pa cu ih jednom prouciti.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

...negdje u Documents and Settings.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Pod rekonstrukcija sam mislio na to da bi se u Proteus ubacio .elf iz AVR Studia pa bi se onda nakon stiskanja pauze mogo vidjeti originalni izvorni kod u C-u i u njega ubacivati breakpoint-e ali mislim da .elf ne sadrzi source nego samo imena variabli i funkcija pa se u debug prozoru otvara assemblerski kod s dodatnim komentarima (imena variabli, funckija itd.).

Trenutno i ja proucavam Cortex M3 datasheet-ove.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Radi bez problema i na 8 MHz. Stigo mi je ekran, ovo:

formatting link

radi na 4 MHz ali sam isprobao i na 8 MHz i sve je bilo OK.

Ovo u prvom videu gdje sam stavio potpis je Easter Egg i kupac to nece vidjeti nego mogu aktivirati jedino ja - nakon isporuke ce se na ekranu odmah pojaviti brojke.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

ovako izgledaju 'seljoberske'?

Reply to
vaso

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.