рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреЛрдб рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо Arduino IDE рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ arduino pro mini рдФрд░ nrf24l01 + рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЦрд┐рд▓реМрдирд╛ рдорд▓реНрдЯреАрдХреЛрдЯрд░ (XN297 рд░реЗрдбрд┐рдпреЛ рдЪрд┐рдкреНрд╕, nrf24l01 рдХреНрд▓реЛрди) рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА PPM рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдорд▓реНрдЯреАрдХреНрд░реЙрдкреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИредрдореИрдВрдиреЗ рд░реЗрдбрд┐рдУрд▓рд┐рдВрдХ рдПрдЯреА 9 рдЙрдкрдХрд░рдг рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдЪ 8 рдорд┐рдиреА рдХреЙрдкреНрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг рдорд╛рдВрдЧрддрд╛ рд╣реВрдВредMSP430 рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ 3.3 рд╡реЛрд▓реНрдЯ рдХреА рдЖрдкреВрд░реНрддрд┐ рд╡реЛрд▓реНрдЯреЗрдЬ рд╣реИ, рдЖрдкреВрд░реНрддрд┐ рд╡реЛрд▓реНрдЯреЗрдЬ nrf24l01 рднреА 3.3 рд╡реЛрд▓реНрдЯ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ MPS430 рдкрд╕рдВрдж рд╣реИред рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЕрдВрджрд░ 3V3, OUT, GND рд╕рдВрдкрд░реНрдХ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рд╣рдо рдЬреБрдбрд╝реЗрдВрдЧреЗредрдпрджрд┐ рдЙрдкрдХрд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдХреЛрдЪрд┐рдВрдЧ рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ = рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдПрдХ рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрдЯреЗрдмрд▓рд╛рдЗрдЬрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИредрдХреЛрдб рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, IDE Energia (MSP430 рдХреЗ рд▓рд┐рдП Arduino IDE рдХреНрд▓реЛрди рдФрд░ TI рд╕реЗ рдЕрдиреНрдп рдЪрд┐рдкреНрд╕) рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВредрдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ
рд╣рдо nRF24_multipro.ino рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ''рдУрд╡ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рдорд╛рдгреБ рдФрд░ EEPROM рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИредрдкрд░рдорд╛рдгреБ
рд╣рдо рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ#include <util/atomic.h>
рдФрд░ function void рдореЗрдВ update_ppm () рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВATOMIC_BLOCK(ATOMIC_RESTORESTATE)
рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ__disable_interrupt();
рдФрд░__enable_interrupt();
ATOMIC_BLOCK () рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ "рдмреЙрдбреА" рдореЗрдВ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕ рдмрд╛рдзрд╛ рдзреНрд╡рдЬ рдХреЗ рдорд╛рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ ATOMIC_BLOCK () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛редEEPROM
MSP430 рдореЗрдВ EEPROM рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлреНрд▓реЗрд╢ рдореЗрдореЛрд░реА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ MspFlash рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ#include <EEPROM.h>
рдФрд░ MspFlash рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВ (рд╕реНрдХреЗрдЪ-> рдЗрдВрдкреЛрд░реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ... -> MspFlash), рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдХреЗ рдХрд┐рд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗ#define flash SEGMENT_D
рд╢реВрдиреНрдп selectProtocol () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрджрд▓реЗрдВelse
current_protocol = constrain(EEPROM.read(ee_PROTOCOL_ID),0,PROTO_END-1);
EEPROM.update(ee_PROTOCOL_ID, current_protocol);
рдкрд░
Flash.write(flash+ee_PROTOCOL_ID, & current_protocol,1);
рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдХреНрдпреЛрдВ, рдиреАрдЪреЗ рдкрдврд╝реЗрдВ) рдХреЗ рдкрдврд╝рдиреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВредрд╢реВрдиреНрдп рд╕реЗрдЯ_рдЯреИрдХреНрд╕рд┐рдб (рдмреВрд▓ рд░рд┐рдиреНрдпреВ) рдореЗрдВ, рдЖрдкрдХреЛ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рдмрд┐рдЯреНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред FLASH рдореЗрдореЛрд░реА рдмрд┐рдЯреНрд╕ рдореЗрдВ 1 рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреВрд░реЗ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдорд┐рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ (рддрдм рдорд╛рди 1 рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛)ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди (set_txid) рдХреЛ SelectProtocol рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдЦрдВрдб рдорд┐рдЯрд╛ рджреЗрдВрдЧреЗредрдпрд╣ рдерд╛:void set_txid(bool renew)
{
uint8_t i;
for(i=0; i<4; i++)
transmitterID[i] = EEPROM.read(ee_TXID0+i);
if(renew || (transmitterID[0]==0xFF && transmitterID[1]==0x0FF)) {
for(i=0; i<4; i++) {
transmitterID[i] = random() & 0xFF;
EEPROM.update(ee_TXID0+i, transmitterID[i]);
}
}
}
рдпрд╣ рдмрди рдЧрдпрд╛:void set_txid(bool renew)
{
uint8_t i;
unsigned char p;
for(i=0; i<4; i++) {
Flash.read(flash+ee_TXID0+i,&p,1);
transmitterID[i] =p;
}
Flash.read(flash+ee_PROTOCOL_ID,&p,1);
current_protocol = constrain(p,0,PROTO_END-1);
Flash.erase(flash);
if(renew || (transmitterID[0]==0xFF && transmitterID[1]==0x0FF)) {
for(i=0; i<4; i++) {
transmitterID[i] = random(0xff) & 0xFF;
p = transmitterID[i];
Flash.write(flash+ee_TXID0+i, &p,1);
}
}else{
for(i=0; i<4; i++) {
p = transmitterID[i];
Flash.write(flash+ee_TXID0+i, &p,1);
}
}
}
рдпрд╣рд╛рдВ рд╣рдо рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЦрдВрдб рдХреЛ рдорд┐рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдирдпрд╛ рдорд╛рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдкреБрд░рд╛рдиреЗ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред рдкрддрд╛ рдлрд╝реНрд▓реИрд╢ + ee_PROTOCOL_ID рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХрд╛ FLASH рдмрд╛рдЗрдЯ рд╕рд╛рдлрд╝ рд░рд╣рддрд╛ рд╣реИ (0xFF), рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕реЗрд▓реЗрдХреНрдЯрдкреНрд░реЛрдХреЛрд▓ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВредрд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ
рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдкрд┐рди рд╕реЗ рдирд┐рдкрдЯреЗрдВред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, SPI рдХреЗ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдЪрд┐рдХреЛрдЯреА" рдкреИрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдкрд┐рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ#define PPM_pin 2
#define MOSI_pin 3
#define SCK_pin 4
#define CE_pin 5
#define MISO_pin A0
#define CS_pin A1
#define ledPin 13
#define PPM_pin P1_5
#define MOSI_pin P2_0
#define SCK_pin P2_1
#define CE_pin P2_2
#define MISO_pin P2_3
#define CS_pin P2_4
#define ledPin P1_4
#define MOSI_on PORTD |= _BV(3)
#define MOSI_off PORTD &= ~_BV(3)
#define SCK_on PORTD |= _BV(4)
#define SCK_off PORTD &= ~_BV(4)
#define CE_on PORTD |= _BV(5)
#define CE_off PORTD &= ~_BV(5)
#define CS_on PORTC |= _BV(1)
#define CS_off PORTC &= ~_BV(1)
#define MISO_on (PINC & _BV(0))
#define MOSI_on P2OUT |= _BV(0)
#define MOSI_off P2OUT &= ~_BV(0)
#define SCK_on P2OUT |= _BV(1)
#define SCK_off P2OUT &= ~_BV(1)
#define CE_on P2OUT |= _BV(2)
#define CE_off P2OUT &= ~_BV(2)
#define CS_on P2OUT |= _BV(4)
#define CS_off P2OUT &= ~_BV(4)
#define MISO_on (P2IN & _BV(3))
ATMEL MK рдореЗрдВ, MSP430 PxOUT рдореЗрдВ PORTx рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрдирдкреБрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд╢рдГ PINx рдФрд░ PxIN рд░рдЬрд┐рд╕реНрдЯрд░ред рд╡реИрд╕реЗ, рдПрдирд░реНрдЬрд┐рдпрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреЛрдИ _BV (x) рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВ:#define _BV(val) 1<<val
рдлрд╝рдВрдХреНрд╢рди рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк () рдореЗрдВ рд╣рдо рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ рдХреЗ рдкрд┐рди рдорд╛рдиреЛрдВ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВrandomSeed((analogRead(A4) & 0x1F) | (analogRead(A5) << 5));
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПrandomSeed((analogRead(A0) & 0x1F) | (analogRead(A1) << 5));
MSP430 рдореЗрдВ, рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ A0, A1, A2, ..., A7 рдкрд┐рди P1_0, P1_1, P1_2, ..., P1_7 рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВредрдЬрдм рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИattachInterrupt(PPM_pin - 2, ISR_ppm, CHANGE);
рдкрд░attachInterrupt(PPM_pin , ISR_ppm, CHANGE);
рдореЗрдЧрд╛ 328 рдкрд░ Arduino Uno, Nano, Mini, рдЖрджрд┐ рдореЗрдВ, рдПрдХ рд░реБрдХрд╛рд╡рдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 2 рдкрд┐рди (2, 3) рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдФрд░ рд╕рдВрд▓рдЧреНрдирдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ, рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╣реИ рд░реБрдХрд╛рд╡рдЯ рд╕рдВрдЦреНрдпрд╛, MSP430 рдХреЗ рд░реВрдк рдореЗрдВ рдкрд┐рди рдирд╣реАрдВред рд╕рдВрд▓рдЧреНрдирдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА () редрдШрдбрд╝реА
рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк рдореЗрдВ рдмрджрд▓реЗрдВ ()TCCR1A = 0;
TCCR1B = 0;
TCCR1B |= (1 << CS11);
рдкрд░TACTL = TASSEL_2 + ID_3 + MC_2 + TACLR;
рдкреАрдкреАрдПрдо рдореЗрдВ рдкрд▓реНрд╕ рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдорд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ 2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ (16 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдШрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рдФрд░ 8 рдХреЗ рдПрдХ рд╡рд┐рднрдХреНрдд) рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдЧрд┐рдирддреА рдореЛрдб рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛редрд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди ISR_ppm () рдореЗрдВ рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВcounterPPM = TCNT1;
TCNT1 = 0;
рдкрд░counterPPM = TAR;
TAR = 0;
рд░рдЬрд┐рд╕реНрдЯрд░ TCNT1 рдФрд░ TAR рдЯрд╛рдЗрдорд░ рдХрд╛рдЙрдВрдЯрд░ рд╣реИрдВредрдпрд╛рджреГрдЪреНрдЫрд┐рдХ ()
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдирд░реНрдЬрд┐рдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рдирдВрдмрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо nRF24_multipro.ino рдФрд░ Bayang.ino рдХреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВrandom() & 0xFF;
рдкрд░random(0xFF);
рдФрд░random() % 0x42;
рдкрд░random(0x41);
???
рдФрд░ рдЕрдВрдд рдореЗрдВ, MJX.ino рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╢реВрдиреНрдп MJX_bind () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо mjx_init2 рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ;рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдлрд▓ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВредрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдХреЛрдбрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдбрдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджреВрд╕рд░реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛, рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрдиреЗрдХреНрдЯреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдордЭреЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдФрд░, рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдЕрдХреНрд╕рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦреЗрдВредрдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ SPI рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред