Anyway Chad, it is not my responsibility to teach basic C skills. So hopefully your Students were taught to understand why something like this would / could fail. And how to figure out why. Honestly though. Any 6 year old with a browser + know how to use google could figure this out in 2 minutes.
On Mon, Nov 2, 2015 at 9:00 AM, William Hermans <yyrk...@gmail.com> wrote: > #include <stdio.h> > > int main(void) > { > const float max_val = 4096; > > float test = ((4024 / max_val) * 1.8); > printf("%f\n", test); > > return 0; > } > > $ gcc test.c -Wall -o test > $ ./test > 1.768359 > > > On Mon, Nov 2, 2015 at 8:59 AM, William Hermans <yyrk...@gmail.com> wrote: > >> Anyway, since you do not seem to know why that does not work. >> >> Math on two integer values can not give out a float value. This is not a >> math problem, but a compiler behavior issue. Intentional or no, one value >> in the equation brackets *has* to be forced to a float value as such. >> >> 1) ((4024 / 4096.0) * 1.8) >> *OR* >> 2) const float max_value = 4096; ((4024 / max_value) * 1.8) >> >> It's also why I suggested using a const above. >> >> On Mon, Nov 2, 2015 at 8:16 AM, William Hermans <yyrk...@gmail.com> >> wrote: >> >>> really now. Prey tell, enlighten us then with your logic. >>> >>> On Mon, Nov 2, 2015 at 5:10 AM, Chad Baker <cmbak...@gmail.com> wrote: >>> >>>> No, I don't, but having taught programming for over 40 years, I know >>>> that students would take your equation and plug it in and then be surprised >>>> that they get 0 for an answer. >>>> >>>> On 11/1/2015 6:13 PM, William Hermans wrote: >>>> >>>> *Or 4024 * 1.8 / 4096?* >>>>> >>>> >>>> Ok, so let us put this another way. Do you think that is clear when >>>> written in code ? What if 1.8 were actually assigned to a constant >>>> pointer ? >>>> >>>> >>>> >>>> On Sat, Oct 31, 2015 at 5:01 AM, Chad Baker <cmbak...@gmail.com> wrote: >>>> >>>>> Or 4024 * 1.8 / 4096? >>>>> >>>>> >>>>> On 10/30/2015 12:18 PM, William Hermans wrote: >>>>> >>>>> By the way, the ADC gives out a value of 0-4095. So scaling voltage is >>>>> really simple. Say you get a value of 4024 for a reading. In order to get >>>>> a >>>>> reading from 0-1.8v from this . . . >>>>> >>>>> ((4024 / 4096) * 1.8) or 1.768359375v >>>>> >>>>> The max voltage on the pins still can not exceed 1.8v, this is why one >>>>> needs an opamp, or similar device to keep the input scaled down. But, in >>>>> this manner you could even track large voltages. Hundreds or even >>>>> thousands >>>>> of volts, at the cost of resolution. Which unfortunately can not be >>>>> avoided. So going by the above example . . . >>>>> >>>>> ((4024 / 4096) * 300) or 294.7265625v >>>>> >>>>> Does this make sense ? >>>>> >>>>> >>>>> On Fri, Oct 30, 2015 at 9:59 AM, William Hermans < <yyrk...@gmail.com> >>>>> yyrk...@gmail.com> wrote: >>>>> >>>>>> *BBB and Linux are new to me. One of the things I would like to do >>>>>>> is compute a ratio between two voltages, each of which might exceed 1.8 >>>>>>> VDC. One solution might be to use DACs to sent feedback voltages to >>>>>>> operational amplifiers that are supplied by 1.8 VDC. The goal is to >>>>>>> determine the ratio as quickly as possible and without waiting for >>>>>>> Linux to >>>>>>> get around to it (waiting for the ADC to happen).* >>>>>>> >>>>>> >>>>>> >>>>>> What sample rate do you need ? If something around only a few >>>>>> thousand samples a second. This can be done from userspace without using >>>>>> the PRU's. You can even use mmap() with /dev/mem/ and directly manipulate >>>>>> the ADC's registers, which can sample the ADC faster than 200ksps. >>>>>> However, >>>>>> the sample rate would not be as deterministic as using the PRU's. >>>>>> >>>>>> You can use a PRU to read the ADC's for sure. If you search the web >>>>>> for Beaglebone PRU + ADC >>>>>> , you will find many ways. People have been doing this for a long >>>>>> time( since the beaglebone white ), and if you search this google group, >>>>>> you'll even find full code for something someone called "ADCcollector". >>>>>> It's C, and PASM assembly, but is a very short / easy read / >>>>>> understanding. >>>>>> >>>>>> As for how to physically connect to the ADC, I'd listen to >>>>>> evilwulfile. He's been an EE for longer than many people on this group >>>>>> have >>>>>> been alive, and he knows his stuff ( I know him personally ). Don't risk >>>>>> burning up your board, as I've seen several people on these groups do . >>>>>> . . >>>>>> >>>>>> On Fri, Oct 30, 2015 at 9:43 AM, TJF < <jeli.freih...@gmail.com> >>>>>> jeli.freih...@gmail.com> wrote: >>>>>> >>>>>>> Hi John! >>>>>>> >>>>>>> As Przemek mentioned, a simple voltage divider can scale the input >>>>>>> voltage. Additionaly I use a LED (orange color) between the ADC input >>>>>>> and >>>>>>> ground in order to block overvoltage. (The LED starts to light up at 1V5 >>>>>>> and consumes full power at 1V8. 1 / 6 of the ADC resolution get lost (is >>>>>>> less accurate), but the burning LED as indicatior is a nice side >>>>>>> effect.) >>>>>>> >>>>>>> Regarding software you should have a look at libpruio >>>>>>> <http://hackaday.com/2015/02/16/library-upgrade-to-pru-gives-fast-io-on-beaglebone/#comments> >>>>>>> . >>>>>>> >>>>>>> BR >>>>>>> -- >>>>>>> For more options, visit <http://beagleboard.org/discuss> >>>>>>> http://beagleboard.org/discuss >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "BeagleBoard" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to <beagleboard+unsubscr...@googlegroups.com> >>>>>>> beagleboard+unsubscr...@googlegroups.com. >>>>>>> For more options, visit <https://groups.google.com/d/optout> >>>>>>> https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> >>>>> -- >>>>> For more options, visit http://beagleboard.org/discuss >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "BeagleBoard" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to <beagleboard+unsubscr...@googlegroups.com> >>>>> beagleboard+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>>> >>>>> >>>>> -- >>>>> Chad Baker Memphis, TN >>>>> -- >>>>> For more options, visit http://beagleboard.org/discuss >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "BeagleBoard" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to beagleboard+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "BeagleBoard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to beagleboard+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> >>>> -- >>>> Chad Baker Memphis, TN >>>> >>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "BeagleBoard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to beagleboard+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >> > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.