diff --git a/examples/AFSKSend/AFSKSend.ino b/examples/AFSKSend/AFSKSend.ino index 063c0cb..fbc9f99 100644 --- a/examples/AFSKSend/AFSKSend.ino +++ b/examples/AFSKSend/AFSKSend.ino @@ -1,17 +1,22 @@ -#define DDS_REFCLK_DEFAULT 9600 - #include #include HamShield radio; DDS dds; +#define DON(p) PORTD |= _BV((p)) +#define DOFF(p) PORTD &= ~(_BV((p))) + void setup() { Serial.begin(9600); Wire.begin(); pinMode(2, OUTPUT); pinMode(3, OUTPUT); - + pinMode(4, OUTPUT); + pinMode(5, OUTPUT); + pinMode(6, OUTPUT); + pinMode(7, OUTPUT); + Serial.println(F("Radio test connection")); Serial.println(radio.testConnection(), DEC); Serial.println(F("Initialize")); @@ -20,21 +25,24 @@ void setup() { Serial.println(F("Frequency")); delay(100); radio.setVHF(); - radio.frequency(145050); - radio.setRfPower(0); - Serial.println(F("DDS Start")); + radio.frequency(145010); + //radio.setRfPower(0); delay(100); dds.start(); - Serial.println(F("AFSK start")); delay(100); radio.afsk.start(&dds); - Serial.println(F("Starting...")); pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11 delay(100); + dds.setFrequency(0); + dds.on(); + dds.setAmplitude(255); + I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x44, 0b0000011111111111); + //I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x53, 0x0); + //I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x32, 0xffff); } void loop() { - // put your main code here, to run repeatedly: + DON(6); AFSK::Packet *packet = AFSK::PacketBuffer::makePacket(22 + 32); packet->start(); packet->appendCallsign("VE6SLP",0); @@ -42,7 +50,8 @@ void loop() { packet->appendFCS(0x03); packet->appendFCS(0xf0); packet->print(F("Hello ")); - packet->println(millis()); + packet->print(millis()); + packet->println(F("\r\nThis is a test of the HamShield Kickstarter prototype. de VE6SLP")); packet->finish(); bool ret = radio.afsk.putTXPacket(packet); @@ -50,10 +59,10 @@ void loop() { if(radio.afsk.txReady()) { Serial.println(F("txReady")); radio.setModeTransmit(); - //delay(100); if(radio.afsk.txStart()) { Serial.println(F("txStart")); } else { + Serial.println(F("Tx Start failure")); radio.setModeReceive(); } } @@ -61,37 +70,25 @@ void loop() { Serial.println("tick"); // Wait up to 2.5 seconds to finish sending, and stop transmitter. // TODO: This is hackery. + DOFF(6); for(int i = 0; i < 500; i++) { if(radio.afsk.encoder.isDone()) break; delay(50); + Serial.println("Not done"); } Serial.println("Done sending"); + delay(100); radio.setModeReceive(); - delay(30000); + delay(2000); } -/*ISR(TIMER2_OVF_vect) { - TIFR2 = _BV(TOV2); - static uint8_t tcnt = 0; - if(++tcnt == 8) { - digitalWrite(2, HIGH); - dds.clockTick(); - digitalWrite(2, LOW); - tcnt = 0; - } -}*/ ISR(ADC_vect) { - static uint8_t tcnt = 0; TIFR1 = _BV(ICF1); // Clear the timer flag - PORTD |= _BV(2); // Diagnostic pin (D2) + DON(4); dds.clockTick(); - if(++tcnt == 1) { - if(radio.afsk.encoder.isSending()) { - radio.afsk.timer(); - } - tcnt = 0; - } - PORTD &= ~(_BV(2)); // Pin D2 off again + DON(5); + radio.afsk.timer(); + DOFF(5); + DOFF(4); } - diff --git a/examples/AX25Receive/AX25Receive.ino b/examples/AX25Receive/AX25Receive.ino index c16576d..cbc6671 100644 --- a/examples/AX25Receive/AX25Receive.ino +++ b/examples/AX25Receive/AX25Receive.ino @@ -1,31 +1,20 @@ -#define DDS_REFCLK_DEFAULT 9600 - #include #include -//#include - -//LiquidCrystal_I2C lcd(0x27,16,2); HamShield radio; DDS dds; -volatile uint8_t adcMax=0, adcMin=255; void setup() { Serial.begin(9600); Wire.begin(); pinMode(2, OUTPUT); pinMode(3, OUTPUT); - /*lcd.init(); - lcd.setCursor(0,0); - lcd.print(F("RSSI:")); - lcd.setCursor(0,1); - lcd.print(F("ADC:"));*/ Serial.println(F("Radio test connection")); Serial.println(radio.testConnection(), DEC); Serial.println(F("Initialize")); delay(100); radio.initialize(); - radio.frequency(144390); + radio.frequency(145010); radio.setVHF(); radio.setSQOff(); I2Cdev::writeWord(A1846S_DEV_ADDR_SENLOW, 0x30, 0x06); @@ -50,7 +39,6 @@ void setup() { pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11 delay(100); dds.setAmplitude(255); - //lcd.backlight(); } uint32_t last = 0; @@ -62,51 +50,18 @@ void loop() { AFSK::Packet *packet = radio.afsk.getRXPacket(); Serial.print(F("Packet: ")); if(packet) { - packet->print(&Serial); + packet->printPacket(&Serial); AFSK::PacketBuffer::freePacket(packet); } } - Serial.println(""); } -/* if(last < millis()) { - uint16_t buf; - lcd.setCursor(6,0); - lcd.print(radio.readRSSI()); - lcd.print(F(" ")); - lcd.setCursor(6,1); - lcd.print(adcMax); - lcd.print(F(" / ")); - lcd.print(adcMin); - lcd.print(F(" ")); - lcd.setCursor(11,0); - lcd.print(radio.afsk.decoder.isReceiving()); - adcMin=255; adcMax=0; - last = millis()+100; - }*/ } -/*ISR(TIMER2_OVF_vect) { - TIFR2 = _BV(TOV2); - static uint8_t tcnt = 0; - if(++tcnt == 8) { - digitalWrite(2, HIGH); - dds.clockTick(); - digitalWrite(2, LOW); - tcnt = 0; - } -}*/ ISR(ADC_vect) { static uint8_t tcnt = 0; TIFR1 = _BV(ICF1); // Clear the timer flag PORTD |= _BV(2); // Diagnostic pin (D2) //dds.clockTick(); radio.afsk.timer(); - if(ADCH>adcMax) { - adcMax = ADCH; - } - if(ADCH