|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Mbili Član
Pridružen-a: Tor 03 Jan 2012 20:14 Prispevkov: 34 Aktiv.: 0.23 Kraj: Ljubljana
|
Objavljeno: Sre Okt 30, 2013 7:39 pm Naslov sporočila: |
|
|
Poskusi
C = -A & B; |
|
Nazaj na vrh |
|
|
NeoTO Član
Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2751 Aktiv.: 12.35 Kraj: Trzic
|
Objavljeno: Sre Okt 30, 2013 7:44 pm Naslov sporočila: |
|
|
Množenje z MUL (assembler Cortex-M3) načeloma vzame 1 cikel. Od kod je compiler 32 ciklov pridelal?
@Mbili: sem imel tudi jaz tole 'v paci' _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.67
|
Objavljeno: Sre Okt 30, 2013 8:16 pm Naslov sporočila: |
|
|
Mogoče bi celo šlo z aritmetičnimi triki, vendar dvomim, da bo kaj hitreje od ene primerjave... _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
siljo Član
Pridružen-a: Tor 28 Okt 2003 8:08 Prispevkov: 1035 Aktiv.: 4.65 Kraj: Ribn'ca
|
Objavljeno: Sre Okt 30, 2013 8:35 pm Naslov sporočila: |
|
|
Mbili je napisal/a: |
Poskusi
C = -A & B; |
tole bi moralo delati!
če je A = 1 je potem -A=FF in če daš & z B je to to.... _________________ Lep pozdrav! |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Sre Okt 30, 2013 10:51 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.21 Kraj: Črnomelj
|
Objavljeno: Pon Apr 28, 2014 5:05 pm Naslov sporočila: |
|
|
Vem kaj pomeni &spremenljivka ali *spremenljivka, ne vem pa, kaj pomeni
Koda: |
*(volatile uint8_t*) spremenljivka = x; |
Lahko kdo prosim razloži?
Hvala _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.67
|
Objavljeno: Pon Apr 28, 2014 10:15 pm Naslov sporočila: |
|
|
Cast operator.
"spremenljivka" najprej postane kazalec na tip "volatile uint8_t", nato se pa na lokacijo, kamor kaže, vpiše vrednost x. _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Ned Avg 03, 2014 9:24 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.67
|
Objavljeno: Ned Avg 03, 2014 10:11 pm Naslov sporočila: |
|
|
func2 imaš definiran kot tip uint32_t, vračaš pa vrednost -15
Mogoče je to problem? _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3174 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Pon Avg 04, 2014 10:19 am Naslov sporočila: |
|
|
ERROR (0) in ERR_OK (0) sta enaki vrednosti, torej pogoj v funcl() ni izpolnjen. |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Sre Avg 06, 2014 12:39 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
Sigi Član
Pridružen-a: Čet 31 Jul 2014 11:42 Prispevkov: 199 Aktiv.: 1.68 Kraj: Kamnik
|
Objavljeno: Sre Avg 06, 2014 12:58 pm Naslov sporočila: |
|
|
Živijo,
Delam na Cortex M0 in rabim sinus(), brez uporabe float aritmetike.
Čas izvajanja ni kritičen, ker funkcijo kličem le ob inicijalizaciji tabele ob zagonu.
Želim se le izogniti float knjižnici (flash size, nabije skoraj 10k za float)
Na netu sem našel tole:
Koda: |
//! A sine approximation via a fourth-order cosine approx.
int32_t isin_S4(int32_t x)
{
int32_t c, y;
static const int32_t qN= 13, qA= 12, B=19900, C=3516;
c= x<<(30-qN); // Semi-circle info into carry.
x -= 1<<qN; // sine -> cosine calc
x= x<<(31-qN); // Mask with PI
x= x>>(31-qN); // Note: SIGNED shift! (to qN)
x= x*x>>(2*qN-14); // x=x^2 To Q14
y= B - (x*C>>14); // B - x^2*C
y= (1<<qA)-(x*y>>16); // A - x^2*(B-x^2*C)
return c>=0 ? y : -y;
} |
in dela OK, bi si pa želel malo boljšo aproksimacijo.
Iščem izdelano funkcijo v C-ju (link?), ne matematične teorije.
lp |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Sre Avg 06, 2014 3:06 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
Sigi Član
Pridružen-a: Čet 31 Jul 2014 11:42 Prispevkov: 199 Aktiv.: 1.68 Kraj: Kamnik
|
Objavljeno: Sre Avg 06, 2014 5:43 pm Naslov sporočila: |
|
|
Hvala za namig, ampak sta dva problema:
-nimam le tabale sinusa, je malo bolj "fancy" (sin + 3harmonik...)
-tabela ni fiksna, ampak se izračuna glede na nastavljive parametre. Tako da jo mora mikrokontroler preračunat.
Saj do sedaj sem s tabelami lepo shajal, tu pa ne gre.
lp |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Čet Avg 07, 2014 3:26 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 69 dni
Powered by phpBB © 2001, 2005 phpBB Group
|