Behöver hjälp med formel (division) i assembler...
Behöver hjälp med formel (division) i assembler...
Jag har haft en extramätare/datalogger i bilen som jag tänkte blåsa lite liv i igen.
Det är i all enkelhet en ATmega163 med en 4x16 raders display, lite ingångar, en extern räknare, klocka, rs232-interface, tryckmätare och tempmätare.
Den visar bland annat varvtal och hastighet.
Nu känner jag att jag skulle vilja att den visar, och loggar, vilken växel som ligger i. Det kan ju enkelt(?) bestämmas genom att dividera varvtalet med hastigheten - kvoten motsvarar ju utväxlingen.
Jag har varvtalet i en byte (lägg två nollor till decimalvärdet i byten och du har varvtalet) och hastigheten i en byte (decimalt).
Min första tanke är att jag dividerar varvbyten med hastighetsbyten och använder kvoten för att plocka ur vilken växel jag kör på ur en lookup-tabell.
Dock är jag inte SÅ haj på assemblermatematik att jag kan klura ut hur man gör divisionen.
Någon som kan komma med lite input? Eller någon annan smart tanke runt hur jag kan lösa det?
Det är i all enkelhet en ATmega163 med en 4x16 raders display, lite ingångar, en extern räknare, klocka, rs232-interface, tryckmätare och tempmätare.
Den visar bland annat varvtal och hastighet.
Nu känner jag att jag skulle vilja att den visar, och loggar, vilken växel som ligger i. Det kan ju enkelt(?) bestämmas genom att dividera varvtalet med hastigheten - kvoten motsvarar ju utväxlingen.
Jag har varvtalet i en byte (lägg två nollor till decimalvärdet i byten och du har varvtalet) och hastigheten i en byte (decimalt).
Min första tanke är att jag dividerar varvbyten med hastighetsbyten och använder kvoten för att plocka ur vilken växel jag kör på ur en lookup-tabell.
Dock är jag inte SÅ haj på assemblermatematik att jag kan klura ut hur man gör divisionen.
Någon som kan komma med lite input? Eller någon annan smart tanke runt hur jag kan lösa det?
Googlar man på "binary division" så får man som första träff den här länken:
http://courses.cs.vt.edu/~cs1104/Buildi ... e.010.html
Vet inte om det finns bättre metoder.
Men du bör ju tänka på att din beräkning kommer riskera att visa fel växel så fort man trampar ner kopplingen.
http://courses.cs.vt.edu/~cs1104/Buildi ... e.010.html
Vet inte om det finns bättre metoder.
Men du bör ju tänka på att din beräkning kommer riskera att visa fel växel så fort man trampar ner kopplingen.
Sen har ju Atmel application notes på binär division också.
http://atmel.com/dyn/resources/prod_doc ... oc0936.pdf
http://atmel.com/dyn/resources/prod_doc ... oc0936.pdf
-
- Inlägg: 138
- Blev medlem: 12 maj 2007, 11:24:24
- Ort: Sjöbo
Usch, backning blir ju ännu ett specialfall.
I övrigt handlar det ju om, som du skriver, att resultatet måste bli "tillräckligt nära". Jag får labba fram hur exakt resultatet ska utvärderas. Får man ingen tillräckligt noggrann träff så slirar man antagligen på kopplingen och då får den logga det.
Ska fundera lite på din ide, att göra det baklänges, med mulitplikation.
I övrigt handlar det ju om, som du skriver, att resultatet måste bli "tillräckligt nära". Jag får labba fram hur exakt resultatet ska utvärderas. Får man ingen tillräckligt noggrann träff så slirar man antagligen på kopplingen och då får den logga det.
Ska fundera lite på din ide, att göra det baklänges, med mulitplikation.