vermenigvuldigen en delen met PBP

K

Klemm

Guest
Hallo,

hoe kan ik dit schrijf formule in PBP:

volt = INT (5.0/1024 * volt1 * 1000)

Bedankt

Klemm

 
Ik weet niet veel over Basic, maar het is meestal beter recht te verschuiven dan verdelen, zeker als je delen door een macht van 2.Shifting is niet zo veeleisende taken als divisie.1024 is hetzelfde als 2 ^ 10 dus in plaats van verdeeldheid bij 1024 moet u rechts verschuiven 10 keer.
Je moet ook alles doen vermenigvuldigingen vóór divisie, te minimaliseren afrondingsfouten.
In C zou het er ongeveer zo uitzien:

volt = ((5 * 1000 * volt1)>> 10);

of eenvoudiger:
volt = ((5000 * volt1)>> 10);

 
Eerst moet ik zeggen dat ik niets weet over PBP ...

Ik neem aan dat je de spanning berekenen van een waarde gemeten met een 10 bit Pic DAC?

Als PBP een datatype dat kan op zijn minst 640.000 bezit heeft (dat gebruik maakt van 3 bytes) Ik zou het doen als dit:

volt = (volt1 * 625) / 128

Een divisie met 128 zou kunnen worden gedaan als een verschuiving van de waarde 7 bits naar rechts, geen idee of PBP kunnen dit doen.

Gewoon een kort briefje: u zult nooit bereiken van de waarde van 5000 als de maximale waarde die u krijgt van de DAC is 1023 (of 0x3FF) ...

met vriendelijke groet

 
Ja PBP ondersteunt SHIFT raadpleeg de handleiding.
Tornado

 
Dan is de beste manier zou zijn om te doen als dit:

volt = ((625 * volt1)>> 7);

Dit is de C taal.
>> 7 Menas recht verschuiving 7 keer.
Ik weet niet hoe dit schrijven in BASIC, maar misschien kunt u dit uitzoeken jezelf.

 

Welcome to EDABoard.com

Sponsor

Back
Top