Sida 1 av 1
PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 18:47:02
av Klas-Kenny
Jag behöver göra om 0-255 från ADC'n till 0-9 men kan inte komma på någon enkel lösning till detta. Det ända jag kan komma på är att kolla om det är mellan 0-28, i så fall 0, 29-56 i så fall 1 osv. men det känns som en omväg, det borde finnas något enklare sätt ifall man är lite klurig, så, några lösningar?
Och jag vet att 255 inte är jämnt delbart med 9, jag behöver ingen extrem exakthet då det ska justeras med en pot, ifall några steg skiljer +/- någon grad spelar det ingen roll.
Handlar om en PIC16F886 ifall det spelar någon roll.
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 19:00:37
av bearing
Den här tråden är ju nästan identisk med den förra som handlade om att göra om till 0-100.
Svaret är att multiplicera med 10. Resultatet blir då ett 16-bitars tal, alltså två stycken 8 bytes, en hög och en låg. Den höga byten av resultatet kommer då innehålla siffran 0-9.
Ett snabbt sätt att multiplicera med tio är att först multiplicera utgångsvärdet med 8 (d.v.s. shifta tre steg vänster), och sedan addera utgångsvärdet*2 (t.ex. shiftning ett steg vänster och addition, eller addition två gånger utan shiftning). Resultatet blir multiplicering med (8+2) eller (8+1+1).
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 19:08:03
av Klas-Kenny
Den tråden har jag missat
Tack i alla fall
Måste lära mig alla de där metoderna med vad man kan få fram genom att skifta hit och dit och liknande....
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 20:02:49
av sodjan
Ett helt annat sätt är att skala insignalen till ADC'n på ett sådant sätt
så att du direkt får rätt värde. T.ex 0-160 i ADC'n ger 0-10 efter 4 höger
shift (0-80, 0-40, 0-20 och, efter 4'de shiften, 0-10). Eller 1-175 är bättre,
om du vill ha "hela" 10 delen...
4 shift är dessutom detsamma som en SWAP och en OR, så det går att
"trimma" lite.
Sen så beror ju det hela även på vad du ska ha ditt "0-10" värde till...
> Måste lära mig alla de där metoderna med vad man kan få fram genom
> att skifta hit och dit och liknande....
Shift är alltid *2 eller /2 beroende på år vilket håll det sker.
För generella rutiner för division med en konstant kan man använda
http://www.piclist.com/techref/piclist/ ... divmul.htm
(som verkar ha något tillfälligt problem just nu...)
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 20:10:30
av Klas-Kenny
Ja så skulle man ju också kunna göra
Det jag ska använda det till är att jag bygger en svepande uv-box, och så tänkte jag ha 10 olika steg på längder som belysningen ska ske på. Detta ska då ställas med en pot, samt visas vilket steg man ställt in på en 7seg-display.
Den sidan såg trevlig ut! Sparad som favorit

Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 20:13:57
av sodjan
> Den sidan såg trevlig ut! Sparad som favorit
Det räcker att komma ihåg
www.piclist.com, sedan klickar man
sig fram till resten...
> ...10 olika steg på längder som belysningen ska ske på. Detta ska då ställas med en pot...
OK.
Jag kan tycka att det är lite av en omväg över pot => ADC => division,
när det hade fungerat med en "upp/öka" och en "ner/minska" knapp...
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 28 oktober 2010, 20:15:49
av Klas-Kenny
Nog är det kanske onödigt, men det fick mest bli så för att jag tyckte att en pot va lättare att montera och få snyggt än två knappar

Re: PIC asm - 0-255 -> 0-9 ?
Postat: 30 oktober 2010, 16:06:38
av E85
Finns ju ett "mellanting" också, roterande pulsgivare.. typ nån av dom här: 35-846-53, 35-846-71
Re: PIC asm - 0-255 -> 0-9 ?
Postat: 30 oktober 2010, 16:15:03
av Klas-Kenny
Vilket dock är betydligt dyrare, samt frakten från Elfa är inte att leka med.
Såg att där fanns ett par speglar på sidan Sodjan länkade och använde den, nu fungerar det perfekt

Re: PIC asm - 0-255 -> 0-9 ?
Postat: 30 oktober 2010, 16:35:09
av E85
Ja 16kr är väl inte så extremt farligt iofs. Och frakten blir 35kr om du väljer brev och betalar med kort. Inte speciellt svettigt. Men funkar det nu så är det ju bra då.
