Re: pøeteèení int v C arduino
Jan Waclawek
konfera na efton.sk
Pátek Červenec 18 19:01:08 CEST 2014
Ale to funguje len do 32767 sekund, co nie je ani 10 hodin, co bol ten
povodny priklad... Cize treba pouzit ldiv.
Naviac, ako som bol pisal, avr-gcc od 4.5 vie optimalizovat dvojicu za
sebou nasledujuceho divu a modu na jedno volanie divmod funkcie, takze to
div tak trocha straca opodstatnenie.
void ctime2 (uint32_t t, mtime_t* s) {
s->s = t % 60;
t = t / 60;
s->m = t % 60;
t = t / 60;
s->h = t % 24;
s->d = t / 24;
}
Ak by sa malo naozaj optimalizovat, tak treba napisat rucne divmod 32/8 do
inline assembleru.
wek
----- Original Message ---------------
Subject: Re: pøeteèení int v C arduino
From: Miroslav Mraz <mraz at seznam.cz>
Date: Fri, 18 Jul 2014 17:40:16 +0200
To: HW-news <hw-list at list.hw.cz>
>Mo¾ná by to ¹lo jednodu¹eji nìjak takto:
>
>#include <stdlib.h>
>
>typedef struct {
> uint8_t d;
> uint8_t h;
> uint8_t m;
> uint8_t s;
>} mtime_t;
>// prevod
>void ctime (int t, mtime_t* s) {
> div_t r;
> r = div (t, 60);
> s->s = r.rem;
> t = r.quot;
> r = div (t, 60);
> s->m = r.rem;
> t = r.quot;
> r = div (t, 24);
> s->h = r.rem;
> // tohle patrne pretece, ale asi je to jedno
> s->d = r.quot;
>}
>
>Mrazík
>
>On 07/18/2014 05:29 PM, Petr Zapadlo wrote:
>> Dìkuji za detailní vysvìtlení.
>> Zatím jsem psal jen v asembleru a tam jsem si "datové typy" hlídal
>> striktnì ruènì.
>> Tady se mi zalíbila volnost rozletu a "automatika" a u¾ jsem na to
>> dojel :-)
>>
>> Petr
>_______________________________________________
>HW-list mailing list - sponsored by www.HW.cz
>Hw-list at list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list