Gast
#40865
Hi
ich hab hier vier int-Datenfelder auf die 4 unsigned int Pointer zeigen
die stellenweise gemittelt werden sollen:
adc_dat0[0]=(unsigned int *)RAMEND+1;
adc_dat0[1]=(unsigned int *)RAMEND+1+2000;
adc_dat0[2]=(unsigned int *)RAMEND+1+4000;
adc_dat0[3]=(unsigned int *)RAMEND+1+6000;
Versuche ich das so:
Aufruf: gfx_mw(adc_dat0[0]);
void gfx_mw(unsigned int *dat)
{
unsigned int i,t;
for(i=0;i<1000;i++)
{
t=*(dat);
t+=*(dat+1000);
t+=*(dat+2000);
t+=*(dat+3000);
*dat=t/4;
dat++;
}
}
kommt nur Müll raus. Erhöhe ich die Pointer jedoch um das doppelte des
festen Wertes (sprich +2000, +4000 usw.) passt das Ergebnis. Sollte der
Compiler nicht anhand des Datentypes (unsigned int *) automatisch um
die richtige Anzahl Bytes erhöhen oder übersehe ich das was?
Matthias