-
Created by Unknown User (m0702505), last modified by Unknown User (tonini) on 11.3.2011
You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 13
Next »
Lähetyskoodi oma tekemä :
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
static void linkTo(void);
static uint8_t viestiLaskuri=0;
static linkID_t sLinkID1 = 0;
static uint8_t sRxCallback(linkID_t);
void main(void) // Pääohjelma alkaa tästä
{
BSP_Init(); // laudan alustus
SMPL_Init(sRxCallback); // radion alustus
BSP_TOGGLE_LED2(); // punanen ledi paalle
do {
if (BSP_BUTTON1()) // odotetaan etta nappia painetaan
{
break;
}
} while (1);
linkTo(); // linkin muodostaminen
while (1) ;
}
static void linkTo()
{
uint8_t msg[2];//, delay =0;
while (SMPL_SUCCESS != SMPL_Link(&sLinkID1))
{
// ledit vilkkuu kunnes linkki on onnistunut
BSP_TOGGLE_LED1();
BSP_TOGGLE_LED2();
NWK_DELAY(50); // ledit vilkkuu 50ms valein
}
// kun linkki onnistunut laitetaan vihrea ledi paalle
BSP_TOGGLE_LED1();
// radion kaynnistys
SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0);
// laitetaan viestin ensimmaiseen alkioon arvo 1
msg[0] = 1; // vastaan otin lukee sen vihreena ledina
while (1)
{
NWK_DELAY(100);
msg[1] = ++viestiLaskuri; // viestin toiseen alkioon viestien maara
SMPL_Send(sLinkID1, msg, sizeof(msg)); // lahetetaan viesti
}
}
static uint8_t sRxCallback(linkID_t port) // viestin takaisin vastaanotto
{
uint8_t msg[2], len;
// tarkisetaan vastaan otetavan viestin ID
if (port == sLinkID1)
{
if ((SMPL_SUCCESS == SMPL_Receive(sLinkID1, msg, &len)))
{
BSP_TOGGLE_LED2(); // jos viestin vastaan otto onnistunut niin punanen ledi paalle
return 1;
}
}
return 0;
}
Vastaanotto:
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
static void linkFrom(void);
void toggleLED(uint8_t);
static uint8_t viestiLaskuri = 0;
static linkID_t sLinkID2 = 0;
static volatile uint8_t viestiVastaanotettu = 0;
static uint8_t sRxCallback(linkID_t);
void main (void)
{
BSP_Init(); // laudan alustus
SMPL_Init(sRxCallback); // radion ja SimpliTi alustus
BSP_TOGGLE_LED1(); // vihreä ledi päälle
do {
if (BSP_BUTTON1()) // odotetaan että nappia painetaan
{
break;
}
} while (1);
linkFrom(); // linkin muodostaminen
while (1) ;
}
static void linkFrom()
{
uint8_t msg[2];
/* listen for link forever... */
while (1)
{
BSP_TOGGLE_LED2();
if (SMPL_SUCCESS == SMPL_LinkListen(&sLinkID2))
{
break;
}
}
// radion käynnistys
SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0);
msg[0] = 2;
while (1)
{
if (viestiVastaanotettu)
{
msg[1] = ++viestiLaskuri;
SMPL_Send(sLinkID2, msg, sizeof(msg));
viestiVastaanotettu = 0;
}
}
}
static uint8_t sRxCallback(linkID_t port) // viestin vastaanotto
{
uint8_t msg[2], len;
// tarkisetaan vastaan otetavan viestin ID
if (port == sLinkID2)
{
if (SMPL_SUCCESS == SMPL_Receive(sLinkID2, msg, &len))
{
BSP_TOGGLE_LED1(); // jos viestin vastaan otto onnistunut niin vihreä ledi päälle
viestiVastaanotettu = 1;
return 1;
}
}
return 0;
}
AD-luku ja lähetys
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
void toggleLED(uint8_t);
static void linkTo(void);
static uint8_t viestiLaskuri=0;
static linkID_t sLinkID1 = 0;
static uint8_t sRxCallback(linkID_t);
void initIO();
int analogitulo();
int viestiVastaanotettu=1;
void main(void)
{
initIO();
BSP_Init(); // laudan alustus
SMPL_Init(sRxCallback); // radion alustus
BSP_TOGGLE_LED2(); // punanen ledi päälle
do {
if (BSP_BUTTON1()) // odotetaan että nappia painetaan
{ break; }
} while (1);
linkTo(); // linkin muodostaminen
while (1) ;
}
static void linkTo()
{
uint16_t adc_msg;
uint8_t adc1;
uint8_t adc2;
//uint8_t adc3;
while (SMPL_SUCCESS != SMPL_Link(&sLinkID1))
{
// ledit vilkkuu kunnes linkki on onnistunut
BSP_TOGGLE_LED1();
BSP_TOGGLE_LED2();
NWK_DELAY(50); // ledit vilkkuu 50ms välein }
// kun linkki onnistunut laitetaan vihreä ledi päälle
BSP_TOGGLE_LED1();
// radion käynnistys
SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0);
// laitetaan viestin ensimmäiseen alkioon arvo 1
while (1)
{
uint8_t msg[3];
NWK_DELAY(100);
adc_msg = analogitulo();
adc1 = adc_msg>>8;
adc2 = adc_msg&255;
msg[0]=adc1;
msg[1]=adc2;
msg[2]=viestiLaskuri;
SMPL_Send(sLinkID1, msg, sizeof(msg)); // lähetetään viesti
viestiVastaanotettu = 0;
}
}
static uint8_t sRxCallback(linkID_t port) // viestin takaisin vastaanotto
{
uint8_t msg2, len;
// tarkisetaan vastaan otetavan viestin ID
if (port == sLinkID1)
{
if ((SMPL_SUCCESS == SMPL_Receive(sLinkID1, msg, &len)))
{
viestiVastaanotettu = 1;
viestiLaskuri++;
BSP_TOGGLE_LED2(); // jos viestin vastaan otto onnistunut niin punanen ledi päälle
return 1;
}
}
return 0;
}
void initIO()
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
P2SEL |= BIT2; // Enable A/D channel A0
/* Initialize REF module */
// Enable 2.5V shared reference, disable temperature sensor to save power
REFCTL0 |= REFMSTR+REFVSEL_2+REFON+REFTCOFF;
/* Initialize ADC12 */
ADC12CTL0 = ADC12ON+ADC12SHT02; // Turn on ADC12, set sampling time
ADC12CTL1 = ADC12SHP; // Use sampling timer
ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_2; // Vr+=Vref+ and Vr-=AVss
__delay_cycles(75); // 75 us delay @ ~1MHz
ADC12CTL0 |= ADC12ENC; // Enable conversions
}
int analogitulo()
{
uint16_t adc_arvo=0;
ADC12CTL0 |= ADC12SC; // Start conversion-software trigger
while (!(ADC12IFG & BIT0));
//__no_operation(); // SET BREAKPOINT HERE
adc_arvo = ADC12MEM0;
return adc_arvo;
}
You must log in to comment.