Ich versuche gerade mit dem Mirf24 Treiber ein Broadcast Telegramm zu senden, jedoch Bricht der immer mit Fehler ab. Das Initialisieren klappt allerdings.
Die LED Blinkt Kurz wenn die Initialisierung geklappt hat. Danach sollte sie nach jedem Telegramm einmal Kurz blinken, mit kurzer Pause. Allerdings Blinkt die LED länger und macht eine lange Pause, was auf einen Fehler schließen lässt.
Angeschlossen ist :
CE = PB0
/CS = PB1
SCK = PB2
MOSI = PB3
MISO = PB4
/IRQ = PB5
kann mir jemand helfen?
Johannes
program Funk;
{$NOSHADOW}
{ $WG} {global Warnings off}
Device = mega8, VCC=5;
{ $BOOTRST $00C00} {Reset Jump to $00C00}
Define_Fuses
// Override_Fuses;
// NoteBook = A;
COMport = USB;
LockBits0 = [];
FuseBits0 = [];
FuseBits1 = [];
Import SysTick, MIRF24port;
From System Import ;
Define
ProcClock = 16000000; {Hertz}
SysTick = 10; {msec}
StackSize = $0040, iData;
FrameSize = $0040, iData;
MIRF24port = SPI_Soft, PortC, 2, 3, 4, 1, 0, 5;
// SCK, MOSI, MISO, SS, CE, IRQ
uses uMIRF24;
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
Var
txBuff : array[0..31] of byte;
txString[@txBuff] : string[30];
rxBuff : array[0..31] of byte;
rxCnt : byte;
rxString[@rxBuff] : string[30];
idx : byte;
LEDsend[@PortD,7] : bit;
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
DDRD := %10000000;
incl(LedSend);
EnableInts;
mrfSetChan(mrfChan13, false);
mrfSetPower(mrfdBm0);
mrfSetLocalAddr(0);
mrfSetRetryMax(10);
mrfSetRetryTimeOut(4); // 5x 250usec -> 1.25msec
mrfSetRFspeed(mrfRF250);
if mrfInit then
excl(LedSend);
mdelay(500);
incl(LedSend);
idx:= 0;
loop
txString:= 'Hello MIRF24 Broadcast';
if mrfTxPacket(2, @txBuff, 24, true) then
excl(LedSend);
mdelay(100);
incl(LedSend);
mDelay(100); // wait for the slave beep!
else
excl(LedSend);
mdelay(500);
incl(LedSend);
mDelay(1000);
endif;
{ txString:= 'Hello MIRF24 Data ' +ByteToStr(idx);
if mrfTxPacket(2, @txBuff, 30, false) then
mDelay(100); // wait for the slave beep!
else
mDelay(1000);
endif; }
inc(idx);
endloop;
else
endif;
end Funk.
Die LED Blinkt Kurz wenn die Initialisierung geklappt hat. Danach sollte sie nach jedem Telegramm einmal Kurz blinken, mit kurzer Pause. Allerdings Blinkt die LED länger und macht eine lange Pause, was auf einen Fehler schließen lässt.
Angeschlossen ist :
CE = PB0
/CS = PB1
SCK = PB2
MOSI = PB3
MISO = PB4
/IRQ = PB5
kann mir jemand helfen?
Johannes
program Funk;
{$NOSHADOW}
{ $WG} {global Warnings off}
Device = mega8, VCC=5;
{ $BOOTRST $00C00} {Reset Jump to $00C00}
Define_Fuses
// Override_Fuses;
// NoteBook = A;
COMport = USB;
LockBits0 = [];
FuseBits0 = [];
FuseBits1 = [];
Import SysTick, MIRF24port;
From System Import ;
Define
ProcClock = 16000000; {Hertz}
SysTick = 10; {msec}
StackSize = $0040, iData;
FrameSize = $0040, iData;
MIRF24port = SPI_Soft, PortC, 2, 3, 4, 1, 0, 5;
// SCK, MOSI, MISO, SS, CE, IRQ
uses uMIRF24;
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
Var
txBuff : array[0..31] of byte;
txString[@txBuff] : string[30];
rxBuff : array[0..31] of byte;
rxCnt : byte;
rxString[@rxBuff] : string[30];
idx : byte;
LEDsend[@PortD,7] : bit;
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
DDRD := %10000000;
incl(LedSend);
EnableInts;
mrfSetChan(mrfChan13, false);
mrfSetPower(mrfdBm0);
mrfSetLocalAddr(0);
mrfSetRetryMax(10);
mrfSetRetryTimeOut(4); // 5x 250usec -> 1.25msec
mrfSetRFspeed(mrfRF250);
if mrfInit then
excl(LedSend);
mdelay(500);
incl(LedSend);
idx:= 0;
loop
txString:= 'Hello MIRF24 Broadcast';
if mrfTxPacket(2, @txBuff, 24, true) then
excl(LedSend);
mdelay(100);
incl(LedSend);
mDelay(100); // wait for the slave beep!
else
excl(LedSend);
mdelay(500);
incl(LedSend);
mDelay(1000);
endif;
{ txString:= 'Hello MIRF24 Data ' +ByteToStr(idx);
if mrfTxPacket(2, @txBuff, 30, false) then
mDelay(100); // wait for the slave beep!
else
mDelay(1000);
endif; }
inc(idx);
endloop;
else
endif;
end Funk.