updated for HS05
This commit is contained in:
		
							parent
							
								
									a196501f15
								
							
						
					
					
						commit
						807617de83
					
				
							
								
								
									
										249
									
								
								HamShield.cpp
								
								
								
								
							
							
						
						
									
										249
									
								
								HamShield.cpp
								
								
								
								
							| 
						 | 
					@ -136,11 +136,7 @@ HamShield::HamShield(uint8_t address) {
 | 
				
			||||||
/** Power on and prepare for general usage.
 | 
					/** Power on and prepare for general usage.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void HamShield::initialize() {
 | 
					void HamShield::initialize() {  
 | 
				
			||||||
   // set up PWM output for RF power control - commenting out to get rid of terrible buzzing noise
 | 
					 | 
				
			||||||
   // pwr_control_pin = 9;  
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
   // Note: these initial settings are for UHF 12.5kHz channel
 | 
					   // Note: these initial settings are for UHF 12.5kHz channel
 | 
				
			||||||
   // see the A1846S register table and initial settings for more info
 | 
					   // see the A1846S register table and initial settings for more info
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
| 
						 | 
					@ -156,6 +152,11 @@ void HamShield::initialize() {
 | 
				
			||||||
	tx_data = 0x03AC; // default is 0x32C
 | 
						tx_data = 0x03AC; // default is 0x32C
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x09, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x09, tx_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// AGC problem improve settings?
 | 
				
			||||||
 | 
						tx_data = 0x43A0;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x0A, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0xA100;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x13, tx_data);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
    tx_data = 0x0031;
 | 
					    tx_data = 0x0031;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x31, tx_data); // included as per AU supplied register table
 | 
					    I2Cdev::writeWord(devAddr, 0x31, tx_data); // included as per AU supplied register table
 | 
				
			||||||
| 
						 | 
					@ -167,15 +168,15 @@ void HamShield::initialize() {
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x34, tx_data); // Rx digital gain - included as per AU supplied register table
 | 
					    I2Cdev::writeWord(devAddr, 0x34, tx_data); // Rx digital gain - included as per AU supplied register table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//  bits 6:0 are for digital voice gain
 | 
						//  bits 6:0 are for digital voice gain
 | 
				
			||||||
	tx_data = 0x470F;
 | 
						tx_data = 0x060f; //0x470F;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x41, tx_data); 
 | 
					    I2Cdev::writeWord(devAddr, 0x41, tx_data); 
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// bits 11:8 are for voice digital gain after tx ADC downsample
 | 
						// bits 11:8 are for voice digital gain after tx ADC downsample
 | 
				
			||||||
	// bits 7:0 are for rx volume control
 | 
						// bits 7:0 are for rx volume control
 | 
				
			||||||
	tx_data = 0x0DFF;
 | 
						tx_data = 0x0AFF;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x44, tx_data); // addx was A1846S_RX_VOLUME_REG
 | 
					    I2Cdev::writeWord(devAddr, 0x44, tx_data); // addx was A1846S_RX_VOLUME_REG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x7FFF;
 | 
						tx_data = 0x7F2F;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x47, tx_data);// soft mute
 | 
					    I2Cdev::writeWord(devAddr, 0x47, tx_data);// soft mute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x2C62;
 | 
						tx_data = 0x2C62;
 | 
				
			||||||
| 
						 | 
					@ -193,13 +194,13 @@ void HamShield::initialize() {
 | 
				
			||||||
	tx_data = 0x1C00;
 | 
						tx_data = 0x1C00;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x57, tx_data);// bypass rssi lpfilter
 | 
					    I2Cdev::writeWord(devAddr, 0x57, tx_data);// bypass rssi lpfilter
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x0EDB;
 | 
						tx_data = 0x0EDD;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x5A, tx_data);// SQ detection time
 | 
					    I2Cdev::writeWord(devAddr, 0x5A, tx_data);// SQ detection time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x101E;
 | 
						tx_data = 0x101E;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x60, tx_data);// SQ noise threshold
 | 
					    I2Cdev::writeWord(devAddr, 0x60, tx_data);// SQ noise threshold
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x16AD;
 | 
						tx_data = 0x3FFF;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x63, tx_data);// pre-emphasis bypass threshold
 | 
					    I2Cdev::writeWord(devAddr, 0x63, tx_data);// pre-emphasis bypass threshold
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// calibration
 | 
						// calibration
 | 
				
			||||||
| 
						 | 
					@ -214,22 +215,28 @@ void HamShield::initialize() {
 | 
				
			||||||
	delay(10);
 | 
						delay(10);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// continue default setup in 12.5kHz mode
 | 
						// continue default setup in 12.5kHz mode
 | 
				
			||||||
 | 
						tx_data = 0x3D37;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x11, tx_data); // tuning bit
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						tx_data = 0x0100;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x12, tx_data); // tuning bit
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	tx_data = 0x1100;
 | 
						tx_data = 0x1100;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x15, tx_data); // tuning bit
 | 
					    I2Cdev::writeWord(devAddr, 0x15, tx_data); // tuning bit
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x1495; // 4495
 | 
						tx_data = 0x4495; // 4495
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x32, tx_data); // agc target power	
 | 
					    I2Cdev::writeWord(devAddr, 0x32, tx_data); // agc target power	
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x40C3;
 | 
						tx_data = 0x40C3;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x3A, tx_data); // modu_det_sel sq setting
 | 
					    I2Cdev::writeWord(devAddr, 0x3A, tx_data); // modu_det_sel sq setting
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x0F1E;
 | 
						tx_data = 0x0407;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x3C, tx_data); // pk_det_thr sq setting
 | 
					    I2Cdev::writeWord(devAddr, 0x3C, tx_data); // pk_det_thr sq setting
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x28D0;
 | 
						tx_data = 0x28D0;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x3F, tx_data); // pk_det_thr sq setting
 | 
					    I2Cdev::writeWord(devAddr, 0x3F, tx_data); // pk_det_thr sq setting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x20BE;
 | 
						tx_data = 0x203E;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x48, tx_data); // pk_det_thr sq setting
 | 
					    I2Cdev::writeWord(devAddr, 0x48, tx_data); // pk_det_thr sq setting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x0A50;
 | 
						tx_data = 0x0A50;
 | 
				
			||||||
| 
						 | 
					@ -241,7 +248,7 @@ void HamShield::initialize() {
 | 
				
			||||||
	tx_data = 0x2494;
 | 
						tx_data = 0x2494;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x65, tx_data); // setting th_sif for SQ rssi detect
 | 
					    I2Cdev::writeWord(devAddr, 0x65, tx_data); // setting th_sif for SQ rssi detect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tx_data = 0x2494;
 | 
						tx_data = 0xEB2E;//0x2494;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x66, tx_data); // setting th_sif for SQ rssi detect
 | 
					    I2Cdev::writeWord(devAddr, 0x66, tx_data); // setting th_sif for SQ rssi detect
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// AGC gain table settings
 | 
						// AGC gain table settings
 | 
				
			||||||
| 
						 | 
					@ -250,28 +257,40 @@ void HamShield::initialize() {
 | 
				
			||||||
	tx_data = 0x0001;
 | 
						tx_data = 0x0001;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x7F, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x7F, tx_data);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	tx_data = 0x0014;
 | 
						tx_data = 0x000C;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x06, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x05, tx_data);
 | 
				
			||||||
	tx_data = 0x020C;
 | 
						tx_data = 0x020C;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x07, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x06, tx_data);
 | 
				
			||||||
	tx_data = 0x0214;
 | 
					 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x08, tx_data);
 | 
					 | 
				
			||||||
	tx_data = 0x030C;
 | 
						tx_data = 0x030C;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x09, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x07, tx_data);
 | 
				
			||||||
	tx_data = 0x0314;
 | 
					 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0A, tx_data);
 | 
					 | 
				
			||||||
	tx_data = 0x0324;
 | 
						tx_data = 0x0324;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0B, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x08, tx_data);
 | 
				
			||||||
	tx_data = 0x0344;
 | 
					 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0C, tx_data);
 | 
					 | 
				
			||||||
	tx_data = 0x1344;
 | 
						tx_data = 0x1344;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x09, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x3F44;//
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x0A, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x3F44;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x0B, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x3F44;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x0C, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x3F44;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0D, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x0D, tx_data);
 | 
				
			||||||
	tx_data = 0x1B44;
 | 
						tx_data = 0x3F44;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0E, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x0E, tx_data);
 | 
				
			||||||
	tx_data = 0x3F44;
 | 
						tx_data = 0x3F44;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x0F, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x0F, tx_data);
 | 
				
			||||||
	tx_data = 0xE0EB;
 | 
						tx_data = 0xE0ED;
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, 0x12, tx_data);
 | 
					    I2Cdev::writeWord(devAddr, 0x12, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0xF2FE;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x13, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x0A16;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x14, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x2424;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x15, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x2424;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x16, tx_data);
 | 
				
			||||||
 | 
						tx_data = 0x2424;
 | 
				
			||||||
 | 
					    I2Cdev::writeWord(devAddr, 0x17, tx_data);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// done writing to upper page addresses, so set 0x7F back
 | 
						// done writing to upper page addresses, so set 0x7F back
 | 
				
			||||||
	tx_data = 0x0000;
 | 
						tx_data = 0x0000;
 | 
				
			||||||
| 
						 | 
					@ -339,32 +358,21 @@ void HamShield::setFrequency(uint32_t freq_khz) {
 | 
				
			||||||
    radio_frequency = freq_khz;
 | 
					    radio_frequency = freq_khz;
 | 
				
			||||||
    uint32_t freq_raw = freq_khz << 4; // shift by 4 to multiply by 16 (was shift by 3 in old 1846 chip)
 | 
					    uint32_t freq_raw = freq_khz << 4; // shift by 4 to multiply by 16 (was shift by 3 in old 1846 chip)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// turn off tx/rx
 | 
				
			||||||
 | 
						I2Cdev::writeBitsW(devAddr, A1846S_CTL_REG, 6, 2, 0);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// if we're using a 12MHz crystal and the frequency is
 | 
						// if we're using a 12MHz crystal and the frequency is
 | 
				
			||||||
	// 136.5M,409.5M and 455M, then we have to do special stuff
 | 
						// 136.5M,409.5M and 455M, then we have to do special stuff
 | 
				
			||||||
    if (radio_frequency == 136500 ||
 | 
					    if (radio_frequency == 136500 ||
 | 
				
			||||||
        radio_frequency == 490500 ||
 | 
					        radio_frequency == 490500 ||
 | 
				
			||||||
		radio_frequency == 455000) {
 | 
							radio_frequency == 455000) {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// close TX or RX
 | 
					 | 
				
			||||||
		I2Cdev::readWord(devAddr, 0x00, radio_i2c_buf);
 | 
					 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x30, 0x06);
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// set up AU1846 for funky freq
 | 
							// set up AU1846 for funky freq
 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x05, 0x86D3);
 | 
							I2Cdev::writeWord(devAddr, 0x05, 0x86D3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// open TX or RX
 | 
					 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x30, radio_i2c_buf[0]);		
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		// just undo it regardless of what the last frequency was
 | 
					 | 
				
			||||||
		// close TX or RX
 | 
					 | 
				
			||||||
		I2Cdev::readWord(devAddr, 0x00, radio_i2c_buf);
 | 
					 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x30, 0x06);
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// set up AU1846 for normal freq
 | 
							// set up AU1846 for normal freq
 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x05, 0x8763);
 | 
							I2Cdev::writeWord(devAddr, 0x05, 0x8763);
 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		// open TX or RX
 | 
					 | 
				
			||||||
		I2Cdev::writeWord(devAddr, 0x30, radio_i2c_buf[0]);		
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
    // send top 16 bits to A1846S_FREQ_HI_REG	
 | 
					    // send top 16 bits to A1846S_FREQ_HI_REG	
 | 
				
			||||||
| 
						 | 
					@ -373,54 +381,35 @@ void HamShield::setFrequency(uint32_t freq_khz) {
 | 
				
			||||||
    //  send bottom 16 bits to A1846S_FREQ_LO_REG
 | 
					    //  send bottom 16 bits to A1846S_FREQ_LO_REG
 | 
				
			||||||
    freq_half = (uint16_t) (freq_raw & 0xFFFF);
 | 
					    freq_half = (uint16_t) (freq_raw & 0xFFFF);
 | 
				
			||||||
    I2Cdev::writeWord(devAddr, A1846S_FREQ_LO_REG, freq_half);
 | 
					    I2Cdev::writeWord(devAddr, A1846S_FREQ_LO_REG, freq_half);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					   	if (rx_active) {
 | 
				
			||||||
 | 
							setRX(true);
 | 
				
			||||||
 | 
						} else if (tx_active) {
 | 
				
			||||||
 | 
							setTX(true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint32_t HamShield::getFrequency() {
 | 
					uint32_t HamShield::getFrequency() {
 | 
				
			||||||
  return radio_frequency;
 | 
					  return radio_frequency;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::setUHF() {
 | 
					void HamShield::setTxBand2m() {
 | 
				
			||||||
  setGpioHi(2); // turn off VHF
 | 
					  setGpioLow(4); // V1
 | 
				
			||||||
  setGpioLow(3); // turn on UHF
 | 
					  setGpioHi(5); // V2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::setVHF() {
 | 
					void HamShield::setTxBand1_2m() {
 | 
				
			||||||
  setGpioHi(3); // turn off UHF
 | 
					  setGpioHi(4); // V1
 | 
				
			||||||
  setGpioLow(2); // turn on VHF
 | 
					  setGpioLow(5); // V2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::setNoFilters() {
 | 
					void HamShield::setTxBand70cm() {
 | 
				
			||||||
  setGpioHi(3); // turn off UHF
 | 
					  setGpioHi(4); // V1
 | 
				
			||||||
  setGpioHi(2); // turn off VHF
 | 
					  setGpioHi(5); // V2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					
 | 
				
			||||||
// band
 | 
					
 | 
				
			||||||
// 00 - 400-520MHz 
 | 
					 | 
				
			||||||
// 10 - 200-260MHz
 | 
					 | 
				
			||||||
// 11 - 134-174MHz
 | 
					 | 
				
			||||||
// TODO: add write to 0x32 based on band selection
 | 
					 | 
				
			||||||
void HamShield::setBand(uint16_t band){
 | 
					 | 
				
			||||||
    if (band == 0) {
 | 
					 | 
				
			||||||
      setUHF();
 | 
					 | 
				
			||||||
    } else if (band == 2) {
 | 
					 | 
				
			||||||
      // not quite in the band for our filters, but use VHF
 | 
					 | 
				
			||||||
      setVHF();
 | 
					 | 
				
			||||||
    } else if (band == 3) {
 | 
					 | 
				
			||||||
      setVHF();
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      // illegal write code, turn UHF and VHF channels both off
 | 
					 | 
				
			||||||
      setNoFilters();
 | 
					 | 
				
			||||||
      // turn off transmit as well to make sure we don't break anything
 | 
					 | 
				
			||||||
      setTX(0);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    I2Cdev::writeBitsW(devAddr, A1846S_BAND_SEL_REG, A1846S_BAND_SEL_BIT, A1846S_BAND_SEL_LENGTH, band);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
uint16_t HamShield::getBand(){
 | 
					 | 
				
			||||||
    I2Cdev::readBitsW(devAddr, A1846S_BAND_SEL_REG, A1846S_BAND_SEL_BIT, A1846S_BAND_SEL_LENGTH, radio_i2c_buf);
 | 
					 | 
				
			||||||
    return radio_i2c_buf[0];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
// xtal frequency (kHz)
 | 
					// xtal frequency (kHz)
 | 
				
			||||||
| 
						 | 
					@ -493,15 +482,30 @@ uint16_t HamShield::getChanMode(){
 | 
				
			||||||
void HamShield::setTX(bool on_noff){
 | 
					void HamShield::setTX(bool on_noff){
 | 
				
			||||||
    // make sure RX is off
 | 
					    // make sure RX is off
 | 
				
			||||||
    if (on_noff) {
 | 
					    if (on_noff) {
 | 
				
			||||||
      setRX(false);
 | 
							tx_active = true;
 | 
				
			||||||
      
 | 
							rx_active = false;
 | 
				
			||||||
        // set RX output off
 | 
							setRX(false);
 | 
				
			||||||
      setGpioHi(4); // remember that RX and TX are active low
 | 
							
 | 
				
			||||||
        // set TX output on
 | 
							if((radio_frequency >= 134000) && (radio_frequency <= 174000)) { 
 | 
				
			||||||
      setGpioLow(5); // remember that RX and TX are active low
 | 
								setTxBand2m();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if((radio_frequency >= 200000) && (radio_frequency <= 260000)) { 
 | 
				
			||||||
 | 
								setTxBand1_2m();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if((radio_frequency >= 400000) && (radio_frequency <= 520000)) { 
 | 
				
			||||||
 | 
								setTxBand70cm();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							delay(500);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    I2Cdev::writeBitW(devAddr, A1846S_CTL_REG, A1846S_TX_MODE_BIT, on_noff);
 | 
					    I2Cdev::writeBitW(devAddr, A1846S_CTL_REG, A1846S_TX_MODE_BIT, on_noff);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						if (on_noff) {
 | 
				
			||||||
 | 
							delay(6000);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
bool HamShield::getTX(){
 | 
					bool HamShield::getTX(){
 | 
				
			||||||
    I2Cdev::readBitW(devAddr, A1846S_CTL_REG, A1846S_TX_MODE_BIT, radio_i2c_buf);
 | 
					    I2Cdev::readBitW(devAddr, A1846S_CTL_REG, A1846S_TX_MODE_BIT, radio_i2c_buf);
 | 
				
			||||||
| 
						 | 
					@ -509,15 +513,15 @@ bool HamShield::getTX(){
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::setRX(bool on_noff){
 | 
					void HamShield::setRX(bool on_noff){
 | 
				
			||||||
   // make sure TX is off
 | 
						// make sure TX is off
 | 
				
			||||||
   if (on_noff) {
 | 
						if (on_noff) {
 | 
				
			||||||
     setTX(false);
 | 
							tx_active = false;
 | 
				
			||||||
     
 | 
							rx_active = true;
 | 
				
			||||||
    // set TX output off
 | 
							setTX(false);
 | 
				
			||||||
    setGpioHi(5); // remember that RX and TX are active low
 | 
							
 | 
				
			||||||
    // set RX output on
 | 
							setGpioLow(4); // V1
 | 
				
			||||||
    setGpioLow(4); // remember that RX and TX are active low
 | 
							setGpioLow(5); // V2
 | 
				
			||||||
   }
 | 
					  }
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
   I2Cdev::writeBitW(devAddr, A1846S_CTL_REG, A1846S_RX_MODE_BIT, on_noff);
 | 
					   I2Cdev::writeBitW(devAddr, A1846S_CTL_REG, A1846S_RX_MODE_BIT, on_noff);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -529,25 +533,30 @@ bool HamShield::getRX(){
 | 
				
			||||||
void HamShield::setModeTransmit(){
 | 
					void HamShield::setModeTransmit(){
 | 
				
			||||||
    // check to see if we should allow them to do this
 | 
					    // check to see if we should allow them to do this
 | 
				
			||||||
    if(restrictions == true) { 
 | 
					    if(restrictions == true) { 
 | 
				
			||||||
       if((radio_frequency > 139999) & (radio_frequency < 148001)) { setRX(false); setTX(true); } 
 | 
					       if((radio_frequency > 139999) & (radio_frequency < 148001)) { setRX(false); } 
 | 
				
			||||||
       if((radio_frequency > 218999) & (radio_frequency < 225001)) { setRX(false); setTX(true); } 
 | 
					       if((radio_frequency > 218999) & (radio_frequency < 225001)) { setRX(false); } 
 | 
				
			||||||
       if((radio_frequency > 419999) & (radio_frequency < 450001)) { setRX(false); setTX(true); }                     
 | 
					       if((radio_frequency > 419999) & (radio_frequency < 450001)) { setRX(false); }                     
 | 
				
			||||||
    } else { 
 | 
					    } else { 
 | 
				
			||||||
		// turn off rx, turn on tx
 | 
					 | 
				
			||||||
		setRX(false); // break before make
 | 
					 | 
				
			||||||
		setTX(true);
 | 
							setTX(true);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
void HamShield::setModeReceive(){
 | 
					void HamShield::setModeReceive(){
 | 
				
			||||||
	// turn on rx, turn off tx
 | 
						// turn on rx, turn off tx
 | 
				
			||||||
	setTX(false); // break before make
 | 
					 | 
				
			||||||
	setRX(true);
 | 
						setRX(true);
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
void HamShield::setModeOff(){
 | 
					void HamShield::setModeOff(){
 | 
				
			||||||
	// turn off rx, turn off tx, set pwr_dwn bit
 | 
						// turn off tx/rx
 | 
				
			||||||
	setTX(false);
 | 
						I2Cdev::writeBitsW(devAddr, A1846S_CTL_REG, 6, 2, 0);
 | 
				
			||||||
	setRX(false);
 | 
						
 | 
				
			||||||
} 
 | 
						// turn off amplifiers
 | 
				
			||||||
 | 
						setGpioLow(4); // V1
 | 
				
			||||||
 | 
						setGpioLow(5); // V2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tx_active = false;
 | 
				
			||||||
 | 
						rx_active = true;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						//TODO: set pwr_dwn bit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// set tx source
 | 
					// set tx source
 | 
				
			||||||
// 000 - Nothing
 | 
					// 000 - Nothing
 | 
				
			||||||
| 
						 | 
					@ -983,6 +992,11 @@ uint16_t HamShield::getGpioMode(uint16_t gpio){
 | 
				
			||||||
    return radio_i2c_buf[0];
 | 
					    return radio_i2c_buf[0];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint16_t HamShield::getGpios(){
 | 
				
			||||||
 | 
						I2Cdev::readWord(devAddr, A1846S_GPIO_MODE_REG, radio_i2c_buf);
 | 
				
			||||||
 | 
					    return radio_i2c_buf[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Int
 | 
					// Int
 | 
				
			||||||
void HamShield::enableInterrupt(uint16_t interrupt){
 | 
					void HamShield::enableInterrupt(uint16_t interrupt){
 | 
				
			||||||
    I2Cdev::writeBitW(devAddr, A1846S_INT_MODE_REG, interrupt, 1);
 | 
					    I2Cdev::writeBitW(devAddr, A1846S_INT_MODE_REG, interrupt, 1);
 | 
				
			||||||
| 
						 | 
					@ -1053,34 +1067,41 @@ uint16_t HamShield::readDTMFCode(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::setRfPower(uint8_t pwr) {
 | 
					void HamShield::setRfPower(uint8_t pwr) {
 | 
				
			||||||
   int max_pwr = 15;
 | 
						int max_pwr = 15;
 | 
				
			||||||
   if (pwr > max_pwr) {
 | 
						if (pwr > max_pwr) {
 | 
				
			||||||
     pwr = max_pwr; 
 | 
							pwr = max_pwr; 
 | 
				
			||||||
   }
 | 
						}
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
   I2Cdev::writeBitsW(devAddr, A1846S_PABIAS_REG, A1846S_PADRV_BIT, A1846S_PADRV_LENGTH, pwr);
 | 
						// turn off tx/rx
 | 
				
			||||||
 | 
						I2Cdev::writeBitsW(devAddr, A1846S_CTL_REG, 6, 2, 0);
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
						I2Cdev::writeBitsW(devAddr, A1846S_PABIAS_REG, A1846S_PADRV_BIT, A1846S_PADRV_LENGTH, pwr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   	if (rx_active) {
 | 
				
			||||||
 | 
							setRX(true);
 | 
				
			||||||
 | 
						} else if (tx_active) {
 | 
				
			||||||
 | 
							setTX(true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool HamShield::frequency(uint32_t freq_khz) {  
 | 
					bool HamShield::frequency(uint32_t freq_khz) {  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if((freq_khz >= 134000) && (freq_khz <= 174000)) { 
 | 
					  if((freq_khz >= 134000) && (freq_khz <= 174000)) { 
 | 
				
			||||||
      setVHF();
 | 
					      setTxBand2m();
 | 
				
			||||||
      //setBand(3); // 0b11 is 134-174MHz
 | 
					 | 
				
			||||||
      setFrequency(freq_khz);
 | 
					      setFrequency(freq_khz);
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if((freq_khz >= 200000) && (freq_khz <= 260000)) { 
 | 
					  if((freq_khz >= 200000) && (freq_khz <= 260000)) { 
 | 
				
			||||||
      setVHF();
 | 
					      setTxBand1_2m();
 | 
				
			||||||
      //setBand(2); // 10 is 200-260MHz
 | 
					 | 
				
			||||||
      setFrequency(freq_khz);
 | 
					      setFrequency(freq_khz);
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if((freq_khz >= 400000) && (freq_khz <= 520000)) { 
 | 
					  if((freq_khz >= 400000) && (freq_khz <= 520000)) { 
 | 
				
			||||||
      setUHF();
 | 
					      setTxBand70cm();
 | 
				
			||||||
      //setBand(00); // 00 is 400-520MHz
 | 
					 | 
				
			||||||
      setFrequency(freq_khz); 
 | 
					      setFrequency(freq_khz); 
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								HamShield.h
								
								
								
								
							
							
						
						
									
										22
									
								
								HamShield.h
								
								
								
								
							| 
						 | 
					@ -18,8 +18,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HAMSHIELD_MORSE_DOT             100    // Morse code dot length (smaller is faster WPM)
 | 
					#define HAMSHIELD_MORSE_DOT             100    // Morse code dot length (smaller is faster WPM)
 | 
				
			||||||
#define HAMSHIELD_MORSE_BUFFER_SIZE      80    // Char buffer size for morse code text
 | 
					#define HAMSHIELD_MORSE_BUFFER_SIZE      80    // Char buffer size for morse code text
 | 
				
			||||||
#define HAMSHIELD_AUX_BUTTON              5    // Pin assignment for AUX button
 | 
					#define HAMSHIELD_AUX_BUTTON              2    // Pin assignment for AUX button
 | 
				
			||||||
#define HAMSHIELD_PWM_PIN                 11    // Pin assignment for PWM output
 | 
					#define HAMSHIELD_PWM_PIN                 3    // Pin assignment for PWM output
 | 
				
			||||||
#define HAMSHIELD_EMPTY_CHANNEL_RSSI   -110    // Default threshold where channel is considered "clear"
 | 
					#define HAMSHIELD_EMPTY_CHANNEL_RSSI   -110    // Default threshold where channel is considered "clear"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HAMSHIELD_AFSK_RX_FIFO_LEN 16
 | 
					#define HAMSHIELD_AFSK_RX_FIFO_LEN 16
 | 
				
			||||||
| 
						 | 
					@ -272,16 +272,10 @@ class HamShield {
 | 
				
			||||||
	uint32_t getFrequency();
 | 
						uint32_t getFrequency();
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	// band
 | 
						// band
 | 
				
			||||||
	// 00 - 400-520MHz
 | 
					    void setTxBand2m();
 | 
				
			||||||
	// 10 - 200-260MHz
 | 
					    void setTxBand1_2m();
 | 
				
			||||||
	// 11 - 134-174MHz
 | 
					    void setTxBand70cm();
 | 
				
			||||||
	void setBand(uint16_t band);
 | 
					    bool frequency(uint32_t freq_khz);
 | 
				
			||||||
	uint16_t getBand();
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
        void setUHF();
 | 
					 | 
				
			||||||
        void setVHF();
 | 
					 | 
				
			||||||
        void setNoFilters();
 | 
					 | 
				
			||||||
        bool frequency(uint32_t freq_khz);
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
	// xtal frequency (kHz)
 | 
						// xtal frequency (kHz)
 | 
				
			||||||
	// 12-14MHz crystal: this reg is set to crystal freq_khz
 | 
						// 12-14MHz crystal: this reg is set to crystal freq_khz
 | 
				
			||||||
| 
						 | 
					@ -483,6 +477,7 @@ class HamShield {
 | 
				
			||||||
	void setGpioLow(uint16_t gpio);
 | 
						void setGpioLow(uint16_t gpio);
 | 
				
			||||||
	void setGpioHi(uint16_t gpio);
 | 
						void setGpioHi(uint16_t gpio);
 | 
				
			||||||
	uint16_t getGpioMode(uint16_t gpio);
 | 
						uint16_t getGpioMode(uint16_t gpio);
 | 
				
			||||||
 | 
						uint16_t getGpios();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// Int
 | 
						// Int
 | 
				
			||||||
	void enableInterrupt(uint16_t interrupt);
 | 
						void enableInterrupt(uint16_t interrupt);
 | 
				
			||||||
| 
						 | 
					@ -551,7 +546,8 @@ class HamShield {
 | 
				
			||||||
    private:
 | 
					    private:
 | 
				
			||||||
        uint8_t devAddr;
 | 
					        uint8_t devAddr;
 | 
				
			||||||
        uint16_t radio_i2c_buf[4];
 | 
					        uint16_t radio_i2c_buf[4];
 | 
				
			||||||
        int pwr_control_pin;
 | 
							bool tx_active;
 | 
				
			||||||
 | 
							bool rx_active;
 | 
				
			||||||
        uint32_t radio_frequency;
 | 
					        uint32_t radio_frequency;
 | 
				
			||||||
        uint32_t FRS[];
 | 
					        uint32_t FRS[];
 | 
				
			||||||
        uint32_t GMRS[];
 | 
					        uint32_t GMRS[];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								KISS.h
								
								
								
								
							
							
						
						
									
										4
									
								
								KISS.h
								
								
								
								
							| 
						 | 
					@ -20,11 +20,11 @@ public:
 | 
				
			||||||
    TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
					    TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
				
			||||||
    dds->clockTick();
 | 
					    dds->clockTick();
 | 
				
			||||||
    if(++tcnt == (DDS_REFCLK_DEFAULT/9600)) {
 | 
					    if(++tcnt == (DDS_REFCLK_DEFAULT/9600)) {
 | 
				
			||||||
      PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
					      //PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
				
			||||||
      radio->afsk.timer();
 | 
					      radio->afsk.timer();
 | 
				
			||||||
      tcnt = 0;
 | 
					      tcnt = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    PORTD &= ~(_BV(2));
 | 
					    //PORTD &= ~(_BV(2));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  Stream *io;
 | 
					  Stream *io;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,12 @@
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
#include <avr/wdt.h> 
 | 
					#include <avr/wdt.h> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//TODO: move these into library
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
String messagebuff = "";
 | 
					String messagebuff = "";
 | 
				
			||||||
| 
						 | 
					@ -20,16 +26,27 @@ String textmessage = "";
 | 
				
			||||||
int msgptr = 0;
 | 
					int msgptr = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on pwr to the radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(115200);
 | 
					  Serial.begin(115200);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					
 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					  
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.frequency(144390);
 | 
					  radio.frequency(144390);
 | 
				
			||||||
  radio.setRfPower(15);
 | 
					  radio.setRfPower(8);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  radio.afsk.start(&dds);
 | 
					  radio.afsk.start(&dds);
 | 
				
			||||||
  pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
 | 
					 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  Serial.println("HELLO");
 | 
					  Serial.println("HELLO");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,10 @@
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
#include <avr/wdt.h> 
 | 
					#include <avr/wdt.h> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
String messagebuff = "";
 | 
					String messagebuff = "";
 | 
				
			||||||
| 
						 | 
					@ -20,16 +24,25 @@ String textmessage = "";
 | 
				
			||||||
int msgptr = 0;
 | 
					int msgptr = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on the radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(115200);
 | 
					  Serial.begin(115200);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.frequency(145570);
 | 
					  radio.frequency(145570);
 | 
				
			||||||
  radio.setRfPower(15);
 | 
					  radio.setRfPower(15);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  radio.afsk.start(&dds);
 | 
					  radio.afsk.start(&dds);
 | 
				
			||||||
  pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
 | 
					 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  Serial.println("HELLO");
 | 
					  Serial.println("HELLO");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -75,7 +88,7 @@ void prepMessage() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if(radio.afsk.txReady()) {
 | 
					    if(radio.afsk.txReady()) {
 | 
				
			||||||
      Serial.println(F("txReady"));
 | 
					      Serial.println(F("txReady"));
 | 
				
			||||||
      radio.setModeTransmit();
 | 
					      //radio.setModeTransmit();
 | 
				
			||||||
      //delay(100);
 | 
					      //delay(100);
 | 
				
			||||||
      if(radio.afsk.txStart()) {
 | 
					      if(radio.afsk.txStart()) {
 | 
				
			||||||
        Serial.println(F("txStart"));
 | 
					        Serial.println(F("txStart"));
 | 
				
			||||||
| 
						 | 
					@ -97,14 +110,15 @@ void prepMessage() {
 | 
				
			||||||
    radio.setModeReceive();
 | 
					    radio.setModeReceive();
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
 | 
					// TODO: d2 is now our switch, so don't write to that
 | 
				
			||||||
ISR(TIMER2_OVF_vect) {
 | 
					ISR(TIMER2_OVF_vect) {
 | 
				
			||||||
  TIFR2 = _BV(TOV2);
 | 
					  TIFR2 = _BV(TOV2);
 | 
				
			||||||
  static uint8_t tcnt = 0;
 | 
					  static uint8_t tcnt = 0;
 | 
				
			||||||
  if(++tcnt == 8) {
 | 
					  if(++tcnt == 8) {
 | 
				
			||||||
  digitalWrite(2, HIGH);
 | 
					  //digitalWrite(2, HIGH);
 | 
				
			||||||
  dds.clockTick();
 | 
					  dds.clockTick();
 | 
				
			||||||
  digitalWrite(2, LOW);
 | 
					  //digitalWrite(2, LOW);
 | 
				
			||||||
    tcnt = 0;
 | 
					    tcnt = 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -112,7 +126,7 @@ ISR(TIMER2_OVF_vect) {
 | 
				
			||||||
ISR(ADC_vect) {
 | 
					ISR(ADC_vect) {
 | 
				
			||||||
  static uint8_t tcnt = 0;
 | 
					  static uint8_t tcnt = 0;
 | 
				
			||||||
  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
					  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
				
			||||||
  PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
					  //PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
				
			||||||
  dds.clockTick();
 | 
					  dds.clockTick();
 | 
				
			||||||
  if(++tcnt == 1) {
 | 
					  if(++tcnt == 1) {
 | 
				
			||||||
    if(radio.afsk.encoder.isSending()) {
 | 
					    if(radio.afsk.encoder.isSending()) {
 | 
				
			||||||
| 
						 | 
					@ -120,7 +134,7 @@ ISR(ADC_vect) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    tcnt = 0;
 | 
					    tcnt = 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  PORTD &= ~(_BV(2)); // Pin D2 off again
 | 
					  //PORTD &= ~(_BV(2)); // Pin D2 off again
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,19 +4,33 @@
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DON(p) PORTD |= _BV((p))
 | 
					#define DON(p) PORTD |= _BV((p))
 | 
				
			||||||
#define DOFF(p) PORTD &= ~(_BV((p)))
 | 
					#define DOFF(p) PORTD &= ~(_BV((p)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(4, OUTPUT);
 | 
					  pinMode(4, OUTPUT);
 | 
				
			||||||
  pinMode(5, OUTPUT);
 | 
					  pinMode(5, OUTPUT);
 | 
				
			||||||
  pinMode(6, OUTPUT);
 | 
					  pinMode(6, OUTPUT);
 | 
				
			||||||
  pinMode(7, OUTPUT);
 | 
					  pinMode(7, OUTPUT);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					    // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on pwr to the radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.println(F("Radio test connection"));
 | 
					  Serial.println(F("Radio test connection"));
 | 
				
			||||||
  Serial.println(radio.testConnection(), DEC);
 | 
					  Serial.println(radio.testConnection(), DEC);
 | 
				
			||||||
  Serial.println(F("Initialize"));
 | 
					  Serial.println(F("Initialize"));
 | 
				
			||||||
| 
						 | 
					@ -24,14 +38,12 @@ void setup() {
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  Serial.println(F("Frequency"));
 | 
					  Serial.println(F("Frequency"));
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  radio.setVHF();
 | 
					 | 
				
			||||||
  radio.frequency(145010);
 | 
					  radio.frequency(145010);
 | 
				
			||||||
  //radio.setRfPower(0);
 | 
					  //radio.setRfPower(0);
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  radio.afsk.start(&dds);
 | 
					  radio.afsk.start(&dds);
 | 
				
			||||||
  pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
 | 
					 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  dds.setFrequency(0);
 | 
					  dds.setFrequency(0);
 | 
				
			||||||
  dds.on();
 | 
					  dds.on();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,24 +1,35 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  Serial.println(F("Radio test connection"));
 | 
					  Serial.println(F("Radio test connection"));
 | 
				
			||||||
  Serial.println(radio.testConnection(), DEC);
 | 
					  Serial.println(radio.testConnection(), DEC);
 | 
				
			||||||
  Serial.println(F("Initialize"));
 | 
					  Serial.println(F("Initialize"));
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.frequency(145010);
 | 
					  radio.frequency(145010);
 | 
				
			||||||
  radio.setVHF();
 | 
					 | 
				
			||||||
  radio.setSQOff();
 | 
					  radio.setSQOff();
 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x30, 0x06);
 | 
					 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x30, 0x26);
 | 
					 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x44, 0b11111111);
 | 
					  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x44, 0b11111111);
 | 
				
			||||||
  Serial.println(F("Frequency"));
 | 
					  Serial.println(F("Frequency"));
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
| 
						 | 
					@ -36,7 +47,6 @@ void setup() {
 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  radio.afsk.start(&dds);
 | 
					  radio.afsk.start(&dds);
 | 
				
			||||||
  Serial.println(F("Starting..."));
 | 
					  Serial.println(F("Starting..."));
 | 
				
			||||||
  pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
 | 
					 | 
				
			||||||
  delay(100);
 | 
					  delay(100);
 | 
				
			||||||
  dds.setAmplitude(255);
 | 
					  dds.setAmplitude(255);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -57,11 +67,12 @@ void loop() {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//TODO: d2 is the switch input, so remove this
 | 
				
			||||||
ISR(ADC_vect) {
 | 
					ISR(ADC_vect) {
 | 
				
			||||||
  static uint8_t tcnt = 0;
 | 
					  static uint8_t tcnt = 0;
 | 
				
			||||||
  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
					  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
				
			||||||
  PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
					  //PORTD |= _BV(2); // Diagnostic pin (D2)
 | 
				
			||||||
  //dds.clockTick();
 | 
					  //dds.clockTick();
 | 
				
			||||||
  radio.afsk.timer();
 | 
					  radio.afsk.timer();
 | 
				
			||||||
  PORTD &= ~(_BV(2)); // Pin D2 off again
 | 
					  //PORTD &= ~(_BV(2)); // Pin D2 off again
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,21 +5,32 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setVHF();
 | 
					 | 
				
			||||||
  radio.setRfPower(0);
 | 
					  radio.setRfPower(0);
 | 
				
			||||||
  radio.setFrequency(145050);
 | 
					  radio.setFrequency(145050);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(11, INPUT);
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  dds.setFrequency(1200);
 | 
					  dds.setFrequency(1200);
 | 
				
			||||||
  dds.on();
 | 
					  dds.on();
 | 
				
			||||||
| 
						 | 
					@ -236,7 +247,7 @@ ISR(ADC_vect) {
 | 
				
			||||||
  static uint8_t lastADC = 127;
 | 
					  static uint8_t lastADC = 127;
 | 
				
			||||||
  cli();
 | 
					  cli();
 | 
				
			||||||
  TIFR1 = _BV(ICF1);
 | 
					  TIFR1 = _BV(ICF1);
 | 
				
			||||||
  PORTD |= _BV(2);
 | 
					  //PORTD |= _BV(2);
 | 
				
			||||||
  dds.clockTick();
 | 
					  dds.clockTick();
 | 
				
			||||||
  sei();
 | 
					  sei();
 | 
				
			||||||
  if(listening) {
 | 
					  if(listening) {
 | 
				
			||||||
| 
						 | 
					@ -255,5 +266,5 @@ ISR(ADC_vect) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    lastADC = ADCH;
 | 
					    lastADC = ADCH;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  PORTD &= ~_BV(2);
 | 
					  //PORTD &= ~_BV(2);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,18 +2,31 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  // turn on radio
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setRfPower(0);
 | 
					  radio.setRfPower(0);
 | 
				
			||||||
  radio.setVHF();
 | 
					 | 
				
			||||||
  radio.setFrequency(145060);
 | 
					  radio.setFrequency(145060);
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(11, INPUT);
 | 
					 | 
				
			||||||
  radio.setModeTransmit();
 | 
					  radio.setModeTransmit();
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  dds.playWait(600, 3000);
 | 
					  dds.playWait(600, 3000);
 | 
				
			||||||
| 
						 | 
					@ -37,10 +50,10 @@ ISR(ADC_vect) {
 | 
				
			||||||
  static unsigned char tcnt = 0;
 | 
					  static unsigned char tcnt = 0;
 | 
				
			||||||
  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
					  TIFR1 = _BV(ICF1); // Clear the timer flag
 | 
				
			||||||
  if(++tcnt == 4) {
 | 
					  if(++tcnt == 4) {
 | 
				
			||||||
    digitalWrite(2, HIGH);
 | 
					    //digitalWrite(2, HIGH);
 | 
				
			||||||
    tcnt = 0;
 | 
					    tcnt = 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  dds.clockTick();
 | 
					  dds.clockTick();
 | 
				
			||||||
  digitalWrite(2, LOW);
 | 
					  //digitalWrite(2, LOW);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,11 +9,26 @@ Beacon will check to see if the channel is clear before it will transmit.
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create a new instance of our HamSheild class, called 'radio'
 | 
					// Create a new instance of our HamSheild class, called 'radio'
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Run our start up things here
 | 
					// Run our start up things here
 | 
				
			||||||
void setup() { 
 | 
					void setup() { 
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  // Set up the serial port at 9600 Baud
 | 
					  // Set up the serial port at 9600 Baud
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
| 
						 | 
					@ -30,10 +45,9 @@ void setup() {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Tell the HamShield to start up
 | 
					  // Tell the HamShield to start up
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setRfPower(15);
 | 
					  radio.setRfPower(8);
 | 
				
			||||||
  // Configure the HamShield to transmit and recieve on 446.000MHz
 | 
					  // Configure the HamShield to transmit and recieve on 446.000MHz
 | 
				
			||||||
  radio.frequency(145570);
 | 
					  radio.frequency(145570);
 | 
				
			||||||
  pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  Serial.println("Radio Configured.");
 | 
					  Serial.println("Radio Configured.");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,10 @@
 | 
				
			||||||
#include <HAMShield.h>
 | 
					#include <HAMShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// transmit for 1 minute, every 10 minutes 
 | 
					// transmit for 1 minute, every 10 minutes 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TRANSMITLENGTH 1
 | 
					#define TRANSMITLENGTH 1
 | 
				
			||||||
| 
						 | 
					@ -11,7 +15,18 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HAMShield radio;
 | 
					HAMShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setFrequency(145510);
 | 
					  radio.setFrequency(145510);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,9 +3,24 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
 | 
					  Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,10 @@ Simple gauges for the radio receiver.
 | 
				
			||||||
#include <HAMShield.h>
 | 
					#include <HAMShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HAMShield radio;
 | 
					HAMShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void clr() { 
 | 
					void clr() { 
 | 
				
			||||||
| 
						 | 
					@ -19,7 +23,18 @@ void clr() {
 | 
				
			||||||
  Serial.print("[H");     // cursor to home command 
 | 
					  Serial.print("[H");     // cursor to home command 
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  analogReference(DEFAULT);
 | 
					  analogReference(DEFAULT);
 | 
				
			||||||
  Serial.begin(115200);
 | 
					  Serial.begin(115200);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,13 +5,28 @@
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
#include <SPI.h>
 | 
					#include <SPI.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HAMShield radio;
 | 
					HAMShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Robot.begin();
 | 
					  Robot.begin();
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setFrequency(145510);
 | 
					  radio.frequency(145510);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void loop() {
 | 
					void loop() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,11 +6,16 @@ Arduino audio overlay example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <HAMShield.h>
 | 
					#include <HAMShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DOT 100
 | 
					#define DOT 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HAMShield radio;
 | 
					HAMShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *bascii = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,?'!/()&:;=+-_\"$@",
 | 
					const char *bascii = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,?'!/()&:;=+-_\"$@",
 | 
				
			||||||
| 
						 | 
					@ -21,7 +26,18 @@ const char *callsign = {"1ZZ9ZZ/B"} ;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
char morsebuffer[8];  
 | 
					char morsebuffer[8];  
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					// NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Serial.println("starting up..");
 | 
					  Serial.println("starting up..");
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
| 
						 | 
					@ -29,7 +45,7 @@ void setup() {
 | 
				
			||||||
  int result = radio.testConnection();
 | 
					  int result = radio.testConnection();
 | 
				
			||||||
  Serial.println(result,DEC);
 | 
					  Serial.println(result,DEC);
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setFrequency(446000);
 | 
					  radio.frequency(446000);
 | 
				
			||||||
  radio.setVolume1(0xF);
 | 
					  radio.setVolume1(0xF);
 | 
				
			||||||
  radio.setVolume2(0xF);
 | 
					  radio.setVolume2(0xF);
 | 
				
			||||||
  radio.setModeReceive();
 | 
					  radio.setModeReceive();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,9 +3,24 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
 | 
					  Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,20 +6,35 @@ HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
KISS kiss(&Serial, &radio, &dds);
 | 
					KISS kiss(&Serial, &radio, &dds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//TODO: move these into library
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
  pinMode(11, INPUT);
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, LOW);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  while (digitalRead(SWITCH_PIN));
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // let the AU ot of reset
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setVHF();
 | 
					 | 
				
			||||||
  radio.setSQOff();
 | 
					  radio.setSQOff();
 | 
				
			||||||
  radio.setFrequency(145010);
 | 
					  radio.setFrequency(144390);
 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x30, 0x06);
 | 
					  //I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x44, 0x05FF);
 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x30, 0x26);
 | 
					 | 
				
			||||||
  I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x44, 0x05FF);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
  radio.afsk.start(&dds);
 | 
					  radio.afsk.start(&dds);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,25 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include "varicode.h"
 | 
					#include "varicode.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  pinMode(11, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  // put your setup code here, to run once:
 | 
					  // put your setup code here, to run once:
 | 
				
			||||||
  dds.setReferenceClock(32000);
 | 
					  dds.setReferenceClock(32000);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
| 
						 | 
					@ -65,7 +77,7 @@ ISR(ADC_vect) {
 | 
				
			||||||
  if(tcnt > (255-81))
 | 
					  if(tcnt > (255-81))
 | 
				
			||||||
    dds.setAmplitude(amplitudeShape[(tcnt-174)/2]);
 | 
					    dds.setAmplitude(amplitudeShape[(tcnt-174)/2]);
 | 
				
			||||||
  dds.clockTick();
 | 
					  dds.clockTick();
 | 
				
			||||||
  PORTD &= ~_BV(2);
 | 
					  //PORTD &= ~_BV(2);
 | 
				
			||||||
  if(outer++ == 3) {
 | 
					  if(outer++ == 3) {
 | 
				
			||||||
    outer = 0;
 | 
					    outer = 0;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
| 
						 | 
					@ -89,5 +101,5 @@ ISR(ADC_vect) {
 | 
				
			||||||
      dds.changePhaseDeg(+180);
 | 
					      dds.changePhaseDeg(+180);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  PORTD &= ~_BV(2);
 | 
					  //PORTD &= ~_BV(2);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,10 @@ A bit robotic and weird
 | 
				
			||||||
#include <HAMShield.h>
 | 
					#include <HAMShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define RATE 500
 | 
					#define RATE 500
 | 
				
			||||||
#define SIZE 1500
 | 
					#define SIZE 1500
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +25,17 @@ int16_t rssi;
 | 
				
			||||||
byte mode = 8;
 | 
					byte mode = 8;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() { 
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  // int result = radio.testConnection();
 | 
					  // int result = radio.testConnection();
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,26 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include "varicode.h"
 | 
					#include "varicode.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  pinMode(11, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  // put your setup code here, to run once:
 | 
					  // put your setup code here, to run once:
 | 
				
			||||||
  dds.setReferenceClock(32000);
 | 
					  dds.setReferenceClock(32000);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,10 @@ Sends an SSTV test pattern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DOT 100
 | 
					#define DOT 100
 | 
				
			||||||
#define CALLSIGN "1ZZ9ZZ/B"
 | 
					#define CALLSIGN "1ZZ9ZZ/B"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,14 +21,25 @@ int16_t rssi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* get our radio ready */
 | 
					/* get our radio ready */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Serial.print("Radio status: ");
 | 
					  Serial.print("Radio status: ");
 | 
				
			||||||
  int result = radio.testConnection();
 | 
					  int result = radio.testConnection();
 | 
				
			||||||
  Serial.println(result);
 | 
					  Serial.println(result);
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setFrequency(446000);
 | 
					  radio.frequency(446000);
 | 
				
			||||||
  radio.setModeReceive();
 | 
					  radio.setModeReceive();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,10 @@
 | 
				
			||||||
#include <HamShield.h>
 | 
					#include <HamShield.h>
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HamShield radio;
 | 
					HamShield radio;
 | 
				
			||||||
DDS dds;
 | 
					DDS dds;
 | 
				
			||||||
// Defined at the end of the sketch
 | 
					// Defined at the end of the sketch
 | 
				
			||||||
| 
						 | 
					@ -15,6 +19,17 @@ extern const uint16_t image[256*20] PROGMEM;
 | 
				
			||||||
ddsAccumulator_t freqTable[3];
 | 
					ddsAccumulator_t freqTable[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
    // Query the HamShield for status information
 | 
					    // Query the HamShield for status information
 | 
				
			||||||
| 
						 | 
					@ -26,11 +41,7 @@ void setup() {
 | 
				
			||||||
  // Tell the HamShield to start up
 | 
					  // Tell the HamShield to start up
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setRfPower(0);
 | 
					  radio.setRfPower(0);
 | 
				
			||||||
  radio.setVHF();
 | 
					  radio.frequency(145500);
 | 
				
			||||||
  radio.setFrequency(145500);
 | 
					 | 
				
			||||||
  pinMode(2, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(3, OUTPUT);
 | 
					 | 
				
			||||||
  pinMode(11, INPUT); // HiZ
 | 
					 | 
				
			||||||
  // put your setup code here, to run once:
 | 
					  // put your setup code here, to run once:
 | 
				
			||||||
  //dds.setReferenceClock(34965/4);
 | 
					  //dds.setReferenceClock(34965/4);
 | 
				
			||||||
  dds.start();
 | 
					  dds.start();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,10 @@ Debug Msg    @<text>;   32 character debug message
 | 
				
			||||||
#include "Wire.h"
 | 
					#include "Wire.h"
 | 
				
			||||||
#include "HamShield.h"
 | 
					#include "HamShield.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int state;
 | 
					int state;
 | 
				
			||||||
int txcount = 0;
 | 
					int txcount = 0;
 | 
				
			||||||
long timer = 0;
 | 
					long timer = 0;
 | 
				
			||||||
| 
						 | 
					@ -68,6 +72,17 @@ HamShield radio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Serial.begin(115200);
 | 
					  Serial.begin(115200);
 | 
				
			||||||
  Serial.print(";;;;;;;;;;;;;;;;;;;;;;;;;;");
 | 
					  Serial.print(";;;;;;;;;;;;;;;;;;;;;;;;;;");
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,10 @@ Plays back the current signal strength level and morses out it's call sign at th
 | 
				
			||||||
#include <Wire.h>
 | 
					#include <Wire.h>
 | 
				
			||||||
#include <PCM.h>
 | 
					#include <PCM.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PWM_PIN 3
 | 
				
			||||||
 | 
					#define RESET_PIN A3
 | 
				
			||||||
 | 
					#define SWITCH_PIN 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HAMShield radio;
 | 
					HAMShield radio;
 | 
				
			||||||
int16_t rssi;
 | 
					int16_t rssi;
 | 
				
			||||||
int peak = -150;
 | 
					int peak = -150;
 | 
				
			||||||
| 
						 | 
					@ -73,14 +77,25 @@ const unsigned char dbm[] PROGMEM = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* get our radio ready */
 | 
					/* get our radio ready */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() { 
 | 
					void setup() {
 | 
				
			||||||
 | 
					  // NOTE: if not using PWM out, it should be held low to avoid tx noise
 | 
				
			||||||
 | 
					  pinMode(PWM_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(PWM_PIN, LOW);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // prep the switch
 | 
				
			||||||
 | 
					  pinMode(SWITCH_PIN, INPUT_PULLUP);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // set up the reset control pin
 | 
				
			||||||
 | 
					  pinMode(RESET_PIN, OUTPUT);
 | 
				
			||||||
 | 
					  digitalWrite(RESET_PIN, HIGH);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  Wire.begin();
 | 
					  Wire.begin();
 | 
				
			||||||
  Serial.begin(9600);
 | 
					  Serial.begin(9600);
 | 
				
			||||||
  Serial.print("Radio status: ");
 | 
					  Serial.print("Radio status: ");
 | 
				
			||||||
  int result = radio.testConnection();
 | 
					  int result = radio.testConnection();
 | 
				
			||||||
  Serial.println(result);
 | 
					  Serial.println(result);
 | 
				
			||||||
  radio.initialize();
 | 
					  radio.initialize();
 | 
				
			||||||
  radio.setFrequency(446000);
 | 
					  radio.frequency(446000);
 | 
				
			||||||
  radio.setVolume1(0xF);
 | 
					  radio.setVolume1(0xF);
 | 
				
			||||||
  radio.setVolume2(0xF);
 | 
					  radio.setVolume2(0xF);
 | 
				
			||||||
  radio.setModeReceive();
 | 
					  radio.setModeReceive();
 | 
				
			||||||
| 
						 | 
					@ -104,7 +119,7 @@ void loop() {
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
   if(rssi < -120) { 
 | 
					   if(rssi < -120) { 
 | 
				
			||||||
     Serial.println("Transmit On");
 | 
					     Serial.println("Transmit On");
 | 
				
			||||||
     radio.setTX(1);
 | 
					     radio.setModeTransmit();
 | 
				
			||||||
     delay(250);
 | 
					     delay(250);
 | 
				
			||||||
     tone(11,1000,500); 
 | 
					     tone(11,1000,500); 
 | 
				
			||||||
     delay(1000);
 | 
					     delay(1000);
 | 
				
			||||||
| 
						 | 
					@ -131,9 +146,8 @@ void loop() {
 | 
				
			||||||
     delay(1000);
 | 
					     delay(1000);
 | 
				
			||||||
     Serial.println("done!");
 | 
					     Serial.println("done!");
 | 
				
			||||||
     radio.morseOut(CALLSIGN);
 | 
					     radio.morseOut(CALLSIGN);
 | 
				
			||||||
     radio.setTX(0);
 | 
					 | 
				
			||||||
     Serial.println("Transmit off");
 | 
					 | 
				
			||||||
     radio.setModeReceive();
 | 
					     radio.setModeReceive();
 | 
				
			||||||
 | 
					     Serial.println("Transmit off");
 | 
				
			||||||
     delay(1000);
 | 
					     delay(1000);
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue