C xc8 rozkald double na byty

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Květen 12 15:15:46 CEST 2017


A cim se generuje ten obsah EEPROM? Udelal bych si programek na PC, 
ktery by ten obsah generoval nebo modifikoval, pripadne muze ze zadanych 
konstant udelat po konverzi pretypovanim nejaky .h soubor.
Ale pouzivam platformy, kde je float a double podle normy a kompatibilni.
A nejde nastavit linker tak, zby nejake konstantni promenne vytvoril na 
adresach, ktere treba programator bere jako obsah EEPROM?

Dne 12.05.2017 v 15:07 Miroslav Draxal napsal(a):
> Tahle otázka se dá položit obecně.
> Jak v C uložíte desetinné číslo (pro upřesnění double) do paměti eeprom v
> IDE. Ne v kontroleru v době běhu programu ale přímo při překladu, aby se
> uložilo do eeprom, která se následně nahraje do kontroleru.
>
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Miroslav Mraz
> Sent: Friday, May 12, 2017 1:24 PM
> To: HW-news
> Subject: Re: C xc8 rozkald double na byty
>
> Protože nevidím souvislost mezi nutností mít konstantu jako define a
> ukládáním do EEPROM, zkusil bych nějaký ten union:
>
> typedef unsigned char BYTE;
> typedef double        REAL;
>
> void print (const BYTE * bp, const unsigned len) {
>     unsigned n;
>     for (n=0; n<len; n++) printf ("<%02X>", bp[n]);
>     putchar ('\n');
> }
>
> typedef union rb_u {
>     const REAL r;
>     const BYTE b[sizeof (REAL)];
> } rbu_t;
> void test (void) {
>     const rbu_t rb = {.r=560.0};
>     print (rb.b, sizeof (rb));
> }
>
> Ale netuším, jak by to fungovalo na nějakém PICu, vyhýbám se jim jako čert
> kříži a když tak vidím různé dotazy ohledně této architektury, asi u toho
> zůstanu.
>
> Mrazík
>
> Dne 12.5.2017 v 12:18 Miroslav Draxal napsal(a):
>> Dá se nastavit přesnost  3 (dokonce) nebo 4 byty v XC8 linker/Memory
>> model
>>
>> Potřebuju to dostat do define, protože to pak ukládám do eeprom v době
>> vývoje.
>>
>> #define byt1       0x44
>> #define byt2       0x0C
>> #define byt3       0x00
>> #define byt4       0x00 // což je prezentace 0x440C0000 což je 560.0
>>
>> __EEPROM_DATA(byt1, byt2, byt3, byt4, 0, 0,0, 0);
>>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> 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