From: Cesar Rabak <csrabak@yahoo.com.br>
Subject: Re: Translating an embedded C algorithm
Date: Wed, 17 Jan 2007 08:48:43 -0200
Date: 2007-01-17T08:48:43-02:00 [thread overview]
Message-ID: <eokuq6$821$5@aioe.org> (raw)
In-Reply-To:
Vo, Anh (US SSA) escreveu:
> -----Original Message----- From: comp.lang.ada-bounces@ada-france.org
> [mailto:comp.lang.ada-bounces@ada-france.org] On Behalf Of Cesar
> Rabak
>
> Vo, Anh (US SSA) escreveu:
>> -----Original Message-----
> [snipped] A suggestion for the OP:
>
> < MINIMUM_ADC_COUNT : constant := Integer'Last; <
> MAXIMUM_ADC_COUNT : constant := Integer'Last; < SPACING : constant
> := 1; ..
>> MINIMUM_ADC_COUNT : constant := 220; MAXIMUM_ADC_COUNT : constant
>> := 468; SPACING : constant := 8;
>
> The values 220 and 468 come from its Table 1 (PDF file). Also SPACING
> is described as being 8.
>
> Thanks for pointing these values out. I did it in hurry. So, I did
> not read the PDF file in details. Today I attempted to find out where
> ReadEEPROM table or function is defined. I did not see it. In
> addition, I did ask for its definition. However, it was left out.
> Again, here it is.
You're welcome. I also did read very diagonally, probably an
implementation of mine would have errors as well ;-)
>
> function ReadEEPROM (Temp : in Integer) return Integer is begin
> return Temp; -- for now end ReadEEPROM;
>
> I assume ReadEEPROM is a function. Whether it is a table or a
> function, it needs to be defined. Assume that ReadEEPROM is defined,
> here is the updated version of it. Thanks to Christoph Grein for his
> correction.
>
Here a comment: it's the right assumption per OP description and
C code. However, I think that in an embedded system (specially for a
microcontroller) the cost of a function call just to get a value may be
not worth of. As the value of the argument seems to be a constant (all
uppercase names in C normally are macros), I think ReadEEPROM just reads
a memory (in E�PROM probably).
> ----------------------------------------------------------------------
> --| MeasureTemperature --| --| Calculates the temperature in �C
> given the ADC count by lookup --| table and linear interpolation of
> the diode circuit characteristic. --| --| Parameters: --| AdcCount
> Raw ADC count. --| --| Returns: --| Temperature in �C x 10.
> INVALID_TEMPERATURE if out of range. --| --| Note: GNAT-GPL-2006
> compiler on Windows was used
> -----------------------------------------------------------------------
>
Observe the 'specification' on this comment (not yours I know, but
rather a direct translation of the OP C code) and the implementation:
> function Measure_Temperature (Adc_Count : in Integer) return Integer
> is
[snipped]
I would have written this part (to be accord the spec):
> if (Adc_Count < MINIMUM_ADC_COUNT) then -- Underflow of ADC -
> saturate at minimum value Index := 0; elsif (Adc_Count >
> MAXIMUM_ADC_COUNT) then -- Overflow of ADC - saturate at maximum
> value Index := TEMPERATURE_TABLE_NUM_ENTRIES - 1;
this way:
-- beware of line wrap in Usenet
if Adc_Count < MINIMUM_ADC_COUNT or else Adc_Count >
MAXIMUM_ADC_COUNT then
return INVALID_TEMPERATURE;
> else -- Find the index of the table entry just below the ADC value
> Index := (Adc_Count - MINIMUM_ADC_COUNT) / SPACING; end if;
and thus I would have put all the remaining of this code within the else
block above.
next prev parent reply other threads:[~2007-01-17 10:48 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-15 14:36 Translating an embedded C algorithm Talulah
2007-01-16 0:06 ` Jeffrey Carter
2007-01-16 1:10 ` Marc A. Criley
2007-01-16 2:21 ` Cesar Rabak
2007-01-16 10:40 ` Markus E Leypold
2007-01-16 14:48 ` Larry Kilgallen
2007-01-16 17:32 ` Jeffrey Carter
2007-01-16 18:04 ` Cesar Rabak
2007-01-17 0:09 ` Jeffrey Carter
2007-01-17 1:07 ` Cesar Rabak
2007-01-16 4:37 ` Alexander E. Kopilovich
2007-01-16 13:37 ` Cesar Rabak
2007-01-16 23:47 ` Simon Wright
2007-01-17 1:02 ` Cesar Rabak
2007-01-16 3:50 ` Vo, Anh (US SSA)
2007-01-16 12:15 ` Niklas Holsti
2007-01-16 23:50 ` Simon Wright
2007-01-18 16:17 ` Niklas Holsti
2007-01-18 16:41 ` Ludovic Brenta
2007-01-18 20:02 ` Niklas Holsti
2007-01-18 22:25 ` Cesar Rabak
2007-01-19 8:32 ` Niklas Holsti
2007-01-19 19:15 ` Cesar Rabak
2007-01-19 20:49 ` Simon Wright
2007-01-18 16:55 ` Robert A Duff
2007-01-18 18:54 ` Jeffrey Carter
2007-01-19 0:45 ` Robert A Duff
2007-01-18 21:25 ` Niklas Holsti
2007-01-19 0:50 ` Robert A Duff
2007-01-19 4:43 ` Jeffrey Carter
2007-01-18 18:43 ` Jeffrey Carter
2007-01-18 20:19 ` Niklas Holsti
2007-01-18 20:30 ` Niklas Holsti
2007-01-18 23:34 ` Cesar Rabak
2007-01-19 8:57 ` Niklas Holsti
2007-01-19 2:11 ` Steve Whalen
2007-01-19 10:27 ` Niklas Holsti
2007-01-16 13:32 ` Cesar Rabak
2007-01-16 14:47 ` Gautier
2007-01-16 15:15 ` Cesar Rabak
2007-01-16 15:16 ` Jean-Pierre Rosen
2007-01-16 16:12 ` Ludovic Brenta
2007-01-16 17:10 ` Georg Bauhaus
2007-01-16 22:32 ` Ludovic Brenta
2007-01-17 20:22 ` Georg Bauhaus
2007-01-18 9:23 ` Ludovic Brenta
2007-01-16 17:12 ` Cesar Rabak
2007-01-16 17:20 ` Frank J. Lhota
2007-01-16 18:09 ` Cesar Rabak
2007-01-16 17:36 ` Dmitry A. Kazakov
2007-01-16 18:08 ` Cesar Rabak
2007-01-16 18:48 ` Dmitry A. Kazakov
2007-01-16 20:03 ` Cesar Rabak
2007-01-18 19:33 ` Björn Persson
2007-01-18 22:32 ` Cesar Rabak
2007-01-19 20:26 ` Björn Persson
2007-01-19 23:25 ` Cesar Rabak
2007-01-19 7:15 ` Maciej Sobczak
2007-01-19 20:27 ` Björn Persson
2007-01-19 20:34 ` Robert A Duff
2007-01-17 13:48 ` Maciej Sobczak
2007-01-17 23:32 ` Translating an embedded C algorithm -- OT Cesar Rabak
2007-01-18 8:56 ` Talulah
2007-01-18 22:05 ` Cesar Rabak
2007-01-18 9:03 ` Maciej Sobczak
2007-01-18 10:22 ` Alex R. Mosteo
2007-01-18 18:34 ` Jeffrey Carter
2007-01-18 22:26 ` Cesar Rabak
2007-01-19 4:45 ` Jeffrey Carter
2007-01-18 22:18 ` Cesar Rabak
2007-01-19 20:53 ` Simon Wright
2007-01-16 15:55 ` Translating an embedded C algorithm Cesar Rabak
2007-01-17 3:00 ` Vo, Anh (US SSA)
2007-01-17 10:48 ` Cesar Rabak [this message]
2007-01-17 11:44 ` Niklas Holsti
2007-01-17 13:31 ` Talulah
2007-01-17 19:20 ` Jeffrey Carter
2007-01-18 14:19 ` Talulah
2007-01-18 15:28 ` Jean-Pierre Rosen
2007-01-18 23:27 ` Cesar Rabak
2007-01-18 18:51 ` Jeffrey Carter
2007-01-18 22:30 ` Cesar Rabak
2007-01-19 4:48 ` Jeffrey Carter
2007-01-19 19:13 ` Cesar Rabak
2007-01-20 20:56 ` Jeffrey Carter
2007-01-19 2:21 ` Alexander E. Kopilovich
2007-01-19 3:25 ` Larry Kilgallen
2007-01-20 0:46 ` Alexander E. Kopilovich
2007-01-20 13:03 ` Larry Kilgallen
2007-01-20 16:54 ` Alexander E. Kopilovich
2007-01-20 23:53 ` Larry Kilgallen
2007-01-20 21:02 ` Jeffrey Carter
2007-01-25 21:59 ` Markus E Leypold
2007-01-26 4:06 ` Larry Kilgallen
2007-01-26 11:26 ` Markus E Leypold
2007-01-26 12:25 ` Cesar Rabak
2007-01-19 4:52 ` Jeffrey Carter
2007-01-19 10:13 ` Warner BRUNS
2007-01-19 14:54 ` Robert A Duff
2007-01-19 4:08 ` Steve
2007-01-19 20:41 ` Simon Wright
-- strict thread matches above, loose matches on Subject: below --
2007-01-17 7:07 AW: " Grein, Christoph (Fa. ESG)
2007-01-17 10:26 ` Ludovic Brenta
2007-01-17 16:44 ` Markus E Leypold
2007-01-18 8:49 ` Ludovic Brenta
2007-01-19 9:33 ` Stephen Leake
2007-01-19 19:23 ` Cesar Rabak
2007-01-19 20:27 ` Robert A Duff
2007-01-20 9:54 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox