Code:
temperatur.temp=1623;
x.mag_x=1672122;
y.mag_y=1672312;
z.mag_z=1672312;
hier befüllst du in deinen unions die Double-Werte. Gut
In der timer-routine willst du sie schicken. in nehm als beispiel den ersten transmit-code, die anderen sind eigentlich genauso
Code:
void USART_Transmit()
{
while(!(UCSRA.5)); // warten, bis Buffer leer
temp1=temperatur.tempc[0]; // das erste byte des double
UDR=temp1; // weg damit
while(!(UCSRA.5)); // wieder warten, bis Buffer leer
temp2=temperatur.tempc[1]; // das 2. byte des double
UDR=temp2; // weg damit
while(!(UCSRA.5)); // wieder warten, bis Buffer leer
temp3=temperatur.tempc[2]; // das 3. byte des double
UDR=temp3; // weg damit
while(!(UCSRA.5)); // wieder warten, bis Buffer leer
temp4=temperatur.tempc[3]; // das 4. byte des double
UDR=temp4; // weg damit
}
Da aber der Compiler bezahlt ist (nehm ich an), soll er was arbeiten. Das Gleiche, aber kompakter:
Code:
void USART_Transmit()
{
unsigned char i;
for (i=0;i<4;i++)
{
while(!(UCSRA.5));
UDR=temperatur.tempc[i];
}
}
Verständlich ?
Lesezeichen