-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!no
t-for-mail
From: Michoo <m...@v...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: ATmega, jak zaprogramować narastanie wartości sygnału, bez użycia
operacji zmiennoprzecinkowych?
Date: Tue, 09 Oct 2012 12:50:29 +0200
Organization: Netia S.A.
Lines: 40
Message-ID: <k50vrk$8lg$1@mx1.internetia.pl>
References: <5073652e$0$26682$65785112@news.neostrada.pl>
<k50k2t$hv3$1@mx1.internetia.pl>
<5073fa4b$0$26703$65785112@news.neostrada.pl>
NNTP-Posting-Host: 83.238.197.12
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: mx1.internetia.pl 1349780148 8880 83.238.197.12 (9 Oct 2012 10:55:48 GMT)
X-Complaints-To: a...@i...pl
NNTP-Posting-Date: Tue, 9 Oct 2012 10:55:48 +0000 (UTC)
In-Reply-To: <5073fa4b$0$26703$65785112@news.neostrada.pl>
X-Tech-Contact: u...@i...pl
User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.6esrpre) Gecko/20120817
Icedove/10.0.6
X-Server-Info: http://www.internetia.pl/
Xref: news-archive.icm.edu.pl pl.misc.elektronika:636340
[ ukryj nagłówki ]On 09.10.2012 12:19, Robbo wrote:
> Czas będzie zawsze liczony od zera. Prąd początkowy także będzie
> narastać od zera.
> Więc jeśli I(S0) = 0, S0 = 0. Zatem powyższe formuły można uprościć do:
> I(s) = I(Se) * (s/Se)
> I(s) = I(Se)/Se*s
Dokładnie. Ale tak długo jak zmiany są liniowe to wystarcza raz policzyć
iloraz różnicowy.
>
>> Przekształcasz to sobie na:
>> I(t)=I(T0)+t*dI
>> I(t)=I(t-1)+dI
>>
>> Raz wyliczasz iloraz różnicowy dI, potem masz w każdym cyklu jedno
>> dodawanie i jeden shift.
>
> Tu bym prosił o wyjaśnienie. Mało spałem i chyba nie do końca myślę,
> dlatego proszę o wybaczenie.
>
> Czy dI będzie wartością zmiennoprzecinkową?
Stałoprzecinkową, np. o 16 bitach części całkowitej i 16 po przecinku:
uint16_t I=0;
uint32_t I_accu=0;
uint32_t dI;
time_t last_time=0;
void new_setting(/**/){
dI=(I_target<<16)/time_slices;
}
void calc(time_t t){
I_accu+=dI*(t-last_time);
I=I_accu>>16;
last_time=t;
}
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Akumulatory VRLA
- ładowarka zmarła
- Podstawa bezpiecznikowa jako rozłącznik DC
- Napięcie akumulatora wyłączające UPS / jakie nowe akumulatory do UPS?
- nawigacja satelitarna
- SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- Głośnik piezoelektryczny
- Mala autonomiczna kamera monitoringu
- czas na emeryturę i EB
- Generowanie sumy kontrolnej z fragmentu pliku bin
- Re: Mala autonomiczna kamera monitoringu
- HDMI
- Re: Mala autonomiczna kamera monitoringu
- Kamera monitoringu z kartą SIM
- Re: Kamera monitoringu z kartą SIM
Najnowsze wątki
- 2024-07-02 Realme 7 Na co zmienić?
- 2024-06-27 Prywatny parking? Pierwsze 10 minut bezplatnie
- 2024-07-02 znalazłem samochód ;)
- 2024-07-02 Pierwszeństwo łamane
- 2024-07-02 zamek
- 2024-07-02 Akumulatory VRLA
- 2024-07-03 Białystok => Inżynier DevOps Conexa First (Kontraktor) <=
- 2024-07-03 MĂźnchen => Test Development Engineer (m/w/d) <=
- 2024-07-03 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-07-03 Warszawa => Programista Full Stack (.Net Core) <=
- 2024-07-02 Kraków => Spedytor międzynarodowy <=
- 2024-07-02 Poznań => Senior React Native Developer <=
- 2024-07-02 Rzeszów => Frontend Developer (React) <=
- 2024-07-02 Warszawa => Fullastack (Java) Developer <=
- 2024-07-02 reparacje