FHEM Forum

CUL - Entwicklung => Fehlerberichte => Thema gestartet von: Michael N. am 12 Januar 2013, 18:00:21

Titel: Fehler in ccTX
Beitrag von: Michael N. am 12 Januar 2013, 18:00:21
Ich grüble jetzt schon zum wiederholten Male über ccTX (ist ja wohl so schon länger im Code)


void
ccTX(void)
{
  uint8_t cnt = 0xff;
  EIMSK  &= ~_BV(CC1100_INT);

  // Going from RX to TX does not work if there was a reception less than 0.5
  // sec ago. Due to CCA? Using IDLE helps to shorten this period(?)
  ccStrobe(CC1100_SIDLE);
  while(cnt-- && (ccStrobe( CC1100_STX ) & 0x70) != 2)
    my_delay_us(10);
}


(1) Wenn ich nicht total falsch liege, ist der Ausdruck "ccStrobe( CC1100_STX ) & 0x70) != 2" immer wahr. Denn wenn ich etwas mit 0x70 bit-weise Und-verknüpfe kann niemals "2" herauskommen. Denn ein im Ergebnis von "ccStrobe( CC1100_STX )" gesetztes bit 1 (0x02) würde ja durch die Und-Verknüpfung maskiert, oder?

(2) Ist das Verhalten eigentlich tatsächlich sinnvoll? Wenn wir den CC1100 in den Idle-Zustand versetzen, empfängt er nicht mehr und merkt also auch nicht, dass jemand anderes sendet. Ist es sinnvoll, dass wir Pakete, die gerade gesendet werden, stören, um unser Paket loszuwerden?
Titel: Aw: Fehler in ccTX
Beitrag von: Matthias Gehre am 10 Februar 2013, 20:20:02
Also m.E. hast du vollkommen Recht.
Leider scheint der ursprüngliche Programmier sich nicht zu melden. Hast du mal
probiert, ob was passiert, wenn du deine Änderungen vornimmst?