112 schrieb:
> IRQ_MASK |= (1<<AWAKE_EN)
> |(1<<TX_END_EN)
> |(1<<AMI_EN)
> |(CCA_ED_DONE_EN)
> |(1<<RX_END_EN)
> |(1<<RX_START_EN)
> |(1<<PLL_LOCK_EN);
Hast du das wirklich so stehen? Das mit dem CCA_ED_DONE_EN würde
ich mir nochmal angucken. ;-) Außerdem ist das |= natürlich
Unsinn, wenn du sowieso alle Bits setzen willst... Kannste auch
gleich 0xFF schreiben, dann sieht man wenigstens, dass alle
gesetzt sind (ich hoffe, du hast auch alle ISRs installiert).
> PHY_CC_CCA=0x33; //wähle Kanal 19 für transmit == 2.445Mhz
Besser wäre es, Subregister zu benutzen.
> //Einstellungen für ARET-Mode
> XAH_CTRL_0 = 0xF0; // 15 Wiederholungen beim Senden
> XAH_CTRL_0 = 0x05; // MAX_CSMA_RETRIES festsetzen auf 5
Diese beiden Schreibzugriffe kollidieren irgendwie.
Ich würde dir empfehlen, derartige Werte grundsätzlich erstmal auf
"default" zu belassen, also so, wie der IC aus dem Reset heraus kommt.
> PRR1 &= ~(1<<PRTRX24); //Transceiver braucht Power
Überflüssig, die hat er bereits nach dem Reset.
> SFD_VALUE=0xA7; //(Standard-Value)
Auch sowas bitte auf Reset-Werten stehen lassen.
> XAH_CTRL_1 = 0x02; //Promiscuous-Mode aktivieren --> sobald PHR
> detektiert endet der Frame mit RX_End Interrupt. auch wenn FCS failed
Wenn du alles empfangen willst (auch x-beliebigen Müll), dann nimm
besser den einfach RX-Modus statt des RX_AACK.
> Nun... das Programm läuft nicht ganz wie es soll
Beschreib' doch lieber mal, was es bereits tut.
> Hat jemand von euch Ideen, wie man sinnvollerweise hier weiterkommt,
> vielleicht Schon Erfahrungen mit einer ZigBee Übertragung gemacht und
> bereit seinen Code als Beispiel zu posten?
Ich würde an deiner Stelle mit den Beispielapplikationen von µracoli
anfangen. Wenn du diese am Laufen hast, weißt du, dass die Hardware
OK ist, dann kannst du anfangen, einen der beiden Knoten mit komplett
eigener Firmware zu füllen (so das dein Ehrgeiz ist, du kannst
natürlich auch einfach auf der Basis von µracoli weiterentwickeln).