First round of AX25 receiver.
This commit is contained in:
		
							parent
							
								
									1f81215577
								
							
						
					
					
						commit
						4fb55520ea
					
				| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					#define DDS_REFCLK_DEFAULT 9600
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <HamShield.h>
 | 
				
			||||||
 | 
					#include <Wire.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HamShield radio;
 | 
				
			||||||
 | 
					DDS dds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void setup() {
 | 
				
			||||||
 | 
					  Serial.begin(9600);
 | 
				
			||||||
 | 
					  Wire.begin();
 | 
				
			||||||
 | 
					  pinMode(2, OUTPUT);
 | 
				
			||||||
 | 
					  pinMode(3, OUTPUT);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  Serial.println(F("Radio test connection"));
 | 
				
			||||||
 | 
					  Serial.println(radio.testConnection(), DEC);
 | 
				
			||||||
 | 
					  Serial.println(F("Initialize"));
 | 
				
			||||||
 | 
					  delay(100);
 | 
				
			||||||
 | 
					  radio.initialize();
 | 
				
			||||||
 | 
					  Serial.println(F("Frequency"));
 | 
				
			||||||
 | 
					  delay(100);
 | 
				
			||||||
 | 
					//  radio.setVHF();
 | 
				
			||||||
 | 
					//  radio.setRfPower(0);
 | 
				
			||||||
 | 
					//  radio.setModeReceive();
 | 
				
			||||||
 | 
					  radio.setVolume1(0xFF);
 | 
				
			||||||
 | 
					  radio.setVolume2(0xFF);
 | 
				
			||||||
 | 
					  radio.frequency(145050);
 | 
				
			||||||
 | 
					  Serial.println(F("DDS Start"));
 | 
				
			||||||
 | 
					  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.setAmplitude(255);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t last = 0;
 | 
				
			||||||
 | 
					void loop() {
 | 
				
			||||||
 | 
					   if(radio.afsk.decoder.read() || radio.afsk.rxPacketCount()) {
 | 
				
			||||||
 | 
					      // A true return means something was put onto the packet FIFO
 | 
				
			||||||
 | 
					      Serial.println("Packet");
 | 
				
			||||||
 | 
					      // If we actually have data packets in the buffer, process them all now
 | 
				
			||||||
 | 
					      while(radio.afsk.rxPacketCount()) {
 | 
				
			||||||
 | 
					        AFSK::Packet *packet = radio.afsk.getRXPacket();
 | 
				
			||||||
 | 
					        if(packet) {
 | 
				
			||||||
 | 
					          for(unsigned short i = 0; i < packet->len; ++i)
 | 
				
			||||||
 | 
					            Serial.write((uint8_t)packet->getByte());
 | 
				
			||||||
 | 
					          AFSK::PacketBuffer::freePacket(packet);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /*if(last < millis()) {
 | 
				
			||||||
 | 
					      Serial.println(radio.readRSSI());
 | 
				
			||||||
 | 
					      last = millis()+1000;
 | 
				
			||||||
 | 
					    }*/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*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();
 | 
				
			||||||
 | 
					  PORTD &= ~(_BV(2)); // Pin D2 off again
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue