Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

STM32 osciloskop?

145 views
Skip to first unread message

Chupo

unread,
Dec 21, 2014, 9:01:02 AM12/21/14
to
Imam jedan ovakav:

http://tinyurl.com/nyjecej

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:

http://tomeko.net/miniscope_v2c/

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

http://youtu.be/b6bZfzHTtvA

http://youtu.be/llDmjxUtoRA

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
http://tinyurl.com/customleddriver

Chupo

Stonethrower

unread,
Dec 26, 2014, 7:30:02 PM12/26/14
to
> Trazim iskljucivo samostalni mini osciloskop
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
stvarno treba ovakvo smiješno mali sampling, i što možeš skopati s ovom
igrackom osim možda audio-sklopove. Za veci/bolji sampling a da se i dalje
smatra DIY-rijesenjem koristi FPGA+AD kao npr. ovaj od 30 MSps:
http://goo.gl/WLufTo

> preporuku za neki od takvih projekata.
popis ovdje: http://goo.gl/DtXeRw , pa navali

> novi ekran
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,
http://goo.gl/MgjLBa , a ima ih i na ebayu http://goo.gl/TtOxZf

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

--
Stonethrower
www.dgmicrosys.com
9A5DGM

Chupo

unread,
Jan 3, 2015, 9:30:02 AM1/3/15
to
In article <m7ktna$5ke$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> 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
> stvarno treba ovakvo smijeąno mali sampling, i ąto moľeą skopati s ovom
> igrackom osim moľda audio-sklopove. Za veci/bolji sampling a da se i dalje
> smatra DIY-rijesenjem koristi FPGA+AD kao npr. ovaj od 30 MSps:
> http://goo.gl/WLufTo
>
> > preporuku za neki od takvih projekata.
> popis ovdje: http://goo.gl/DtXeRw , pa navali
>
> > novi ekran
> 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,
> http://goo.gl/MgjLBa , a ima ih i na ebayu http://goo.gl/TtOxZf
>
> > tool-chain
> RIDE, IAR-EWARM (IAR mi sluzi i za TI & NXP i jos ponesto)
>

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!!

Stonethrower

unread,
Jan 5, 2015, 8:01:02 PM1/5/15
to

> Mozda da slozim neki visekanalni logic analyzer pa da mogu debuggirati
> razne SPI, 1-wire i I2C sklopove. Tu bi opet frekvencija sample-iranja
Moj savjet ti je: nemoj upadati u rekurzivni problem "debugiranja debuggera"
prilikom izrade DIY mjernih instrumenata, nego si nabavi neki decentni tool
sa ebaya. Ja sam sretni vlasnik ovog http://goo.gl/2GQ1q2 i za tu smješnu
cijenu za manje od $12 dobijaš 8-ch USB logic analyser do 24MHz a Windows
free software (koji ide uz njega) "zna" dekodirati i SPI, 1-wire i I2C.

-- --
Stonethrower
www.dgmicrosys.com
9A5DGM

Chupo

unread,
Jan 21, 2015, 1:30:02 PM1/21/15
to
In article <m7ktna$5ke$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> > tool-chain
> RIDE, IAR-EWARM (IAR mi sluzi i za TI & NXP i jos ponesto)
>

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

https://www.dropbox.com/s/54szjexxnllpkit/koji_IDE.rar

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

while(1);

unread,
Jan 21, 2015, 5:20:26 PM1/21/15
to

> In article <m7ktna$5ke$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
> [removethis]@yahoo.com> says...
>>> tool-chain
>> RIDE, IAR-EWARM (IAR mi sluzi i za TI & NXP i jos ponesto)
>>
> Da li po necemu iz nekog od file-ova od projekta mozes prepoznati koji
> je za ovo koristen IDE?
>
> https://www.dropbox.com/s/54szjexxnllpkit/koji_IDE.rar
>
> To je jedan od 18 demo-a s CD-a koji dolazi uz tu STM plocicu.

Arm/Keil uVision (www.keil.com)

--
- while (1);

"I don't believe anything I hear and only half of what I see..."

Chupo

unread,
Jan 21, 2015, 6:01:03 PM1/21/15
to
In article <m9p8n9$q1k$1...@nntp.amis.hr>, while(1); <n...@really.me>
says...
> Arm/Keil uVision (www.keil.com)
>

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:

<start copy/paste>
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.
<end copy/paste>

Hvala!!

Stonethrower

unread,
Jan 24, 2015, 10:01:02 AM1/24/15
to
> Da li po necemu iz nekog od file-ova od projekta mozes prepoznati koji
> je za ovo koristen IDE?

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
9A5DGM

Chupo

unread,
Jan 25, 2015, 2:01:02 AM1/25/15
to
In article <ma0bj7$5b8$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> 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.
>

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':

http://www.avrfreaks.net/forum/error-multiple-definition-winavr

http://www.avrfreaks.net/forum/avr-studio-compilier-error

http://www.avrfreaks.net/forum/multiple-definition-error-c-atof

http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html

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.

Stonethrower

unread,
Jan 25, 2015, 10:30:02 AM1/25/15
to
> 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 :-/
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.

> Radim nesta specificno s KS0108 ekranom pa ne mogu iskoristiti nijedan
> ...
> Makefile se u Proteusu dosta razlikuje od Makefile-a u AVR Studiu
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.

> Ne mogu pronaci niti da li se prilikom simulacije moze vidjeti s
> kolikim postotkom brzine u odnosu na realtime simulacija radi :-/
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).

> kojima su deklarirane funkcije ili prototipovi strpao u main.c i greske
> su onda nestale.
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
https://gcc.gnu.org/onlinedocs/

--
Stonethrower
www.dgmicrosys.com
9A5DGM

Chupo

unread,
Jan 26, 2015, 5:30:02 PM1/26/15
to
In article <ma30r0$eai$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> 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.
>

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?

> > Radim nesta specificno s KS0108 ekranom pa ne mogu iskoristiti nijedan
> > ...
> > Makefile se u Proteusu dosta razlikuje od Makefile-a u AVR Studiu
> 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.
>

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.

> > Ne mogu pronaci niti da li se prilikom simulacije moze vidjeti s
> > kolikim postotkom brzine u odnosu na realtime simulacija radi :-/
> 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.


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!!


> 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).
>

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.

> > kojima su deklarirane funkcije ili prototipovi strpao u main.c i greske
> > su onda nestale.
> 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
> https://gcc.gnu.org/onlinedocs/
>

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.

Chupo

unread,
Jan 27, 2015, 2:30:02 AM1/27/15
to
> 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!!
>

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 :-))

Stonethrower

unread,
Jan 27, 2015, 6:01:02 PM1/27/15
to
> Mislis da bi editiranjem Makefile-a mogo postici da Proteus u VSM Studio
> Output
> prozoru nakon kompajliranja ispise:
> ko sta se nakon Build ispise u AVR Studiu?
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.

> pocele javljati greske 'multiple definition of' ...
Netko je na sajtu StackOverflow upitao nesto slicno ( http://goo.gl/xaNExZ )
pa probaj izvuci nesto od toga.
(Mozda te spasi u SO odgovoru spomenuti "inline")

> Znas mozda da li se s KS0108 kontrolerom moze komunicirati na clock-u
> od 8 MHz bez ubacivanja timing pauza?
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.

> Wolfenstein
Ako mislis na http://goo.gl/CR8bqI , 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
9A5DGM

Stonethrower

unread,
Jan 27, 2015, 6:30:01 PM1/27/15
to
> da bi se iz .elf file-a mogo rekontruirati source u C-u :-))
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: http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging
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
9A5DGM

Stonethrower

unread,
Jan 27, 2015, 6:30:02 PM1/27/15
to
> rekontruirati source u C-u :-))
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
9A5DGM

Chupo

unread,
Jan 27, 2015, 8:01:02 PM1/27/15
to
> Ne vidim ga u folderu gdje je projekt (iskljucio sam Embed files) tako
> da je mozda negdje u
>

...negdje u Documents and Settings.

Chupo

unread,
Jan 27, 2015, 8:01:02 PM1/27/15
to
In article <ma95jt$pr2$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> 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: http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging

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.).

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

Trenutno i ja proucavam Cortex M3 datasheet-ove.

Chupo

unread,
Jan 27, 2015, 8:01:02 PM1/27/15
to
In article <ma94fs$p77$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> 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.
>

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

> > pocele javljati greske 'multiple definition of' ...
> Netko je na sajtu StackOverflow upitao nesto slicno ( http://goo.gl/xaNExZ )
> pa probaj izvuci nesto od toga.
> (Mozda te spasi u SO odgovoru spomenuti "inline")
>

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

> > Znas mozda da li se s KS0108 kontrolerom moze komunicirati na clock-u
> > od 8 MHz bez ubacivanja timing pauza?
> 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 ?

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.

> 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()

<snip>

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

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 << BTN_PLUS) | (1 << BTN_MINUS) // maska za
repeat

#define F_CLOCK 1000000UL // f = 1 MHz
#define SOFTCLOCK_FREQ 100 // SW_CLOCK = 100 Hz

#define RPT_DELAY 0xff // odredjuje delay za pocetak ponavljanja
kod drzanja tipke
#define RPT_SCALE 0x10 // odredjuje brzinu ponavljanja kod
drzanja tipke

// izracunaj SW prescaler za timer
#define TMR1_SCALE ((F_CLOCK*10)/(2048UL*SOFTCLOCK_FREQ)+9)/10

/* interrupt */
ISR(TIMER1_OVF_vect)
{
static uint8_t scaler = TMR1_SCALE;
//static uint8_t last_state_PLUS; // proslo stanje gumba +
//static uint8_t last_state_MINUS; // proslo stanje gumba
-
static uint8_t last_state_ALL; // proslo stanje svih gumba
//static uint8_t state_PLUS; // trenutno stanje
gumba +
//static uint8_t state_MINUS; // trenutno stanje
gumba -
static uint8_t state_ALL; // trenutno stanje svih gumba
static uint8_t rpt_delay_COUNT = RPT_DELAY; // brojac delay-a za
repeat
static uint8_t repeat_scaler = RPT_SCALE; // brojac trajanja
drzanja gumba
static uint8_t cekaj = 0xff; // flag za repeat
algoritam kod drzanja gumba
static uint8_t flag = 0; // flag za repeat algoritam
kod drzanja gumba

/* SW prescaler */
if (!--scaler) // f = 100 Hz
{
scaler = TMR1_SCALE; // reset scaler

/* interrupt rutina */
/* skeniranje tipki */
state_ALL = INPUT_PINS&(BTN_MASK); // procitaj i spremi
stanje svih tipaka
// detektiranje drzanja tipke
// BTN_MASK mora biti u zagradi zbog prioriteta bitwise
operatora zato
// jer izraz s kojim je definiran sadrzi operatore drugog tipa
od XOR
if (!(state_ALL^(BTN_MASK))) { // ako nije stisnuto
nista
cekaj=0xff; // setiraj flag
rpt_delay_COUNT = RPT_DELAY; // reinicijaliziraj
brojac za repeat delay
repeat_scaler = RPT_SCALE; // reinicijaliziraj brojac za
ponavljanje
}
else { // ako je nesta stisnuto
if (state_ALL==last_state_ALL) { // ako je neki gumb stisnut
duze vremena
// delay za ponavljanje stisnute tipke
if(cekaj&&(--rpt_delay_COUNT==0)) // ako je prosla pauza
prije ponavljanja tipke
cekaj=0; // signaliziraj da je pauza prosla
if (!cekaj) // ako je pauza prosla
repeat_scaler--; // smanji brojac trajanja pritiska
}
else { // ako je nesta stisnuto po prvi
put
repeat_scaler = RPT_SCALE; // reinicijaliziraj brojac
flag++; // i setiraj flag
} // else
if (!repeat_scaler) { // ako je nesta stisnuto duze
vremena
flag++; // setiraj flag
repeat_scaler = RPT_SCALE; // reinicijaliziraj brojac
trajanja pritiska
}
} // else (ako je nesta stisnuto)
last_state_ALL=state_ALL; // zapamti za sljedeci put
// flag je zbog toga jer se ako je gumb stisnut duze vremena
// komanda ne smije izvrsiti sve dok se ne odbroji pauza
// definirana s RPT_SCALE
if ((!(state_ALL&(1 << BTN_PLUS))) && flag) // da li je
stisnut PLUS i setiran flag?
{
sati++; // povecaj parametar
ispisi_vrijeme(sati,minute); // i napravi update ekrana
flag=0; // resetiraj flag
} // if (plus)

// da li je stisnut MINUS i setiran je flag i sati nisu nula?
if ((!(state_ALL&(1 << BTN_MINUS))) && flag && (sati != 0))
{
sati--;
ispisi_vrijeme(sati,minute);
flag=0; // resetiraj flag
} // if (minus)
/* kraj skeniranja tipki */

} // if (scaler)
} //ISR

static void io_init(void)
{
// podesi 16-bit timer 1.
// Timer 1 = 10-bit phase-correct PWM (WGM10 & WGM11)
// Timer 1 TOP @ #03FF --> overflow at CLOCK/2048
// full clock (1 MHz) --> CS10 u TCCR1B
TCCR1A = _BV(WGM10) | _BV(WGM11); // 10 bit phase correct, CLOCK/2048
TCCR1B = _BV(CS10); // source = CLOCK, prescaler = OFF

// ukljuci pull-up otpornike
INPUT_PORT = _BV(BTN_PLUS) | _BV(BTN_MINUS);

TIMSK = _BV(TOIE1); // ukljuci Timer 1
sei(); // omoguci interrupt-e

} // io_init

int main()
{
delay(20);
GLCD_Initialize();
GLCD_ClearScreen();
GLCD_Rectangle(0,0,128,64); // nacrtaj okvir

prikazi_aktivnu_fazu(0); // nacrtaj indikatore trenutne faze
ispisi_vrijeme(0,0); // nacrtaj brojke
GLCD_Bitmap(bytes_1F,62,4,4,8); // nacrtaj gornju tocku
GLCD_Bitmap(bytes_1F,62,5,4,8); // nacrtaj donju tocku
sati=0; minute=0;
ispisi_vrijeme(0,0);

io_init();

while (1)
;
return 0;
}


Ili highlight-ano:

http://codepad.org/RDZXd9n2

Prije ili kasnije cu tu rutinu napisati kako spada i u assembleru (za
koristenje u npr. ATtiny13 gdje brzo ode sav flash) jer je to nesta sta
cesto zatreba.

> > Wolfenstein
> Ako mislis na http://goo.gl/CR8bqI , 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.
>

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

Chupo

unread,
Feb 20, 2015, 8:30:03 PM2/20/15
to
In article <ma94fs$p77$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
[removethis]@yahoo.com> says...
> > Znas mozda da li se s KS0108 kontrolerom moze komunicirati na clock-u
> > od 8 MHz bez ubacivanja timing pauza?
> 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.
>

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

https://www.dropbox.com/sh/r4y7i8zngsb94h9/AACBGxpKyCi6oE1roovS1voia

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.

vaso

unread,
Feb 22, 2015, 12:38:02 PM2/22/15
to

"Chupo" <bad_...@yahoo.com> wrote in message
news:MPG.2f51f95d...@news.t-com.hr...
> In article <ma94fs$p77$1...@ls237.t-com.hr>, Stonethrower <digi_64-public
> [removethis]@yahoo.com> says...
>> > Znas mozda da li se s KS0108 kontrolerom moze komunicirati na clock-u
>> > od 8 MHz bez ubacivanja timing pauza?
>> 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.
>
> Radi bez problema i na 8 MHz. Stigo mi je ekran, ovo:
>
> https://www.dropbox.com/sh/r4y7i8zngsb94h9/AACBGxpKyCi6oE1roovS1voia
>
> 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.

Ja bih možda(?) malo uredio te velike brojke,
ovako izgledaju 'seljoberske'?


Chupo

unread,
Feb 22, 2015, 1:30:02 PM2/22/15
to
In article <mcd45q$a7b$1...@sunce.iskon.hr>, vaso
<branko.va...@xnet.hr> says...
> Ja bih moľda(?) malo uredio te velike brojke,
> ovako izgledaju 'seljoberske'?
>

Mislis da promijenim izgled velikih brojki? Mogo bi sloziti bilo kakve
ali mi ih je ovako bilo najlakse nacrtati i plus toga su prilicno
citljive a jedan od razloga da su kockaste je bio i jer kockice za
razdvajanje sati i minuta na tako niskoj rezoluciji ne bi izgledale
lijepo da nisu kockaste a okrugle bi zauzimale vecu sirinu sta se ne bi
uklapalo niti u prostornu raspodjelu.

Nije problem i da brojke generiram preko negog od fontova, recimo
gornje bitmape gdje pise F1, F2 i F3 sam (uz manje korekcije) generirao
preko fonta a brojke sam bas nacrtao. Ono o cemu sam razmisljao je da
li da i u 'Fx' bitmapama slovo F i brojke slozim tako da budu u skladu
s izgledom velikih brojki.

vaso

unread,
Feb 22, 2015, 5:57:27 PM2/22/15
to

"Chupo" <bad_...@yahoo.com> wrote in message
news:MPG.2f543b25a...@news.t-com.hr...
> In article <mcd45q$a7b$1...@sunce.iskon.hr>, vaso
> <branko.va...@xnet.hr> says...
>> Ja bih moľda(?) malo uredio te velike brojke,
>> ovako izgledaju 'seljoberske'?
>>
>
> Mislis da promijenim izgled velikih brojki? Mogo bi sloziti bilo kakve
> ali mi ih je ovako bilo najlakse nacrtati i plus toga su prilicno
> citljive a jedan od razloga da su kockaste je bio i jer kockice za
> razdvajanje sati i minuta na tako niskoj rezoluciji ne bi izgledale
> lijepo da nisu kockaste a okrugle bi zauzimale vecu sirinu sta se ne bi
> uklapalo niti u prostornu raspodjelu.

A ovako nešto ( kao 7-segmentni):
http://www.eg.bucknell.edu/~wismer/ee101/lab12/img11.gif

Chupo

unread,
Mar 2, 2015, 12:30:02 AM3/2/15
to
In article <mcdmsm$s7p$4...@sunce.iskon.hr>, vaso
<branko.va...@xnet.hr> says...
> A ovako neąto ( kao 7-segmentni):
> http://www.eg.bucknell.edu/~wismer/ee101/lab12/img11.gif
>

Mogo bi to napraviti, onda bi izgledalo otprilike ovako:

http://tinyurl.com/pnf9jde

vaso

unread,
Mar 3, 2015, 6:30:01 AM3/3/15
to

"Chupo" <bad_...@yahoo.com> wrote in message
news:MPG.2f5e10834...@news.t-com.hr...
> In article <mcdmsm$s7p$4...@sunce.iskon.hr>, vaso
> <branko.va...@xnet.hr> says...
>> A ovako neąto ( kao 7-segmentni):
>> http://www.eg.bucknell.edu/~wismer/ee101/lab12/img11.gif
>
> Mogo bi to napraviti, onda bi izgledalo otprilike ovako:
>
> http://tinyurl.com/pnf9jde

Meni se to više sviđa.
Istina, na tom primjeru segmenti nisu 'unificirani'....



0 new messages