Mirf24

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Page 1 of 6
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

Mirf24

 · 
Posted: 08.05.2017 - 16:03  ·  #1
Guten Tag

Nachdem ich nun endlich mal den Mirf-Empfänger für unsere Sensoren fertig gelötet habe, gibt es nun doch noch ein kleines Problem.

Code

program NRF;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = xmega32E5, VCC=3.3;
{ $BOOTRST $04000}         {Reset Jump to $04000}

Define_Fuses
//  Override_Fuses;
  NoteBook   = A;
  COMport    = USB;
  LockBits0 = [];
  FuseBits1  = [];
  FuseBits2  = [];

Import SysTick,MIRF24port;

From System Import ;


Define
  OSCtype        = int32MHz, PLLmul=4, prescB=1, prescC=1;
  SysTick        = 10;             {msec}
  StackSize      = $0200, iData;
  FrameSize      = $0200, iData;
  MIRF24port     = SPI_C, PortC, 4, 3, 2; // standard SPI port SS, CE, IRQ
                                // SS, CE, IRQ
uses uMIRF24;

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type


{--------------------------------------------------------------}
{ Const Declarations }

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
  RunTimeFlags       : Byte;
  InitNRFOK    [@RunTimeFlags,0]: Bit;

{$EEPROM}
{--------------------------------------------------------------}
{ functions }


{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
var
  txBuff             : array[0..31] of byte;
  txString[@txBuff]  : string[30];
  rxBuff             : array[0..31] of byte;
  rxString[@rxBuff]  : string[30];
  rxCnt,uCount       : byte;
  rec                : tMRFpkt;
begin

  InitNRFOK:=False;
  EnableInts($87);
  mrfSetChan(tMRFchan(1), false);
  mrfSetPower(tMRFpwr(1));
  mrfSetLocalAddr(0);
  mrfSetRetryMax(4);
  mrfSetRetryTimeOut(4);                          // 5x 250usec -> 1.25msec
  mrfSetRFspeed(tMRFrfSpeed(1));
  InitNRFOK:=mrfInit;
  loop
    if InitNRFOK then
      rec:=mrfGetRxType;         //<------------Hier erkennt der Chip Korrekt Broadcast oder Data
      if rec <> mrfPKTnone then

        case mrfRxPacket(@rxBuff, 255, rxCnt) of //<--------Hier kommen keine Daten an
          mrfPKTnone  : // timeout, nothing received
                    |
          mrfPKTdata  : // a data packet received
                      rxCnt:=1;
                    |
          mrfPKTbcast : // a broadcast packet received
                      rxCnt:=0;
                    |
        endcase;
      endif;


    endif;
  endloop;
end NRF.


Der Treiber erkennt eingehende Daten, und unterscheidet auch ob Broadcast oder nur Daten kommen, beim Auslesen der Daten ist das Ergebnis immer mrfPKTnone.
Versuchsweise auch mit einem XMEGA256A3U getestet, das Ergebnis bleibt das gleiche.
Hat jemand damit Erfahrung?

Danke und cu
rage
Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Re: Mirf24

 · 
Posted: 10.05.2017 - 22:38  ·  #2
versuche mal folgendes
Code

rxStatus := mrfRxPacket(@rxBuff, 255, rxCnt) 
case rxStatus of
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

Re: Mirf24

 · 
Posted: 11.05.2017 - 08:56  ·  #3
Hallo Thomas
es ändert sich nichts, bei der Statusabfrage ist der Status immer wie erwartet. Ich sende immer abwechselnd 1 Broadcast- und 1 Standardpaket. Auf der Empfängerseite wird bei der Statusabfrage das jeweils richtig erkannt, beim Abholen des Paket ist dann alle wie bisher, Status none, Count=0 und der Buffer bleibt auch leer. Da das ja ein Treiber von AVRco ist weiß ich auch nicht wo ich noch suchen soll. Leider habe ich auch keine älteren Boards mehr um einen Gegentest mit einem ATMega machen zu können.

cu rage
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: Mirf24

 · 
Posted: 12.05.2017 - 14:47  ·  #4
Hallo rage,
ich hab mich erinnert, irgendwann auch mal solche Module gekauft zu haben. Ich hab deshalb auf die Schnelle auch mal so einen Test gemacht mit ATXmega16A4U. Das Modul sendet, aber ich bekomme mit Deinem Programm ebenfalls keine Daten rein. Bei den Xmega-Demos ist nur die Senderoutine drinnen. Was ich gemerkt habe, ist daß mrfSetFreq(2452,false) scheinbar nicht stimmt. Mit mrfSetChan(mrfChan9, false) sendet das Module aber auf 2452 Mhz. Anbei eine Aufnahme von der Frequenz 2452 MHz mit den Datenpaketen mit Retrys und dann einem Bradcast-Paket. Wenns auch nicht weiterhilft.
golf
Attachments
Mirf24 auf 2452
Filename: Mirf24 Data mit Retr …  MHz.PNG
Filesize: 274.54 KB
Title: Mirf24 auf 2452
Download counter: 226
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

Re: Mirf24

 · 
Posted: 17.05.2017 - 08:29  ·  #5
Guten Morgen

um sicher zustellen, das es nicht am falschen Kanal liegt, habe ich alle möglichen Kominationen durchprobiert. Es bleibt dabei, die Statusabfrage liefert was sie erkennt. Das entspricht auch dem was ich sende abwechselnd 1 Broadcast und ein Standardpaket. Das Einlesen gelingt nie. Was ich nun nicht weiß ist, wie sich der Treiber verhalten sollte, ist bei der Statusabfrage schon das ganze Paket eingelesen und muß nur noch ausgelesen werden, oder ist das die Erkennung es folgt ein Paket? Aber das kann ich nicht beantworten, da brauchte ich mal Hilfe.

Einen schönen Tag
rage
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Mirf24

 · 
Posted: 17.05.2017 - 21:03  ·  #6
Hi rage,
Code
  mrfSetLocalAddr(0);

das geht natürlich nicht. Muss größer 0 sein.

Mit dem mrfRxPacket(rxBuf,250,rxCount) ist schon alles erledigt. Sollten Daten empfangen worden sein dann liegen die auch gleich in deinen rxBuf.

Wobei ich gerade einen Fehler im Treiber sehe, da wird die Addr von Pipe0 gesetzt was überhaupt nicht funktioniert, da die unique ist.Sollte eigentlch Pipe1 sein.
Leider finde ich nur noch einen MIRF in der Kiste .. mal schauen.

Gruß
miparo
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: Mirf24

 · 
Posted: 18.05.2017 - 06:29  ·  #7
Hallo miparo,

ich kann Dir gerne eines meiner Billig-China-Module zusenden. Die liegen eh nur rum.
golf
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: Mirf24

 · 
Posted: 18.05.2017 - 13:21  ·  #8
Hi Golf,
Danke . Ich hatte mir schon zwei bestellt.

Dein Chinateil ist dann der Nachbau SE8R01 vom nRF24 ?

Gruß
miparo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Page 1 of 6
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   140   155 · Page-Gen-Time: 0.0324s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI