M
mz8e08
Guest
har tilsluttet et SD-kort med SPI ben.
forbinde STE direkte til chip vælge / Slave i cc2500.Brug en ikke port til at forbinde STE til chip vælge pin af SD.
Jeg bruger eZ430 indre temperatur sensor til at overvåge den omgivende temperatur, opbevare de indsamlede data i SD flash-hukommelseskort, og derefter sende data på SD-kortet til et adgangspunkt gennem cc2500, ved hjælp af SimpliciTI.
Den grænseflade med SD-kort er en succes.For det første, en sektor af beskeden er skrevet til SD-kortet, og derefter læses ud fra SD-kortet.Så systemet er skiftet til grænseflade den cc2500, sender den besked til adgangspunktet.Så systemet skifte til SD-kortet til at skrive den anden sektor for beskeden.Men når de forsøger at skifte systemet til cc2500, kan det ende enheden ikke slutte til netværket.Systemet stopper på følgende,
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
Det synes at være den første skifte fra SD til SimpliciTI er vellykket, det andet mislykkedes.Koden er fulgt:
# include "bsp.h"
# include "mrfi.h"
# include "nwk_types.h"
# include "nwk_api.h"
# include "bsp_leds.h"
# include "bsp_buttons.h"
# include "vlo_rand.h"
# include <msp430x22x4.h>
# include <hal_hardware_board.h>
# include <mmc.h>
#
include <stdio.h>
unsigned long cardSize = 0;
unsigned char status = 1;
unsigned int timeout = 0;
int i = 0;
int sektor;/ / unsigned char buffer [512];
uint8_t msg [512] / / ændres af Zheng
uint8_t msgs [3];
linkID_t linkID1;
void linkto (void);
void MCU_Init (void);
void sampledata ();
__no_init volatile int tempOffset @ 0x10F4; / / Temperatur udligne fastsat til produktion
__no_init volatile char Flash_Addr [4] @ 0x10F0; / / Flash-adresse, der er tilfældigt
void createRandomAddress ();
/ / void main (void) --------------------- ændret ved Zheng
void main (void)
(
addr_t lAddr;
WDTCTL = WDTPW WDTHOLD; / / Stop WDT
(
/ / Forsinkelse loop at sikre en korrekt opstart før SimpliciTI stigninger DCO
/ / Det er typisk skræddersyet til de anvendte strømforsyning, og i dette tilfælde
/ / Er overkill for sikkerheden på grund af bred distribution.
volatile int i;
for (i = 0; i <0x000F; i ){}
)
if (CALBC1_8MHZ == 0xFF) / / Må ikke køre, hvis cal værdier slettes
(
volatile int i;
P1DIR | = 0x03;
BSP_TURN_ON_LED1 ();
BSP_TURN_OFF_LED2 ();
while (1)
(
for (i = 0; i <0x000F; i ){}
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
for (sektor = 0; sektor <3; sektor )
(/ / Initialiserer MSP430 ---------------------------------------- tilføjet af Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ / prøve temperaturen data
/ / Uint8_t msg [3];
/ / LinkID_t linkID1;
flygtige lang temp;
int degC, volt;
int resultater [2];
for (i = 0; i <6; i = 3)
(
ADC10CTL1 = INCH_10 ADC10DIV_4; / / Temp Sensor ADC10CLK / 5
ADC10CTL0 = SREF_1 ADC10SHT_3 REFON ADC10ON ADC10IE ADC10SR;
for (degC = 10; degC> 0; degC -); / / forsinke at lade henvisning til at løse
ADC10CTL0 | = ENC ADC10SC; / / Prøveudtagning og konvertering start
__bis_SR_register (CPUOFF GIE); / / LPM0 med afbryder aktiveret
Resultaterne [0] = ADC10MEM;
ADC10CTL0 & = ~ ENC;
ADC10CTL1 = INCH_11; / / AVcc / 2
ADC10CTL0 = SREF_1 ADC10SHT_2 REFON ADC10ON ADC10IE REF2_5V;
for (degC = 10; degC> 0; degC -); / / forsinke at lade henvisning til at løse
ADC10CTL0 | = ENC ADC10SC; / / Prøveudtagning og konvertering start
__bis_SR_register (CPUOFF GIE); / / LPM0 med afbryder aktiveret
resultater [1] = ADC10MEM;
ADC10CTL0 & = ~ ENC;
ADC10CTL0 & = ~ (REFON ADC10ON); / / slukke A / D for at spare strøm
/ / OC = ((A10/1024) * 1500mV)-986mV) * 1/3.55mV = A10 * 423/1024 - 278
/ / Temperaturen er indberettes som heltal, hvor 32,1 = 321
/ / Dermed 4.230 i stedet for 423
temp = results [0];
degC = ((temp - 673) * 4230) / 1024;
if (tempOffset! = 0xFFFF)
(
degC = tempOffset;
)
/ * besked format, UB = øvre Byte, LB = lavere Byte
-------------------------------
| degC LB | degC UB | volt LB |
-------------------------------
0 1 2
* /
temp = resultater [1];
volt = (temp * 25) / 512;
msg = degC &0xFF;
msg [i 1] = (degC>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
&0xFF;
msg [i 2] = volt;
)
for (i = 6; i <10; i ) msg = '0 ';
/ / Initialiserer MSP430 ---------------------------------------- tilføjet af Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ / Initialisering af MMC / SD-kort
while (tilstand! = 0) / / hvis afkast ikke NULL en fejl fandt sted, og
/ / MMC / SD-kort vil blive initialiseret igen
(
status = mmcInit ();
timeout ;
if (timeout == 150) / / Prøv 50 gange indtil fejl
(
/ / Printf ( "No MMC / SD-kort fundet!% X \ n", status);
break;
)
)
/ *
while ((mmcPing ()! = MMC_SUCCESS)); / / Vent til kortet er indsat ------ ændres ved Zheng (slettet årsag til ingen cd)
* /
/ / Læs kortstørrelse fra CSD Register
cardSize = mmcReadCardSize ();
/ *
/ / Clear Sektorer på MMC
for (i = 0; i <512; i ) buffer = 0;
mmcWriteSector (0, buffer); / / skrive en 512 Byte stor blok begynder ved (tilpassede) adresse
* /
/ / Gemme temperatur data i buffer -------- tilføjet af Zheng
mmcWriteSector (sektor, msg); / / skrive en 512 Byte stor blok begynder ved (tilpassede) adresse
mmcReadSector (sektor, msg); / / læse en størrelse Byte stor blok begyndelsen på adressen./ /开始重新初始化--------------------------------- tilføjet af Zheng
/ / SimpliciTI vil ændre porten pin-indstillinger samt
P1DIR = 0xFF;
P1OUT = 0x00;
P2DIR = 0x27;
P2OUT = 0x00;
P3DIR = 0xC0;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;if (Flash_Addr [0] == 0xFF & &
Flash_Addr [1] == 0xFF & &
Flash_Addr [2] == 0xFF & &
Flash_Addr [3] == 0xFF)
(
createRandomAddress (); / / sæt Random enheden adresse ved første opstart
)
lAddr.addr [0] = Flash_Addr [0];
lAddr.addr [1] = Flash_Addr [1];
lAddr.addr [2] = Flash_Addr [2];
lAddr.addr [3] = Flash_Addr [3];
SMPL_Ioctl (IOCTL_OBJ_ADDR, IOCTL_ACT_SET, & lAddr);/ / initialiserer MSP430 ----------- tilføjet y Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ /初始化结束/ / Med at forsøge at slutte sig, indtil det lykkes.toggle LEDS at angive, at
/ / Forbinder ikke har fundet sted.LED3 er rød, men hedder LED 4 om EXP
/ / Board silkscreen.LED1 er grøn.
while (SMPL_NO_JOIN == SMPL_Init ((uint8_t (*) (linkID_t)) 0))
(
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();;
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED2 ();
)
/ / Ubetinget link til AP, der lytter på grund af vellykkede deltage.
/ / Linkto ();
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
/ / Sluk alle LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)
/ / enter LPM3 indtil timeren afbryder
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();
/ / While (1)
for (i = 0; i <9; i = 3)
(msgs [0] = msg ;
msgs [1] = msg [i 1];
msgs [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, beskeder, sizeof (msgs)))
(
BSP_TOGGLE_LED2 ();
)
anden
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Udfør linkto \ n");
)
)void createRandomAddress ()
(
unsigned int rand, rand2;
gøre
(
rand = TI_getRandomIntegerFromVLO (); / / første byte kan ikke være 0x00 af 0xFF
)
while ((rand & 0xFF00) == 0xFF00 | | (rand & 0xFF00) == 0x0000);
rand2 = TI_getRandomIntegerFromVLO ();
BCSCTL1 = CALBC1_1MHZ; / / Set DCO til 1MHz
DCOCTL = CALDCO_1MHZ;
FCTL2 = FWKEY FSSEL0 FN1; / / MCLK / 3 til Flash Timing Generator
FCTL3 = FWKEY Locka; / / Clear LOCK & Locka bits
FCTL1 = FWKEY WRT; / / Set WRT smule for at skrive drift
Flash_Addr [0] = (rand>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
& 0xFF;
Flash_Addr [1] = rand & 0xFF;
Flash_Addr [2] = (rand2>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
& 0xFF;
Flash_Addr [3] = rand2 & 0xFF;
FCTL1 = FWKEY; / / Clear WRT smule
FCTL3 = FWKEY Locka LOCK; / / Set LOCK & Locka smule
)
/ *
void linkto ()
(
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
/ / Sluk alle LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)
/ / enter LPM3 indtil timeren afbryder
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();
/ / While (1)
for (i = 0; i <510; i = 3)
(msgs [0] = msg ;
msgs [1] = msg [i 1];
msgs [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, beskeder, sizeof (msgs)))
(
BSP_TOGGLE_LED2 ();
)
anden
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Udfør linkto \ n");
)
* /
/*------------------------------------------------ ------------------------------
* ADC10 interrupt service rutine
-------------------------------------------------- ----------------------------*/
# pragma vector = ADC10_VECTOR
__interrupt void ADC10_ISR (void)
(
__bic_SR_register_on_exit (CPUOFF); / / Clear CPUOFF smule fra 0 (SR)
)
/*------------------------------------------------ ------------------------------
* Timer A0 interrupt service rutine
-------------------------------------------------- ----------------------------*/
# pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
(
__bic_SR_register_on_exit (LPM3_bits); / / Clear LPM3 smule fra 0 (SR)
)
forbinde STE direkte til chip vælge / Slave i cc2500.Brug en ikke port til at forbinde STE til chip vælge pin af SD.
Jeg bruger eZ430 indre temperatur sensor til at overvåge den omgivende temperatur, opbevare de indsamlede data i SD flash-hukommelseskort, og derefter sende data på SD-kortet til et adgangspunkt gennem cc2500, ved hjælp af SimpliciTI.
Den grænseflade med SD-kort er en succes.For det første, en sektor af beskeden er skrevet til SD-kortet, og derefter læses ud fra SD-kortet.Så systemet er skiftet til grænseflade den cc2500, sender den besked til adgangspunktet.Så systemet skifte til SD-kortet til at skrive den anden sektor for beskeden.Men når de forsøger at skifte systemet til cc2500, kan det ende enheden ikke slutte til netværket.Systemet stopper på følgende,
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
Det synes at være den første skifte fra SD til SimpliciTI er vellykket, det andet mislykkedes.Koden er fulgt:
# include "bsp.h"
# include "mrfi.h"
# include "nwk_types.h"
# include "nwk_api.h"
# include "bsp_leds.h"
# include "bsp_buttons.h"
# include "vlo_rand.h"
# include <msp430x22x4.h>
# include <hal_hardware_board.h>
# include <mmc.h>
#
include <stdio.h>
unsigned long cardSize = 0;
unsigned char status = 1;
unsigned int timeout = 0;
int i = 0;
int sektor;/ / unsigned char buffer [512];
uint8_t msg [512] / / ændres af Zheng
uint8_t msgs [3];
linkID_t linkID1;
void linkto (void);
void MCU_Init (void);
void sampledata ();
__no_init volatile int tempOffset @ 0x10F4; / / Temperatur udligne fastsat til produktion
__no_init volatile char Flash_Addr [4] @ 0x10F0; / / Flash-adresse, der er tilfældigt
void createRandomAddress ();
/ / void main (void) --------------------- ændret ved Zheng
void main (void)
(
addr_t lAddr;
WDTCTL = WDTPW WDTHOLD; / / Stop WDT
(
/ / Forsinkelse loop at sikre en korrekt opstart før SimpliciTI stigninger DCO
/ / Det er typisk skræddersyet til de anvendte strømforsyning, og i dette tilfælde
/ / Er overkill for sikkerheden på grund af bred distribution.
volatile int i;
for (i = 0; i <0x000F; i ){}
)
if (CALBC1_8MHZ == 0xFF) / / Må ikke køre, hvis cal værdier slettes
(
volatile int i;
P1DIR | = 0x03;
BSP_TURN_ON_LED1 ();
BSP_TURN_OFF_LED2 ();
while (1)
(
for (i = 0; i <0x000F; i ){}
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
for (sektor = 0; sektor <3; sektor )
(/ / Initialiserer MSP430 ---------------------------------------- tilføjet af Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ / prøve temperaturen data
/ / Uint8_t msg [3];
/ / LinkID_t linkID1;
flygtige lang temp;
int degC, volt;
int resultater [2];
for (i = 0; i <6; i = 3)
(
ADC10CTL1 = INCH_10 ADC10DIV_4; / / Temp Sensor ADC10CLK / 5
ADC10CTL0 = SREF_1 ADC10SHT_3 REFON ADC10ON ADC10IE ADC10SR;
for (degC = 10; degC> 0; degC -); / / forsinke at lade henvisning til at løse
ADC10CTL0 | = ENC ADC10SC; / / Prøveudtagning og konvertering start
__bis_SR_register (CPUOFF GIE); / / LPM0 med afbryder aktiveret
Resultaterne [0] = ADC10MEM;
ADC10CTL0 & = ~ ENC;
ADC10CTL1 = INCH_11; / / AVcc / 2
ADC10CTL0 = SREF_1 ADC10SHT_2 REFON ADC10ON ADC10IE REF2_5V;
for (degC = 10; degC> 0; degC -); / / forsinke at lade henvisning til at løse
ADC10CTL0 | = ENC ADC10SC; / / Prøveudtagning og konvertering start
__bis_SR_register (CPUOFF GIE); / / LPM0 med afbryder aktiveret
resultater [1] = ADC10MEM;
ADC10CTL0 & = ~ ENC;
ADC10CTL0 & = ~ (REFON ADC10ON); / / slukke A / D for at spare strøm
/ / OC = ((A10/1024) * 1500mV)-986mV) * 1/3.55mV = A10 * 423/1024 - 278
/ / Temperaturen er indberettes som heltal, hvor 32,1 = 321
/ / Dermed 4.230 i stedet for 423
temp = results [0];
degC = ((temp - 673) * 4230) / 1024;
if (tempOffset! = 0xFFFF)
(
degC = tempOffset;
)
/ * besked format, UB = øvre Byte, LB = lavere Byte
-------------------------------
| degC LB | degC UB | volt LB |
-------------------------------
0 1 2
* /
temp = resultater [1];
volt = (temp * 25) / 512;
msg = degC &0xFF;
msg [i 1] = (degC>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
&0xFF;
msg [i 2] = volt;
)
for (i = 6; i <10; i ) msg = '0 ';
/ / Initialiserer MSP430 ---------------------------------------- tilføjet af Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ / Initialisering af MMC / SD-kort
while (tilstand! = 0) / / hvis afkast ikke NULL en fejl fandt sted, og
/ / MMC / SD-kort vil blive initialiseret igen
(
status = mmcInit ();
timeout ;
if (timeout == 150) / / Prøv 50 gange indtil fejl
(
/ / Printf ( "No MMC / SD-kort fundet!% X \ n", status);
break;
)
)
/ *
while ((mmcPing ()! = MMC_SUCCESS)); / / Vent til kortet er indsat ------ ændres ved Zheng (slettet årsag til ingen cd)
* /
/ / Læs kortstørrelse fra CSD Register
cardSize = mmcReadCardSize ();
/ *
/ / Clear Sektorer på MMC
for (i = 0; i <512; i ) buffer = 0;
mmcWriteSector (0, buffer); / / skrive en 512 Byte stor blok begynder ved (tilpassede) adresse
* /
/ / Gemme temperatur data i buffer -------- tilføjet af Zheng
mmcWriteSector (sektor, msg); / / skrive en 512 Byte stor blok begynder ved (tilpassede) adresse
mmcReadSector (sektor, msg); / / læse en størrelse Byte stor blok begyndelsen på adressen./ /开始重新初始化--------------------------------- tilføjet af Zheng
/ / SimpliciTI vil ændre porten pin-indstillinger samt
P1DIR = 0xFF;
P1OUT = 0x00;
P2DIR = 0x27;
P2OUT = 0x00;
P3DIR = 0xC0;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;if (Flash_Addr [0] == 0xFF & &
Flash_Addr [1] == 0xFF & &
Flash_Addr [2] == 0xFF & &
Flash_Addr [3] == 0xFF)
(
createRandomAddress (); / / sæt Random enheden adresse ved første opstart
)
lAddr.addr [0] = Flash_Addr [0];
lAddr.addr [1] = Flash_Addr [1];
lAddr.addr [2] = Flash_Addr [2];
lAddr.addr [3] = Flash_Addr [3];
SMPL_Ioctl (IOCTL_OBJ_ADDR, IOCTL_ACT_SET, & lAddr);/ / initialiserer MSP430 ----------- tilføjet y Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO efter random-funktion
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 afbryder aktiveret
TACCR0 = 12000; / / ~ 1 sek
TACTL = TASSEL_1 MC_1; / / ACLK, upmode
/ /初始化结束/ / Med at forsøge at slutte sig, indtil det lykkes.toggle LEDS at angive, at
/ / Forbinder ikke har fundet sted.LED3 er rød, men hedder LED 4 om EXP
/ / Board silkscreen.LED1 er grøn.
while (SMPL_NO_JOIN == SMPL_Init ((uint8_t (*) (linkID_t)) 0))
(
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();;
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED2 ();
)
/ / Ubetinget link til AP, der lytter på grund af vellykkede deltage.
/ / Linkto ();
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
/ / Sluk alle LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)
/ / enter LPM3 indtil timeren afbryder
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();
/ / While (1)
for (i = 0; i <9; i = 3)
(msgs [0] = msg ;
msgs [1] = msg [i 1];
msgs [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, beskeder, sizeof (msgs)))
(
BSP_TOGGLE_LED2 ();
)
anden
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Udfør linkto \ n");
)
)void createRandomAddress ()
(
unsigned int rand, rand2;
gøre
(
rand = TI_getRandomIntegerFromVLO (); / / første byte kan ikke være 0x00 af 0xFF
)
while ((rand & 0xFF00) == 0xFF00 | | (rand & 0xFF00) == 0x0000);
rand2 = TI_getRandomIntegerFromVLO ();
BCSCTL1 = CALBC1_1MHZ; / / Set DCO til 1MHz
DCOCTL = CALDCO_1MHZ;
FCTL2 = FWKEY FSSEL0 FN1; / / MCLK / 3 til Flash Timing Generator
FCTL3 = FWKEY Locka; / / Clear LOCK & Locka bits
FCTL1 = FWKEY WRT; / / Set WRT smule for at skrive drift
Flash_Addr [0] = (rand>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
& 0xFF;
Flash_Addr [1] = rand & 0xFF;
Flash_Addr [2] = (rand2>>
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />
& 0xFF;
Flash_Addr [3] = rand2 & 0xFF;
FCTL1 = FWKEY; / / Clear WRT smule
FCTL3 = FWKEY Locka LOCK; / / Set LOCK & Locka smule
)
/ *
void linkto ()
(
/ / Holde forsøger at tilknytte ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)
/ / Sluk alle LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)
/ / enter LPM3 indtil timeren afbryder
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 med afbryder aktiveret
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();
/ / While (1)
for (i = 0; i <510; i = 3)
(msgs [0] = msg ;
msgs [1] = msg [i 1];
msgs [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, beskeder, sizeof (msgs)))
(
BSP_TOGGLE_LED2 ();
)
anden
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Udfør linkto \ n");
)
* /
/*------------------------------------------------ ------------------------------
* ADC10 interrupt service rutine
-------------------------------------------------- ----------------------------*/
# pragma vector = ADC10_VECTOR
__interrupt void ADC10_ISR (void)
(
__bic_SR_register_on_exit (CPUOFF); / / Clear CPUOFF smule fra 0 (SR)
)
/*------------------------------------------------ ------------------------------
* Timer A0 interrupt service rutine
-------------------------------------------------- ----------------------------*/
# pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
(
__bic_SR_register_on_exit (LPM3_bits); / / Clear LPM3 smule fra 0 (SR)
)