wij hebben in jal een 8bit getal dat varieert tussen 0 en 255. Wij willen dit getal door middel van een formule omzetten naar een ander getal.
Wij willen de volgende berekeningen uitvoeren:
- Eerst het 8bit getal keer 57
- Dan het resultaat min 7220
- Tenslotte het resultaat door 10 delen
Om dit te doen moet je het neem ik aan omzetten naar een 16bit getal, maar geen idee hoe je in JAL rekent. Heb al de JMATH-lib gebruikt, maar hiermee lukt het ook niet, en ik zou liever door middel van bitshiften werken.
Iemand die ons kan helpen????
muddy
Magnetische flux loopt altijd in gesloten paden, elektrische stroom niet per se (volgens de wet van Ampère), want: elektrische lading kan ophopen.
op www.haptics.eu is een 'handout' te downloaden met alle informatie over werken met JAL te vinden. ik ben er zelf ook mee bezig. Op die site staat ook hoe je de pic moet laten rekenen.
als je het niet kan vinden voeg me even toe op msn of mail me.
Gr's Tom
Geen idee hoe je dat in jal moet doen, maar als het maar 256 waardes zijn, is het dan niet gemakkelijker om ze ff zelf uit te rekenen en ze in een tabelletje in je PIC te gooien?
Jonathan
"Theorie is alleen te rechtvaardigen als 'n vorm van praktijk. De praktijk staat niet terecht voor 't hooggerechtshof van de theorie" (Stephan Toulmin)
ben je hier niets mee
http://www.piclist.com/techref/microchip/math/index.htm
ik heb er al van gebruikt en de meeste werken voortreffelijk
Bedankt voor de tips. In de JAL handout kon ik helaas niet de oplossing vinden. Het idee van die tabel is op zich een heel goed idee, alleen wordt de code dan wel heel groot. Liever probeer ik het eerst op de wat nettere manier op te lossen. Als het echt niet lukt, kan ik altijd die tabel nog maken.
Inmiddels is het me gelukt om het random 8bit getal om te zetten door middel van de formule (die inmiddels is aangepast) naar het benodigde 16 bit getal. Alleen nu nog het probleem hoe zorg ik er voor dat deze waarde op mijn 4 displays terecht komt? Ik gebruik nu de code hieronder:
--------------------------------------------------
adc_read( adc_channel, result_h, result_l)
; keer 73
x1 = 0x00
x0 = 0x49
y1 = result_h
y0 = result_l
multiply_16b( x1, x0, y1, y0 )
; min 37375
y1 = 0x91
y0 = 0xff
subtract_16b( x1, x0, y1, y0 )
; negatieve waarde omzetten in positieve waarde
y1 = x1
y0 = x0
x1 = 0x00
x0 = 0x00
subtract_16b( x1, x0, y1, y0 )
; gedeeld door 50
y1 = 0x00
y0 = 0x32
divide_16b( x1, x0, y1, y0, z1, z0 )
bin2bcd3( z1, z0, bcd2, bcd1, bcd0 )
------------------------------------------------
Maar wat moet ik doen met bcd0, bcd1 en bcd2? Hoe zet ik die om naar 4 integers voor op mijn disp1, disp2, disp3 en disp4? Ik doe nu het volgende, maar weet niet of dit juist is (en wat het eigenlijk betekent):
disp4 = (bcd1 >> 4) + "0"
disp3 = (bcd1 & 0x0f) + "0"
disp2 = (bcd0 >> 4) + "0"
disp1 = (bcd0 & 0x0f) + "0"
(Bijvoorbeeld: Om 6435 te tonen zou disp4=6 disp3=4 disp2=3 disp1=5 moeten zijn)
Wie weet of dit goed is, en zo niet hoe het wel moet?
[Bericht gewijzigd door M5B op ]