Atmega128 og C -spørgsmål:"Signed Integer division rounds to" ?

Hej NG

Nu ved jeg godt, at denne gruppe prim=E6rt er for elektronik-selvbyg,=20 men her sidder jo ogs=E5 en m=E6ngde folk, som har forstand p=E5 diverse=20 atmega'er :-)

Vi er ved at lave et projekt, hvor vi fors=F8ger at simulere en=20 implementation af et filter og en controller p=E5 en Atmega128. For at=20 undg=E5 floating-point operationer (den har travlt! ), vil vi fors=F8ge os=20 med fixed-point istedet. Undervejs melder der sig s=E5 sp=F8rgsm=E5let: N= =E5r=20 man laver en division, hvor mindst et af elementerne er en signed=20 integer, hvad sker der s=E5 i forhold til afrunding? Afrunder den mod=20 nul, eller negativt uendeligt?

Vi har fundet f=F8lgende i dokumentationen for Simulink Fixed-Point: "As stated in the C standard, the most efficient rounding mode for multiplication operations in every case is floor. However, the C=20 standard does not specify the rounding mode for division in cases where at=20 least one of the operands is negative. Therefore, the most efficient rounding=20 mode for a divide operation with signed data types can be floor or zero=20 depending on your hardware."

Vi har ikke kunnet finde noget i Atmega128's dokumentation...

Mvh Jesper

--

formatting link

Reply to
Jesper H
Loading thread data ...

Hej Jesper. Du skal nok nærmere til at lede lidt i dokumentationen for den C compiler du benytter. Nu er jeg ikke klar over om ATMega128 har en hardware divider, men hvis den ikke har, ja så er det C compilerens manual du har brug for. Jeg vil tro at compileren implementere division vha nogle subtraktioner. Led evt. på Google for at finde en forklaring.

Overvej om det ikke kan betale sig at gange med "den omvendte" i stedet for at dividere. Det er generelt noget møg at foretage division med MCU/CPU/DSP'er. Hvor er det iøvrigt i dine filtre du har brug for division? Er det FIR eller IIR du har gang i?

/Thomas

Reply to
Thomas Lykkeberg

Du skal nok n=E6rmere til at lede lidt i dokumentationen for

Hej Thomas

Takker for svaret. Hmm, det ser faktisk ikke ud til, at jeg skal bruge=20 division i selve filteret. Det var blot SimuLink Fixed-Point blokken,=20 som mente den gerne ville vide det, men informationen er vel ikke=20 obligatorisk hvis division ikke indg=E5r.

Mvh Jesper

Reply to
Jesper H

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.