Autor Thema: Fehler in ccTX  (Gelesen 1290 mal)

Offline Michael N.

  • New Member
  • *
  • Beiträge: 28
Fehler in ccTX
« 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?

Offline Matthias Gehre

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 707
Aw: Fehler in ccTX
« Antwort #1 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?