10 bitar till 4 bitar

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

10 bitar till 4 bitar

Inlägg av Magnus_K »

Vet inte om frågan ska ligga här eller under Inbyggda system. Vi får se.

Om jag läser ur ett ADC-värde på en MCU där ADC:n har 10-bitars upplösning. Hur skalar jag enklast ner det här i kod så det bara blir 4 bitar?
Tänker jag rätt om jag bara bit-skiftar genom var = var >> 6;?
Användarvisningsbild
AndLi
Inlägg: 17046
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: 10 bitar till 4 bitar

Inlägg av AndLi »

Ja...
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: 10 bitar till 4 bitar

Inlägg av Magnus_K »

Kanon. Tack.
En anledning till varför jag frågar är att jag har något vagt minne om fler saker man ska tänka på när man bit-skiftar att det är tex inte säkert att det "fylls på med nollor", utan man ska göra något ytterligare efter ett bitskiftning. Minns jag fel? Finns det risk att det skiftas in annat än 0:or?
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: 10 bitar till 4 bitar

Inlägg av Klas-Kenny »

Brukar i såna lägen köra
var=(var>>6) & 0xf;

Så är man 100% säker på vad man får.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: 10 bitar till 4 bitar

Inlägg av Magnus_K »

Men hur fungerar det då?
Då AND:ar man in 8 st 1:or och om det skulle "råka" komma med en 1:a när man bit-skiftar så blir det ju en 1:a igen. Eller tänker jag fel?

OBS. Det här kanske inte är ett verkligt problem. Bara att jag har i bakhuvudet att man skulle "maska" ur sitt värde riktigt för att vara säker på att inte massa skräp kommer med när man bit-skiftar.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: 10 bitar till 4 bitar

Inlägg av lillahuset »

Kolla så din ADC ger "unsigned" ut, dvs 0..1023. Ger den "signed" ut, dvs -512..511 blir det lite mer pill.
XorXaX
Inlägg: 409
Blev medlem: 27 maj 2004, 09:44:16

Re: 10 bitar till 4 bitar

Inlägg av XorXaX »

0xf är bara fyra ettor precis som du ville ha det.

.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: 10 bitar till 4 bitar

Inlägg av Magnus_K »

@lillahuset: Den här gången är jag nog skonad. Verkar som att den ger "unsigned" ut.

Så var det ja XorXaX! Då blir det som att jag AND:ar 0x0F vilket verkligen maskar ur dom nedersta 4 bitar.
Tack!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45169
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: 10 bitar till 4 bitar

Inlägg av TomasL »

Varför vill du skala till fyra bitar?
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: 10 bitar till 4 bitar

Inlägg av Magnus_K »

ADC:n returnerar ett tal mellan 0-1023. Det är alldeles för stort för vad jag ska använda det till.
Däremot 0-15 kan jag använda direkt i min formel.
Tänkte att det går snabbare att bit-skifta än division, men vad vet jag.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: 10 bitar till 4 bitar

Inlägg av Jan Almqvist »

Hur ser din formel ut?
Findecanor
Inlägg: 982
Blev medlem: 2 juli 2010, 23:04:07

Re: 10 bitar till 4 bitar

Inlägg av Findecanor »

Du bör nog räkna på (eller mäta) vad det är för omfång på din insignal för att vara säker på att få resultat i ett användbart intervall.
I värsta fall skulle alla invärden vara lägre än (1<<6) och du skulle bara få nollor i slutändan.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45169
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: 10 bitar till 4 bitar

Inlägg av TomasL »

Typ, skall du mäta på en signal 0-5V, så får du området 4,9-5 V ungefär
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: 10 bitar till 4 bitar

Inlägg av lillahuset »

Han skiftar ju bara bort sex LSB så mätområdet blir det samma även om upplösningen blir 64 gånger sämre.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45169
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: 10 bitar till 4 bitar

Inlägg av TomasL »

Ja mitåt, för mycket rö-tjut i kväll.
Skriv svar