Skickade PM men det kanske är bättre att fråga "publikt" så...
Stort tack för sändarkoden! Efter lite modifiering funkar den perfekt (la till absolutdimning bla.)
Undrar om det är nån spec. licens på koden? (om jag vill sprida vidare eller sälja till kompisar/arbetskamrater)
Och vill du dela med dig av mottagarkoden? Självklart delar jag med mig om jag får den att funka bättre (om licensen tillåter det dvs.).
Egen Nexa Sändare/Mottagare/Sniffer :)
-
- 3 stars
- Posts: 69
- Joined: Mon 22 Nov 2010, 22:26
- Location: Luleå
Re: Egen Nexa Sändare/Mottagare/Sniffer :)
Inga problem med koden, använd den som du vill
Men "absolut dimmnings" protokollet skulle jag gärna vilja ha
, har inte hittat det på nätet nånstans...
Självfallet får du mottagarkoden åxå, inga problem, postar den asap.

Men "absolut dimmnings" protokollet skulle jag gärna vilja ha


Självfallet får du mottagarkoden åxå, inga problem, postar den asap.
________________________________________________________________________
// Sonny // ( If assembler looks blurry....try 2 C# ;)
// Sonny // ( If assembler looks blurry....try 2 C# ;)
-
- 3 stars
- Posts: 69
- Joined: Mon 22 Nov 2010, 22:26
- Location: Luleå
Re: Egen Nexa Sändare/Mottagare/Sniffer :)
Här kommer koden, kom i håg att den är fett exprimentiell (men fullt fungerande)
,+ att den kräver en licensierad kompilator då resultat hexen överstiger 2k
Denna kod styr både sändning och mottagning, typ "repeater".


Denna kod styr både sändning och mottagning, typ "repeater".
Code: Select all
/*
*
* ß-SoftWare By Sonny K. for NEXA (Self-Learning protocol) repeater.
* Please note that the timing routines probably need adjustment for a specific processor!
* This code also have been a testbed for my own thoughts on how to solve repeating signals
* with a special "repeater" -ID.
*
* H/W:
Processor: PIC18LF2420 w. internal oscillator
Config words:
CONFIG1H :$300001 : 0x0008
CONFIG2L :$300002 : 0x001E
CONFIG2H :$300003 : 0x001E
CONFIG3H :$300005 : 0x0081
CONFIG4L :$300006 : 0x0081
CONFIG5L :$300008 : 0x0003
CONFIG5H :$300009 : 0x00C0
CONFIG6L :$30000A : 0x0003
CONFIG6H :$30000B : 0x00E0
CONFIG7L :$30000C : 0x0003
CONFIG7H :$30000D : 0x0040
Radio transciever chip: RFM TR3000
*
*/
//#define byte unsigned short
#include <built_in.h>
#include <Repeater.h>
/*
Repeater.h file:
void setup( void );
unsigned int PulseIn( short Polarity, unsigned int MaxTime, unsigned short Test );
void RadioMode( char mode );
void sendPairNEXA(unsigned short b);
void sendBitNEXA(unsigned short b);
void transmitNEXA( unsigned long SenderID, unsigned short RecCh, unsigned short Group, unsigned short Enabled, unsigned short Repeats );
void TimerSetup( void );
void printResult(unsigned long sender, unsigned short group, unsigned short on, unsigned short recipient, unsigned short numOfPackets, unsigned short messageType);
void Serialprintln( char *uart_text );
void delay( unsigned int msdelay );
*/
#define PACKETS 6 // Number of packets to send in one transmission
#define BLOCK_PACKETS 6 // -"- blocking packets to send
#define REPEATER_ID 0 // The ID of this repeater
#define WAIT_TIME 1000
#define BLOCK_TIME ((WAIT_TIME * 2) + (PACKETS * 80))
#define MIN_FRAMES 3
//
// Från ClicStic
//
// Processor-pin defines
//
#define ExtIn2 PORTA.F0 // External input pin ,on u-processor
#define ONSW PORTA.F1 // On/Off Switch
#define OUT2 PORTA.F2 // Output/Relay 2
#define OUT1 PORTA.F3 // Output/Relay 1
#define onPin PORTA.F4 // Radio Input -> moved to RB0 !! (This HAS to be connected to RB0!)
#define txPin PORTA.F5 // Radio Output
#define PU_IN2 PORTA.F7
#define rxPin PORTB.F0 // Radio Input ( earlier "ExtIn1" , External input pin ,on u-processor )
#define BZVCC PORTB.F1 // Output buzzer
#define LEDBT PORTB.F2 // Input = pullup/hi, low on button press, or if output = controls LED.
#define CTRL1 PORTB.F3 // RFM chip control
#define CTRL0 PORTB.F4 // RFM chip control
#define PU_IN1 PORTC.F2
#define SLEDR PORTC.F3 // RED Status LED on board
#define SLEDG PORTC.F4 // GREEN Status LED on board
//
#define BTN TRISB.B2 = 1
#define LED TRISB.B2 = 0
// PORTA 0b01010011
// PORTB 0b11100001
// PORTC 0b11100011
//
// Various defines
//
#define TX_LO txPin=0
#define TX_HI txPin=1
#define ONOFF ~ONSW
#define LEDbtn ~LEDBT
#define HIGH 1
#define LOW 0
#define TIF0 INTCON.TMR0IF
#define P_RISE INTCON2.INTEDG0 = 1 // Pulse
#define P_FALL INTCON2.INTEDG0 = 0
#define P_FLANK INTCON2.INTEDG0
#define P_ON INTCON.INT0IE = 1
#define P_OFF INTCON.INT0IE = 0
#define P_CLEAR INTCON.INT0IF = 0
#define T_IOFF INTCON.TMR0IE = 0 // Timer
#define T_ION INTCON.TMR0IE = 1
#define T_OFF T0CON.TMR0ON = 0
#define T_CLEAR INTCON.TMR0IF = 0
#define GIEN INTCON.GIE
//
#define Wdog asm { clrwdt }
#define Serialprint Uart1_Write_Text
//
//
//#define Tone1 Sound_Play(659, 250)
//#define Tone2 Sound_Play(698, 250)
//#define Tone3 Sound_Play(784, 250)
//
//
// END ClicStic
//
//
unsigned short by_Capture;
unsigned short by_Passive;
//unsigned int totUS;
unsigned short TIML,TIMH;
unsigned int trace;
unsigned long bfr = 0;
unsigned long repeater = REPEATER_ID;
unsigned int cnt = 0;
unsigned short TRUE = 1;
unsigned short FALSE = 0;
char txt80[80];
enum RFM_states { S_IDLE = 0, S_RXDATA, S_TXDATA };
void interrupt( void ){
INTCON.GIE = 0; // turn off all interrupts for a moment ...
if (INTCON.INT0IF) { // check if interrupt
INTCON.INT0IF = 0; // clear the interrupt-flag ...
by_Capture = 1;
}
INTCON.GIE = 1;
}
void RadioMode( char mode ) { //
//
switch ( mode ) {
case S_IDLE: { // RFM chip to IDLE mode
//
SLEDR = 0;
SLEDG = 0;
CTRL0 = 0;
CTRL1 = 0;
break;
}
case S_RXDATA: {
//
SLEDR = 0; // RFM chip to RECEIVE mode
//SLEDG = 1;
CTRL0 = 1;
CTRL1 = 1;
break;
}
case S_TXDATA: { // // RFM chip to SEND mode
//
SLEDG = 0;
SLEDR = 1;
if (( CTRL0 == 0 ) && ( CTRL1 == 0 )) {
CTRL0 = 1;
//CTRL1 = 0;
Delay_ms(20); // time for the RFM chip to wake-up from idle
} else {
CTRL0 = 1;
CTRL1 = 0;
delay_ms(1);
}
break;
}
}
return;
}
void setup() //
{
// If on "int.osc" , run full speed!
OSCCON = 0;
OSCCON.IRCF0 = 1;
OSCCON.IRCF1 = 1;
OSCCON.IRCF2 = 1;
OSCTUNE = 0;
OSCTUNE.PLLEN = 1;
Delay_ms(100); // stabilize ...
CMCON = 0x07; // turn off comparators
ADCON1 = 0x0F; // turn off analog inputs
-
porta = 0;
portb = 4; //0;
portc = 0;
trisa = 0b01001111; // Direction of ports ...
trisb = 0b11100001;
trisc = 0b11100011;
//
// Timer0 Registers: // 16-Bit Mode; Prescaler=1:256; TMRH Preset=0; TMRL Preset=0; Freq=0,11921Hz; Period=8 388,608 ms
T0CON.TMR0ON = 0; // Timer0 On/Off Control bit:1=Enables Timer0 / 0=Stops Timer0
T0CON.T08BIT = 0; // Timer0 8-bit/16-bit Control bit: 1=8-bit timer/counter / 0=16-bit timer/counter
T0CON.T0CS = 0; // TMR0 Clock Source Select bit: 0=Internal Clock (CLKO) / 1=Transition on T0CKI pin
T0CON.T0SE = 0; // TMR0 Source Edge Select bit: 0=low/high / 1=high/low
T0CON.PSA = 0; // Prescaler Assignment bit: 0=Prescaler is assigned; 1=NOT assigned/bypassed
T0CON.T0PS2 = 1; // bits 2-0 PS2:PS0: Prescaler Select bits
T0CON.T0PS1 = 0; // 0,524 sek. timeout vid 32MHz
T0CON.T0PS0 = 0; // 1;
TMR0H = 0x0; // preset for Timer0 MSB register
TMR0L = 0x0; // preset for Timer0 LSB register
//
RCON = 0;
INTCON = 0;
INTCON.PEIE = 1;
INTCON.INT0IE = 1; // PORTB.F0 change
INTCON.INT0IF = 0;
//INTCON2 = 0;
INTCON2.RBPU = 1;
INTCON2.INTEDG0 = 1; // 1=rising (T_RISE)
T1CON = 0;
//
INTCON.GIE = 0;
//T0CON.TMR0ON = 0;
//
RadioMode( S_IDLE );
//
if ( ! RCON.F3 ) {
// WatchDog Reset!
RCON.F3 = 1;
return;
}
//
uart1_init(115200);
//
SLEDG = 1;
delay_ms(500);
SLEDG = 0;
SLEDR = 1;
delay_ms(500);
SLEDR = 0;
//delay_ms(500);
LED;
LEDBT = 0;
delay_ms(500);
LEDBT = 1;
BTN;
//
WDTCON.SWDTEN = 1;
INTCON.GIE = 1;
//
return;
}
void TimerSetup( void ) {
//
// Configure and run
//
LED;
LEDBT = 0;
TMR0H = 0;
TMR0L = 0;
INTCON.TMR0IE = 0;
INTCON.TMR0IF = 0;
T0CON.TMR0ON = 1;
//
return;
}
/*
void Preamble( void ) {
// Do the latch sequence..
TX_HI;
delay_us(275);
TX_LO;
delay_us(9900);
TX_HI;
delay_us(275);
TX_LO;
delay_us(2675);
TX_HI;
//
return;
}
*/
unsigned int totUS = 0;
unsigned int PulseIn( short Polarity, unsigned int MaxTime, unsigned short Test ) {
// Set Polarity
// Rig time
// Rig INT to check change
Wdog;
//Serialprint("\r\n-PulseIN...");
if ( Polarity == 1 ) {
P_FLANK = 0;
} else {
P_FLANK = 1;
}
P_CLEAR;
by_Capture = 0;
P_ON;
GIEN = 1;
//SLED = 1;
totUS = 6;
if ( MaxTime > 0 ) {
if (( rxPin == Polarity ) || ( Test == 1 )) {
while ( by_Capture == 0 ) { // 40Mhz = 100nS instruktionstid, 32MHZ = 125nS
asm {
nop; // Very crucial timing (nop) loops, may need adjustment to specific processor :-/
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
}
totUS += 3;
if ( totUS > MaxTime ) {
//trace = totUS;
//INTCON.INT0IF = 0;
//SLED = 0;
P_OFF;
by_Capture = 0;
return 0xFFFF;
}
}
}
} else {
while ( rxPin != Polarity ) {
Wdog;
}
//totUS += 1;
while ( by_Capture == 0 ) { // 2.9 uS after "PulseIn" we are here!// 32MHz 1:a=5,25 2:a=8,75 3:e=12,25
asm { // Adjusted 6 9 12 15
nop; // 8 instr./uS
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
}
totUS += 3;
if ( totUS > 0xFFFC ) { //
//trace = totUS;
//INTCON.INT0IF = 0;
//SLED = 0;
P_OFF;
by_Capture = 0;
return 0xFFFF;
}
}
}
//SLED = 0;
//trace = totUS;
//INTCON.INT0IF = 0;
P_OFF;
by_Capture = 0;
//
return totUS;
}
int imess = 1;
unsigned int tt = 0;
unsigned int pT = 0;
unsigned long sender, saved_sender, prev_sender = 0;
unsigned short group, saved_group, prev_group = 0;
unsigned short on, saved_on, prev_on = 0;
unsigned short recipient, saved_recipient, prev_recipient = 0;
void main() { // ************ MAIN ***************
//
unsigned long TXID = 3952286; // Transmitter ID
unsigned int ii = 0;
short prevBit = 0;
short bbit = 0;
short res;
char str[8];
//
Setup();
//
GIEN = 1;
memset(str,0x00,sizeof(str));
WDTCON.SWDTEN = 1;
//
ERROUT:
tt = 0;
NOSYNC:
//STEP = STEP & 0xE0;
//goto LOOPSTART;
DATAERR:
//STEP.F4 = 1; // STEP | 31;
LOOPSTART:
while ( 1 ) {
//
while( ONSW == 0 ) {
if ( TIF0 == 1 ) {
T_OFF;
T_CLEAR;
LEDBT = 1;
BTN;
LEDBT = 1;
imess = 1;
}
//
RadioMode( S_RXDATA );
SLEDG = 0;
//LEDBT = 1;
sender = 0;
recipient = 0;
group = 0;
on = 0;
tt = 0;
// latch 1
//while(( tt < 9480 ) || ( tt > 10350)) {
while(( tt < 9500 ) || ( tt > 10000)) {
tt = pulseIn( LOW, 0, 0 );
if ( tt == 0xFFFF ) goto NOSYNC;
}
SLEDG = 1;
//STEP.F0 = 1; // STEP | 1;
//Uart1_Write_Text("\r\n#"); //-First Latch Passed!");
//
// latch 2
/*
while(( tt < 250 ) || ( tt > 400)) {
tt = pulseIn( HIGH, 500 );
if (( tt == 0xFFFF ) || ( TIF0 )) goto ERROUT;
}
*/
tt = pulseIn( HIGH, 500, 0 );
if (( tt < 250 ) || ( tt > 400 ) || ( tt == 0xFFFF ) || ( TIF0 )) goto ERROUT;
SLEDR = 1;
//LEDBT = 0;
//STEP.F1 = 1; // = STEP | 3;
//Uart1_Write_Text("#"); //\r\n-Second Latch Passed!");
//
// latch 3
/*
//while(( tt < 2550 ) || ( tt > 2700)) {
while(( tt < 2300 ) || ( tt > 2600)) {
tt = pulseIn( LOW, 3500 );
if (( tt == 0xFFFF ) || ( TIF0 )) goto ERROUT;
}
*/
tt = pulseIn( LOW, 3500, 0 );
if (( tt < 2300 ) || ( tt > 2600 ) || ( tt == 0xFFFF ) || ( TIF0 )) goto ERROUT;
//Uart1_Write_Text("#\r\n"); //-Third Latch Passed!");
//STEP.F2 = 1; // STEP | 7;
//SLEDG = 1;
// data
ii = 0;
bfr = 0;
//
do { //while( ii < 64 ) {
//delay_us(pT);
tt = pulseIn( HIGH, 0, 0); // mät HI pulsen och positionera oss på början av LOW
if ( tt == 0xFFFF ) goto DATAERR;
//SLEDG = 1;
tt = pulseIn( LOW, 1800, 0 );
if ( tt == 0xFFFF ) goto DATAERR;
//SLEDG = 1;
//STEP.F3 = 1; // STEP | 15;
//
//if(( tt > 200) && (tt < 365 )) {
//
if(( tt > 170) && (tt < 250 )) {
bbit = 0; // '1'
//
} else if(( tt > 1000 ) && ( tt < 1300)) { //else if(( tt > 1000 ) && ( tt < 1360)) {
//
bbit = 1; // '0'
} else {
ii = 0;
break;
}
//
if( ii % 2 == 1 ) {
if(( prevBit ^ bbit ) == 0) {
// must be either 01 or 10, cannot be 00 or 11
ii = 0;
break;
}
if( ii < 53 ) {
// 0 to 25 data bits
sender <<= 1;
sender |= prevBit;
} else if( ii == 53 ) { // 26th data bit
group = prevBit;
} else if( ii == 55 ) { // 27th data bit
on = prevBit;
} else { // last 4 data bits
recipient <<= 1;
recipient |= prevBit;
}
}
prevBit = bbit;
//++ii;
//
} while ( ++ii < 64 );
//
//SLEDG = 1;
//LEDBT = 1;
// interpret message
if( ii = 64 ) {
//printResult(sender, group, on, recipient);
if (( prev_sender == sender ) && ( prev_group == group ) && ( prev_on == on ) && ( prev_recipient == recipient )) {
imess += 1;
saved_sender = sender;
saved_group = group;
saved_on = on;
saved_recipient = recipient;
TimerSetup();
} else {
prev_sender = sender;
prev_group = group;
prev_on = on;
prev_recipient = recipient;
imess = 1;
//T_CLEAR;
//T_OFF;
TimerSetup();
}
if ( imess > 1 ) { //MIN_FRAMES ) { // OK, two equal frames received .... send!
T_CLEAR;
T_OFF;
LEDBT = 1;
BTN;
//imess = 1;
//TimerSetup();
SLEDG = 0;
SLEDR = 0;
/*
if ( sender == repeater ) {
RadioMode( S_IDLE );
delay(BLOCK_TIME);
} else {
delay(WAIT_TIME);
// Send "REPEATER" packet-id so that other repeaters don't repeat this!
transmitNEXA(repeater, 15, 0, 0, BLOCK_PACKETS); //recipient, group, on, BLOCK_PACKETS);
delay_ms(100);
// Repeat the message ...
transmitNEXA(sender, recipient, group, on, PACKETS);
}
eeprom_write(0x00,Highest(saved_sender));
eeprom_write(0x01,Higher(saved_sender));
eeprom_write(0x02,Hi(saved_sender));
eeprom_write(0x03,Lo(saved_sender));
eeprom_write(0x04,saved_recipient);
eeprom_write(0x05,saved_group);
eeprom_write(0x06,saved_on);
eeprom_write(0x07,PACKETS);
*/
GIEN = 0;
delay( 1500 );
printResult(saved_sender, saved_group, saved_on, saved_recipient, PACKETS, 0);
//Wdog;
transmitNEXA(saved_sender, saved_recipient, saved_group, saved_on, PACKETS);
//transmitNEXA(TXID, 2, 0, 1, 6); //recipient, group, on, PACKETS);
//
imess = 1;
} // messages
} // 64
} // While ON
//if ( ONSW == 0 ) goto LOOPSTART; // If switch is in 'ON' pos (0) then loop ...
//
RadioMode( S_IDLE );
SLEDG = 0;
SLEDR = 0;
//LEDBT = 1;
Wdog;
//
BTN;
delay_us(1);
if ( LEDBT == 0 ) { // If "button" is pressed, send test signal ...
//SLEDG = 0;
//transmitNEXA(repeater, 15, 0, 0, BLOCK_PACKETS); //recipient, group, on, PACKETS);
transmitNEXA(TXID, 2, 0, 1, 6);
/*
while( 1 ) {
tt = pulseIn( LOW, 1000, 1 );
PORTA.F4 = ~PORTA.F4;
SLEDG = ~SLEDG;
//delay_us(1000);
}
*/
}
//LED;
} // Loop
}
void delay( unsigned int msdelay ) {
unsigned int dloop;
//
for ( dloop = 0; dloop < msdelay; dloop++) {
Wdog;
delay_ms(1);
}
}
void transmitNEXA( unsigned long TN_SenderID, unsigned short TN_RecCh, unsigned short TN_Group, unsigned short TN_Enabled, unsigned short TN_Repeats ){
//
// Takes approx. 80mS / packet
//
unsigned short i,cnt;
unsigned long DA, CID;
unsigned short RCP, REC, GRP, ACT, REP;
//char txt[20];
//memset(txt80,0x00,sizeof(txt80));
//
CID = TN_SenderID;
REC = TN_RecCh;
GRP = TN_Group;
ACT = TN_Enabled;
REP = TN_Repeats;
GIEN = 0;
/*
for ( cnt = 0; cnt < 0x08; cnt++ ) {
eeprom_write(cnt,0xFF);
}
cnt = 0;
eeprom_write(0x00,Highest(CID));
eeprom_write(0x01,Higher(CID));
eeprom_write(0x02,Hi(CID));
eeprom_write(0x03,Lo(CID));
eeprom_write(0x04,RCP);
eeprom_write(0x05,GRP);
eeprom_write(0x06,ACT);
eeprom_write(0x07,REP);
Highest(CID) = eeprom_read(0x00);
Higher(CID) = eeprom_read(0x01);
Hi(CID) = eeprom_read(0x02);
Lo(CID) = eeprom_read(0x03);
REC = eeprom_read(0x04);
GRP = eeprom_read(0x05);
ACT = eeprom_read(0x06);
REP = eeprom_read(0x07);
*/
printResult(CID, GRP, ACT, REC, REP, 1);
//Preamble();
RadioMode( S_TXDATA );
//
//TN_SenderID =
//
for (cnt = 0;cnt < REP;cnt++) {
//
Wdog;
DA = CID; //TN_SenderID;
RCP = REC; //TN_RecCh;
//
TX_HI;
delay_us(320);
TX_LO;
delay_us(2510);
//
for(i=0; i<26;i++) { // Send Device Address..
//
if((DA & 0x02000000)==0x02000000) {
//if ((Highest(DA) & 0x02)==0x02) {
sendPairNEXA(TRUE);
} else {
sendPairNEXA(FALSE);
}
DA <<= 1;
//DA >>= 1;
}
// Send 26th bit - group 1/0
sendPairNEXA(GRP);
// Send 27th bit - on/off 1/0
sendPairNEXA(ACT);
// last 4 bits - recipient
//
for(i=0; i<4;i++) {
//
if((RCP & 0x8)==0x8) {
sendPairNEXA(TRUE);
} else {
sendPairNEXA(FALSE);
}
RCP <<= 1;
}
//
// Send "EndOfMessage" ...
//
TX_HI;
delay_us(310);
TX_LO;
delay_us(9810); // put low for at least this time :)
}
//
RadioMode( S_IDLE );
//
return;
}
void sendPairNEXA(unsigned short SPN_b) {
// Send the Manchester Encoded data 01 or 10, never 11 or 00
//static int counter = 0;
//char text[12];
//
//wordtostr(counter++,text);
//Serialprint("\r\nSendPairNEXA:");
if(SPN_b == TRUE) {
//Serialprint(" TRUE / ");
sendBitNEXA(FALSE);
sendBitNEXA(TRUE);
} else {
//Serialprint(" FALSE / ");
sendBitNEXA(TRUE);
sendBitNEXA(FALSE);
}
//Serialprint(text);
return;
}
void sendBitNEXA(unsigned short SBN_b) {
//static int counter = 0;
//char text[12];
//
//wordtostr(counter++,text);
//Serialprint("\r\nSendBitNEXA:");
if (SBN_b == TRUE) {
//Serialprint(" 1 / ");
TX_HI;
delay_us(335); //320);
TX_LO;
delay_us(215); //200);
} else {
//Serialprint(" 0 / ");
TX_HI;
delay_us(335); //320);
TX_LO;
delay_us(1225); //1210);
}
//Serialprint(text);
return;
}
void printResult(unsigned long sender, unsigned short group, unsigned short on, unsigned short recipient, unsigned short messages, unsigned short mType)
{ //
char txt[15];
//static unsigned int cnt = 0;
memset(txt,0x00,sizeof(txt));
/*
wordtostr(bfr,txt);
Serialprintln(txt);
*/
Serialprint("\r\n");
if ( mType == 0 ) {
SerialPrintln("Received:");
} else if ( mType == 1 ) {
SerialPrintln("Transmit:");
}
wordtostr(++cnt,txt);
Serialprint("\r\n");
Serialprint(txt);
//
longwordtostr(sender,txt);
Serialprint(":\tsender id ");
Serialprintln(txt);
//
Serialprint("\tgroup cmd.\t");
if(group)
{ Serialprintln("YES");
}
else
{ Serialprintln("NO");
}
Serialprint("\taction\t ");
if(on)
{ Serialprintln("<ON>");
}
else
{ Serialprintln("<OFF>");
}
shorttostr(recipient,txt);
Serialprint("\trecipient ");
Serialprintln(txt);
shorttostr(messages,txt);
Serialprint("\tpackets ");
Serialprintln(txt);
Serialprint("\n\r");
//
}
void Serialprintln( char *uart_text ) {
//
Serialprint( uart_text );
Serialprint("\n\r");
return;
}
________________________________________________________________________
// Sonny // ( If assembler looks blurry....try 2 C# ;)
// Sonny // ( If assembler looks blurry....try 2 C# ;)
-
- 3 stars
- Posts: 69
- Joined: Mon 22 Nov 2010, 22:26
- Location: Luleå
Re: Egen Nexa Sändare/Mottagare/Sniffer :)
Har löst absolut-dimmnings biten, nu lirar både sändare och mottagare 

________________________________________________________________________
// Sonny // ( If assembler looks blurry....try 2 C# ;)
// Sonny // ( If assembler looks blurry....try 2 C# ;)
-
- 1 star
- Posts: 2
- Joined: Sun 13 Feb 2011, 16:10
Re: Egen Nexa Sändare/Mottagare/Sniffer :)
Fick inget mail som man brukar få på forum när nån svarar i tråden, och missade därför att du postade igår. Tack väldigt mycket för koden!
Kul att du fick igång absolutdimningen, rätt enkelt egentligen men väldigt bra vid centralstyrning.

Kul att du fick igång absolutdimningen, rätt enkelt egentligen men väldigt bra vid centralstyrning.
Who is online
Users browsing this forum: Google [Bot] and 16 guests