Hallo Baumagnat,

Zitat Zitat von baumagnat
geht aber beides nicht.

Schiebt da was in die falsche Richtung????
Cmock's Code ist an sich eigentlich richig aber ich glaube da fehlt ein "UL" nach den Long-Zahlen. Ohne "UL" werden sie als ints interpretiert, und ein int hat beim avr-gcc 16 Bit, d.h. die letzten 16 Bit werden von 0x80000000 abgeschnitten. So müsste das funktionieren:
Code:
void zerlegen (unsigned long int wert) {
  int bit;

  for (bit = 0; bit < 32; bit++) {
    if(wert & 0x80000000UL)
      senden(1);
    else
      senden(0);
    wert <<= 1UL;
  }
}
bzw

Code:
void zerlegen (unsigned long int wert) {
  int bit;

  for (bit = 0; bit < 32; bit++) {
    if(wert & 1UL)
      senden(1);
    else
      senden(0);
    wert >>= 1UL;
  }
}
wenn LSB zuerst ausgegebenwerden soll.

MfG Mark