Obliczenia arytmetyczne w uC

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Obliczenia arytmetyczne w uC

Post autor: slawek55 » 25 lis 2011, 18:02

Cześć.
Mam do Was takie nietypowe pytanie, ale nie spotkałem się z czymś podobnym.
Czy znacie książkę, pracownie lub stronę gdzie wyśnione jest w jaki sposób
dokonuje się obliczeń arytmetycznych na uC np AVR? Dla przykładu jak
poradzić sobie z obliczeniem pierwiastka kwadratowego lub podniesieniem do
potęgi?
Nie chodzi mi o to jak bibliotekę zastosować i funkcje biblioteczna tylko
jak jest to robione na poziomie uC np z jakich wzorów się korzysta?
Często jest tak że pierwiastkowanie można wykonać przy pomocy ciągu.

Awatar użytkownika
Luminofor
Użytkownik
Posty: 1373
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

Post autor: Luminofor » 25 lis 2011, 21:59

Przecież uC (a właściwie ALU w uC) potrafi tylko dodawać i mnożyć. Resztę robią programy i specjalne algorytmy.

samson
Użytkownik
Posty: 111
Rejestracja: 26 cze 2007, 0:33
Lokalizacja: Wroc/Leg

Post autor: samson » 25 lis 2011, 23:29

stosując odpowiednie biblioteki można użyć funkcji np sqrt itp by pierwiastkować czy potęgować, wystarczy tylko odpowiednio sformułować zapis

slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Post autor: slawek55 » 26 lis 2011, 6:55

No ale właśnie chodzi o to, aby nie korzystać z biblioteki tylko dowidzieć się jak na poziomie uC realizowane są działania. Ale nie sam fragment programu, tylko wraz z wytłumaczeniem dlaczego tak się liczy.

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 26 lis 2011, 20:44

Przecież uC (a właściwie ALU w uC) potrafi tylko dodawać i mnożyć.
Nie jest to do końca prawda, najprostsze mikroprocesory tylko dodają, odejmują, i wykonują operacje logiczne jak AND, OR, XOR, NOT, oraz przesuwanie logiczne w prawo i lewo.
Cała reszta obliczeń to tylko odpowiednia kombinacja tych prostych operacji.
Czyli z tym mnożeniem kolega się zagalopował, nawet niektóre AVRy nie potrafią sprzętowo mnożyć, choćby ATTiny 26.
Jeżeli kolega chce poznać jak się to robi od kuchni to odsyłam do starych książek, jak np. "Mikroprocesor w pytaniach i odpowiedziach" Krzysztof Stacha i Andrzej Rydzewski WNT 1985, w której wyjaśniono podstawy obliczeń na przykładzie procesora Z80.
Z bardziej współczesnych procesorów to warto poszperać w materiałach o PIC16F, ale niestety sporo materiału jest po Angielsku.
Właściwie szczegółowych informacji będzie musiał kolega szukać w starych publikacjach o C64 (proceszorze 6502), ZX Spectrum (Z80 ewenetualnie Intel 8080) itd. czy starych książkach, z lat 80-poczatku 90. Współczesne publikacje raczej odradzam, bo traktują temat w sposób akademicki, i raczej nic z nich nie zrozumiesz.

keruseykaryu

Post autor: keruseykaryu » 27 lis 2011, 8:25

slawek55 pisze:Dla przykładu jak poradzić sobie z obliczeniem pierwiastka kwadratowego lub podniesieniem do potęgi?
Poszukaj The Complete Spectrum ROM Disassembly. Masz tam kod "kalkulatora" z opisem, oczywiście po angielsku, ale od czego są tłumacze.

slawek55
Użytkownik
Posty: 475
Rejestracja: 16 sie 2005, 11:47
Lokalizacja: Szczecin

Post autor: slawek55 » 27 lis 2011, 15:51

Kupiłem sobie tą książkę o której pisał kayron, więc zobaczę co tam ciekawego jest?
A czy możesz podpowiedzieć pod jakimi hasłami szukać informacji w materiałach o PIC16F. Producent udostępnia noty ale trzeba wiedzieć jakie hasło wpisać? A po ciemku to ciężk

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 27 lis 2011, 16:28

Do PICów jest cała "książka" o pisaniu procedur matematycznych, ale po Angielsku.
Są to następujące noty aplikacyjne, na stronie Microchipa.
Fixed Point Arithmetic ( w sumie operacje podstawowe jak mnożenie, dzielenie)
http://ww1.microchip.com/downloads/en/A ... /00617.pdf
Mathematical Function Evaluation (zaawansowane operacje zmiennoprzecinkowe, sin, cos, pierwiastki, log10 itd.)
http://ww1.microchip.com/downloads/en/A ... /00660.pdf
Ostatecznie możesz sobie poszukać książki pana Flores I., Arytmetyka maszyn cyfrowych, WNT, Warszawa 1970.

ODPOWIEDZ