Mirf24

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Seite 2 von 6
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 265
Dabei seit: 11 / 2009
Betreff:

Re: Mirf24

 · 
Gepostet: 18.05.2017 - 16:42 Uhr  ·  #9
Hallo miparo,
ok, dann ist auch gut.
Meine Module haben jedenfalls auf dem IC NRF24L01 aufgrdruckt.
Die Dinger sind ab 0.67€ , free shipping, aus China zu bekommen.
golf
rage
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Homepage: processanalytik.de
Beiträge: 237
Dabei seit: 02 / 2007
Betreff:

Re: Mirf24

 · 
Gepostet: 22.05.2017 - 08:35 Uhr  ·  #10
Hallo miparo

Code

mrfSetLocalAddr(0);

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

Ich habe mich da an das Handbuch gehalten, dort steht
Code

procedure mrfSetLocalAddr(adr : byte);
Die Prozedur stellt die lokale Adresse (0..255) ein.

Das sollte zwar nicht zum Problem werden, aber da unsere Sensoren über alle möglichen Interface verfügen und hier meist per RS485 auf Adresse 0 den Master erwarten, habe ich das so übernommen. Damit sollten die Geräte auf Adresse 0 den Cheffe finden. Aber das ist Kummer sein kleinster.

Einen schönen Tag noch
rage
wom
 
Avatar
 
Betreff:

Re: Mirf24

 · 
Gepostet: 29.05.2017 - 17:57 Uhr  ·  #11
Hallo zusammen,

habe da ein ähnliches Problem. Der uMIRF24 Treiber mit einem xmega32A4 hat da seine Probleme. Er arbeitet nicht. Ich verwende da einen nRF24L01P aufgebaut von MikroeElektronik. Habe da einen Click Steckplatz aufgebaut, was einzelne Komponenten da einfach geprüft werden können. Scheint aber nicht zu arbeiten. Ich verwende den SPI-Port C mit CE auf PortC.4, SS auf PortC.3 und den Int auf PortC.2.

Ich habe vor Jahren von E-Lab die Komponenten mit dem nRT24 verwendet und hatte keine Probleme.

Gruß
WOM
wom
 
Avatar
 
Betreff:

Re: Mirf24

 · 
Gepostet: 02.06.2017 - 09:17 Uhr  ·  #12
Hallo,
wenn ich mir so die Signale auf CE ansehe, erwartet der Baustein für 10uS einen Puls-high um die Daten zu senden. Das kann ich aber nicht sehen. Dieser ist anscheinend auf 0 für die Zet fest zu liegen.

Gruß
WOM

This operating mode pulses the CE high for at least 10µs. This allows one packet to be transmitted.
This is the normal operating mode. After the packet is transmitted, the nRF24L01+ enters standby-I
mode.
rage
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Homepage: processanalytik.de
Beiträge: 237
Dabei seit: 02 / 2007
Betreff:

Re: Mirf24

 · 
Gepostet: 02.06.2017 - 11:37 Uhr  ·  #13
Hey WOM
soweit habe ich das noch garnicht verfolgt, ich war der Hoffnung das das einfach behoben wird. Da ich noch ein paar Tage Zeit habe bis das Problem gelöst sein muß habe ich die Nachforschung erstmal beiseite gelegt. Aber danke für die Infos.

cu rage
wom
 
Avatar
 
Betreff:

Re: Mirf24

 · 
Gepostet: 08.06.2017 - 09:40 Uhr  ·  #14
Hallo zusammen,

hat schon irgend wer Infos zum MIRF24port mit der uses uMIRF24. Ich bring das mit dem angegebenen Treiber und dem xmega xmega32A4 zum laufen. Ich dachte das hier jemand Infos liefern kann. Es sieht so aus, dass der Sender nicht arbeitet. An der Hardware kann es nicht liegen. Bisher habe ich einige Probleme mit den xmega auch im bereich der I2C Treiber.

Hier verwende ich den Aufbau von Mikroe.

[url]
http://download.mikroe.com/doc…l-v100.pdf
[/url]

Gruß
WOM
Code
program ModRF_01M;
{$WG}                      {global Warnings on}
Device = xmega32A4, VCC=3.3;
Define_Fuses
  COMport   = USB;
  ProgMode  = PDI;

Import SysTick, TickTimer, SysLEDblink, MIRF24port;
Import WatchDog, SerPortD0, SerPortD1, SPI_C;

From System Import LongWord, LongInt, Float, PIDs;
From SysLEDblink Import LEDmessage, FlashOnce;    // this is optional

Define
// The XMegas don't provide any Oscillator fuses.
// So the application must setup the desired values 
      OSCtype        = int32MHz, PLLmul=4, prescB=1, prescC=1;
      SysTick        = 10;             {msec}
      StackSize      = $0064, iData;
      FrameSize      = $0064, iData;

      WatchDog       = msec2000;                       {2048msec}
      MIRF24port     = SPI_C, PortC, 4, 3, 2; // standard SPI port SS, CE, IRQ;

      SPIorderC      = MSB;
      SPImodeC       = 1;
      SPIprescC      = 1;//, double;    // double speed = optional
      SPI_SSC        = PortC, 4;
//      SPI_SSC        = none;

      SysLedBlink    = mSec25;              {SysTicks}
      SysLedBlink0   = PortR, 0, low;
      SysLedBlink1   = PortE, 0, high;

      // RS232
      SerPortD1     = 115200;
      RxBufferD1    = 30, iData;
      TxBufferD1    = 30, iData;

      // RS485
      SerPortD0     = 115200, Stop1, timeout;   {Baud, StopBits|Parity}
      SerCtrlD0     = PortD, 1, positive;    {XMega control line for RS485 driver}
      RxBufferD0    = 30, iData;
      TxBufferD0    = 30, iData;

      TickTimer   = Timer_C0;    // use Timer_C0 and no PortPin

uses uMIRF24;

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

type

{$IDATA}
{--------------------------------------------------------------}
{ Const Declarations }
Const
     LEDOn  : Boolean = False;
     LEDOff : Boolean = True;

{--------------------------------------------------------------}
{ Var Declarations }
Var
   Timer1  : SysTimer;
   Err     : Byte;
   uMIR_Aktiv        : Boolean;
   uMIR_Mode         : tMRFpkt;
   rxCnt              : byte;
   rxBuff            : array[0..31] of byte;
   rxString[@rxBuff] : string[30];
   txBuff            : array[0..31] of byte;
   txString[@rxBuff] : string[30];

   CE[@PortC,3]  : Bit;  { CE }

{$IDATA}


{--------------------------------------------------------------}
{ functions }

{--------------------------------------------------------------}
{ Initialisieren der CPU                                       }
{--------------------------------------------------------------}
Procedure InitPorts;
Begin
  DDRA    := DDRB AND %00000000;      // Output=1  Input=0
  DDRB    := DDRB AND %11111110;      // Output=1  Input=0
  DDRC    := DDRC OR %11011010;      // Output=1  Input=0
//  DDRE    := DDRE Or %00000001;       // Output=1  Input=0
  PortE   := $01;
  DDRR    := DDRR Or %00000001;       // Output=1  Input=0
End;

{--------------------------------------------------------------}
{--------------------------------------------------------------}
Procedure InitSystem;
Begin
     InitPorts;
     TickTimerTime(10000);            // 10000usec = 10msec
     TickTimerStart;
     FlushBuffer (RxBufferD0);
     FlushBuffer (TxBufferD0);
     FlushBuffer (RxBufferD1);
     FlushBuffer (TxBufferD1);
     mrfSetChan(mrfChan3, false);
     mrfSetPower(mrfdBm0);
     mrfSetLocalAddr(0);
     mrfSetRetryMax(10);
     mrfSetRetryTimeOut(40);                          // 5x 250usec -> 1.25msec
     mrfSetRFspeed(mrfRF2000);
     CE:=True;
     uMIR_Aktiv:=mrfInit;
     CE:=False;
     // wenn der  MIRF24 Treiber/Modul vorhanden ist
     if mrfInit then
       SetSerEnable(UsartD0, True);
       WriteLn(SerOutD0,'uMIR_Aktiv');
       SetSerEnable(UsartD0, False);
     EndIf;
End;

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
     EnableInts($87);
     InitSystem;
     SysLEDflashOnce(0);
     SetSerEnable(UsartD0, True);
     WriteLn(SerOutD0,'Mod_nRF start');
     SetSysTimer(Timer1,100);
     loop
       // wenn der  MIRF24 Treiber/Modul vorhanden ist
         if mrfInit then
           txString:='Test_1';
           WriteLn(SerOutD0,txString);
           CE:=True;
           If mrfTxPacket(2, @txBuff, 6, True)=False Then
             Case MRFgetState Of
             
             EndCase;
             WriteLn(SerOutD0,'mrfTxPacket=False');
           Else
             WriteLn(SerOutD0,'mrfTxPacket=True');
           EndIf;
           CE:=False;
           mDelay(500);
           txString:='Test_2';
           WriteLn(SerOutD0,txString);
           CE:=True;
           If mrfTxPacket(2, @txBuff,6, False)=False Then
             WriteLn(SerOutD0,'mrfTxPacket=False');
           Else
             WriteLn(SerOutD0,'mrfTxPacket=True');
           EndIf;
           CE:=False;
           mDelay(500);
         Else
           WriteLn(SerOutD0,'uMIR_Aktiv=False');
         EndIf;


         SysLEDflashOnce(0);
       mDelay(100);
     endloop;
end.
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 265
Dabei seit: 11 / 2009
Betreff:

Re: Mirf24

 · 
Gepostet: 09.06.2017 - 08:05 Uhr  ·  #15
hallo wom,
der NRF sendet schon einwandfrei mit dem Source von rage mit uMIRF24. Siehe auch mein PNG vom 12.5.
Als Slave habe ich jetzt testweise mal einen ATmega88 genommen, damit klappt die Verbindung mit Broadcast und ohne zu dem Master mit einem ATxmega32A4U.
Mit dem ATXmega als Slave hats bei mir bisher auch nicht funktioniert. Ob sich nach dem letzten Avrco-Update was verändert hat, kann ich nicht sagen.

golf
wom
 
Avatar
 
Betreff:

Re: Mirf24

 · 
Gepostet: 09.06.2017 - 09:20 Uhr  ·  #16
Hallo,

mit dieser Implementation arbeitet der Compiler ohne Probleme, aber danach ist ein Programmieren der CPU nicht möglich, und zwar dauerhaft. Der Prommer liefert einen TimeOut error. Ist ärgerlich da es erst nach dem Austauschen der CPU mit einem anderen Programm dann wieder Programmer funktioniert.

Mir ist nicht bekannt das man mit einer Software die keinen Fehler liefert die CPU nicht mehr erreichen kann.

Code

....
{$NoSave}         // standard register save is sufficient
{--------------------------------------------------------------}
{--------------------------------------------------------------}
Interrupt TCD0_INTOVF;
begin
     //ASM: CALL System.$INTERRUPT_SYSTICK_USER;
end;
{--------------------------------------------------------------}
{--------------------------------------------------------------}
Procedure onTickTimer;          // onTickTimer(SaveAllRegs);SaveAllRegs not necessary here
begin
     //ASM: CALL System.$INTERRUPT_SYSTICK_USER;
end;
.....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Seite 2 von 6
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   137   151 · Page-Gen-Time: 0.060935s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI