Založen: Sep 03, 2019 Příspěvky: 69 Bydliště: Karlovy Vary
Zaslal: ne září 22 2019, 17:49 Předmět: Násobení 16-bit čísla u AVR
Ahoj,
lze nějak v AVR (např atmega 32) násobit 16-ti bitová čísla? Konkrétně potřebuji násobit dva ADC mezi sebou, kde bude max rozlišení 10 bitů, takže se budou násobiít 10-bitová čísla, ale hádám, že to bude totéž, co 16-bitové.
Z každého ADC budu mít dec hodnotu 0-999, takže max decimální hodnota bude 998001, kterou potřebuji nasledně zobrazit na displej (třeba 7seg), ale předpokládám, že s takovýma číslama atmega neumí vůbec pracovat.
Existuje tedy nějaký fígl, jak s těmi čísli pracovat i v 8bit registrech?
Na 8bitu to vypocitas to uplne jednoduse, kdyz si uvedomis ze plati
(256*cislo1_High + cislo1_Low)*(256*cislo2_High + cislo2_Low).
Kdyz si to zapises v pouzitelnejsim tvaru
65536*(cislo1_High *cislo2_High ) + 256(cislo1_High *cislo2_Low + cislo2_High *cislo1_Low) + cislo1_Low*cislo2_Low
tak uz to jednoduse a rychle pronasobis i na 8bitu.
Teď už mi zbývá celé číslo (v mém případě jen 3 byty) nějak nahodit na displej.
u 8-bitového čísla je to jasný, tam odečítám stovky, desítky, a počet odečtení pak zobrazím na displej. Ale ja mám odečítat 3 bytové číslo nevím
Pro ukojení zvědavosti je to na měření proudu a napětí a následně přepočet na výkon. Na netu jsou nějaký hotový projekty, ale našel jsem jen v C a tomu nerozumím. A navíc si to chci napsat sám, abych zase s těma AVRkama někam pokročil a sám se něco naučil.
Opravdu potrebujes 3bajtove rozliseni? Pokud je to nejaky vysledek vypocitavy z mizerneho 10bitoveho AD prevodniku ATmegy, nema zadny vyznam zobrazovat vic jak 10 bitu, spis min protoze na 1-2 LSB bude stejne jen nejaky sum.
Proste to cislo z prislusnych stran o par bitu orizni a nemusis pak zdlouhave prevadet 20bitove cislo do BCD.
Založen: Sep 03, 2019 Příspěvky: 69 Bydliště: Karlovy Vary
Zaslal: ne září 22 2019, 20:12 Předmět:
Uvažoval jsem ještě o externím ADC třeba 12bit nebo pak 16bit. Poslední dvě čísla stejnak měla být desetiná a setinná, ty bych mohl vynechat. Takže bych výsledek posunul doleva a počítal jen s horním bytem každého AD...?
Jenže já chtěl, aby výsledek max dec1000 byl úměrný 100V. Jak převedu 100V na 255 (8bit). Jedině že bych to ještě násobil 4ma... Tam mi ale může vzniknout chyba měření, nebo se pletu?
99,9 odpovida tak akorat tomu 10 bitovemu rozliseni AD prevodniku. Tu hodnotu z AD prevodniku si musis pronasobit tak, aby cislo odpovidalo tomu co chces zobrazit na displeji jeste pred prevodem do BCD, v tvem pripade 0-999. V BCD uz nic nenasob. Pokud ti bude stacit tech 99,9V prevadis do BCD jen stovky, desitky a jednotky - cislo vydelis stem, zbytek desiti a co zbyde jsou jednotky.
Ted jeste jak se deli na AVR...
Založen: Sep 03, 2019 Příspěvky: 69 Bydliště: Karlovy Vary
Zaslal: ne září 22 2019, 21:09 Předmět:
To ano, Ale tak když říkáš, že tam bude stejnak jen šum, tak nevím aby to mělo smysl. Ale já to nejdřív zkusím a uvidím jak se to bude chovat.
Já ale potřebuji ty předodníky mezi sebou násobit a pak převod na BCD. S tím už se snad nějak poperu.
V AVR se nedělí, ale odčítaj se stovky a počet odečtení se zapisuje do registru. Když je to třeba 520, tak se odečítaj stovky dokud výsledek nebude menší než 100 a jelikož se odečetlo celkem 5x, tak hodnota v reg bude 5 a ta se pak pošle na displej jako první cifra.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.