CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

dsPIC zigbee problem

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
anh_risn



Joined: 05 Jun 2011
Posts: 4

View user's profile Send private message

dsPIC zigbee problem
PostPosted: Sat Aug 13, 2011 10:27 pm     Reply with quote

Has anyone here ever tried using zigbee on dsPIC? I'm getting a lot of problem. The zigbee cannot initialize as a coordinator even using simple program. I call the function ezspFormNetwork(), seems like zigbee didn't give respond.
I'm using PCWHD ver 4.104, since last time I updated to newest ver 4.124, the new version even cannot pass EmberInitialization.

Here is my code:
Code:

#include<30F4013.h>

#device *=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS2_PLL16             
#FUSES PR_PLL                   //Primary Oscillator with PLL
#FUSES NOCKSFSM                 //Clock Switching is disabled, fail Safe clock monitor is disabled
#FUSES WPSB16                   //Watch Dog Timer PreScalar B 1:16
#FUSES WPSA512                  //Watch Dog Timer PreScalar A 1:512
#FUSES PUT64                    //Power On Reset Timer value 64ms
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORRES               
#FUSES LPOL_HIGH                //Low-Side Transistors Polarity is Active-High (PWM 0,2,4 and 6)
   //PWM module low side output pins have active high output polar
#FUSES HPOL_HIGH                //High-Side Transistors Polarity is Active-High (PWM 1,3,5 and 7)
   //PWM module high side output pins have active high output polarity
#FUSES NOPWMPIN                 //PWM outputs drive active state upon Reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOCOE                    //Device will reset into operational mode
#FUSES ICSP1                    //ICD uses PGC1/PGD1 pins

//#device PASS_STRINGS=IN_RAM

#use delay(clock=80000000)

#define COORDINATOR   1
//#define SLEEPY_SENSOR   1
// Pin defines for the SPI communication
#define PIN_EZSP_INT    PIN_B4
#define PIN_EZSP_WAKE   PIN_B5
#define PIN_EZSP_RESET  PIN_B8
#define PIN_SSEL_INT    PIN_B3

#define APP_CHANNEL 0x18
#define APP_PANID   0x2608
#define APP_POWER   0xFF
const int8 EXTENDED_PAN_ID[8]= {0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98};
#define CLUSTER_ID_TRACKING_DEVICE  0x0A

#define SPI_BUFFER_SIZE    128
#define SPI_XMIT_L_TO_H    0x0100

#define LED1   PIN_B10
#define LED2   PIN_B11

#define SETTING_ZIGBEE_MANUALLY  1
#define NUM_DATA  15    // Num of packet data

int16 cnt_ms, cnt_s;

#include <em260.h>
#include "ember_utilities1.c"

int8 messagedata[NUM_DATA];
EmberApsFrame apsframe;

int8 EmberInitialization1()
{
   int8 k=0;
   int8 version_no;
   int8 stacktype;
   int16 stackVersion;
   SPIInit();       
   EM260Reset();   
   delay_ms(100);         
 
   k=ask_SPI_version();     
   k+=verify_SPI_status();     
   if(k==0)
   {                             
      version_no = ezspVersion(0x02, &stacktype, &stackVersion);           
      return(1);
   }
   else       
      return(0);   
}

#int_TIMER1                               
void timer1_isr()                         
{
   // Interrupt every 1ms
   cnt_ms++;
   if ((cnt_ms % 1000)==0) cnt_s++;
   set_timer1(65536-2500);
}

void main()
{
   //######################################################################
   //Zigbee cordinator variables
   //######################################################################   
   emberStatus Status;
   EmberEUI64 emLocalEui64;
   int16 childID;
   EmberEUI64 childEui64;
   EmberNodeType childType;   
   int8 messagetag=0x01;   
   int8 messageLength;
   int16 indexOrDestination;   
   EmberNetworkParameters parameters;
   EmberNodeType nodeType;   
   int8 i;     
   EmberNetworkStatus NetworkState; 
   
   setup_timer1( TMR_INTERNAL | TMR_DIV_BY_8 );
   set_timer1(65536-2500);                           // Interrupt every 1ms                                       
   
   delay_ms(200);       
   
   if(EmberInitialization1())
   {                       
      EmberConfig();
      EmberInitializeBinding();                               
      ezspGetEUI64(&emLocalEui64);
      EmberAddEndPoint();                                                     
           
      #ifndef SETTING_ZIGBEE_MANUALLY
      //EmberJoinNetwork(EMBER_SLEEPY_END_DEVICE);
      EmberFormNetwork();
      #else     
      for(i=0;i<8;i++)
      {
         parameters.extendedPanID[i] = EXTENDED_PAN_ID[i];
         //parameters.extendedPanID[i] = 0;
      }
      parameters.panID = APP_PANID;
      parameters.radioTXPower = APP_POWER;
      parameters.radioChannel = APP_CHANNEL;
     
      Status = ezspFormNetwork(parameters);
      //ezspScanAndJoinNetwork(EMBER_SLEEPY_END_DEVICE, EMBER_ALL_802_15_4_CHANNELS_MASK, APP_POWER, parameters.extendedPanID);
      //Status=ezspGetNetworkParameters(&nodeType,parameters);           
      //*******************************************
      #endif             
     
      ezspPermitJoining(0xFF);
               
      // Initialize all variables here
      indexOrDestination = 0x0000;
      apsframe.profileID=0xC00F;
      apsframe.clusterID=CLUSTER_ID_TRACKING_DEVICE;
      apsframe.sourceEndpoint=0x01;
      apsframe.destinationEndpoint=0x01;
      apsframe.options=0x0000;
      apsframe.groupID=0x0000;
      apsframe.sequence=0x00;
           
      cnt_ms = cnt_s = 0;                                       
     
      output_low(PIN_D0);     // Keep low RTS pin for sending data                         
       
      enable_interrupts( INT_TIMER1 );           
      enable_interrupts( INTR_GLOBAL );     
     
      //*******************************
      // Main program loop here...
      //*******************************                             
     
      while(TRUE)
      {               
         //SensorApplicationTick();
         //EM260Tick();
         
         output_high(LED1);
         
         EM260Tick();
         
         output_high(LED2);
         
         SinkApplicationTick();
     
         delay_ms(200);
         output_low(LED1);
         output_low(LED2);
         delay_ms(200);
           
         }                               
      }  // end of main while
   }
   else
   {
      // Error cannot initialize ember zigbee
      while(TRUE)
      {
         output_high(PIN_B10);
         output_high(PIN_B11);
         delay_ms(200);   
         output_low(PIN_B10);
         output_low(PIN_B11);
         delay_ms(200);
      }
   } // end of if (EmberInitialization())
}
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group