C xc8 rozkald double na byty

Jaromir Sukuba jarin.hw na gmail.com
Středa Květen 17 12:23:30 CEST 2017


Vecer som si robil polievku a ako tak chladla na pozivatelnu teplotu,
urobil som kratky challenge - workaround pre pripad "nechce sa mi
citat manual ku kompilatoru". Nesplna to ani trochu ideu "vyuzit
vnutorne zdroje MCU toolchainu" a potrebuje to iny kompilator, ale zas
to nevyzaduje aby jeden aj druhy kompilator bol "normalny".

Za zaklad som vzal to makro pre __EEPROM_DATA. Vo vedlajsom okne som
si vytvoril c subor, kde som skopiroval kus kodu z
http://www.piclist.com/techref/microchip/math/fpconvert.htm a
odstranil nejake specificke a C++ zalezitosti a vzniklo z toho toto
malo komentovane a odflaknute cudo https://pastebin.com/CtQCc1Q8
to ked sa skompiluje pomocou "gcc conv.c -lm -o conv" tak to vyflusne
binarku conv, ktora sa da zavolat takto "./conv file 560.00" a jej
vysledkom je
 asm("\t psect eeprom_data,class=EEDATA");
 asm("\t DB 0x44, 0x0C, 0x00");
v subore file.

No a tento vysledny subor sa includne do main-u tej MCU aplikacie,
alebo kde uz treba. Volanie toho conv sa da strcit do pre-build
parametrov IDE, pripadne do makefile. Pre pouzitie s MPLABX som si
urobil kratky skriptik "./conv values.h 560.0" ktory sa ako
spustitelny skript vlozi do pre-build krokov v IDE
https://snag.gy/0AOKuI.jpg no a vysledkom je ze v IDE mam okno kde si
zadavam hodnotu (ta v skripte) a pri kazdom builde sa mi to rozsype na
tri bajty a inicializuje sa nimi EEPROM. https://snag.gy/aYrvgt.jpg
Pouzitie s makefile bude vyzadovat o par tukov do klavesncie navyse,
ale o par kliknuti menej, to asi netreba popisovat.
No a potom mi uz polievka nepalila usta, tak som sa s tym nehral dalej.

Tento pristup nevyuziva priamo implementacne zavisle featury stroja na
ktorom to bezi (teda aspon tie "interne" ako je endianovitost), takze
nevyzaduje "normalny" kompilator, vysledok rozbitia je priamo
prifaritelny do projektu MCU. da sa menit format/pocet bajtov pre
float cislo (je to predpripravene na 4 formaty, lebo ako vieme, co nie
je "normalne" to je "obskurne") takze sa da obhospodarit stvornohy
pes, ale aj trojnohy, patnohy a dokonca aj ten co ma sice styri nohy,
ale na chrbte.

Da sa to urobit na milion inych prichuti. Napriklad ze to bude tie
float konstanty citat rovno z MCU zdrojakov, ze ich bude viacero na
nastavenych offsetoch. alebo ze to nebude vyzerat ze to programovalo
prasa.



Dňa 17. mája 2017, 11:17, Jan Waclawek <konfera na efton.sk> napísal/a:
>>teda rozvinie sa to do pseudoinstrukcii assembleru, ktore su nim spracovane.
>
> No a tam je teda schovana ta akceptancia floating-point konstanty ako
> operandu >>, vid posledny odstavec kap.6.2.5.1.
>
> Mimochodom, do pozornosti davam aj operator float24() (vid tab.6-3).
>
> wek
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list