summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--software/hhd70dongle/Makefile2
-rw-r--r--software/hhd70dongle/c1101lib.c16
-rw-r--r--software/hhd70dongle/hhd70dongle.c54
3 files changed, 47 insertions, 25 deletions
diff --git a/software/hhd70dongle/Makefile b/software/hhd70dongle/Makefile
index b481287..46f27a2 100644
--- a/software/hhd70dongle/Makefile
+++ b/software/hhd70dongle/Makefile
@@ -24,7 +24,7 @@ NAME := hhd70dongle
BOARD_TYPE := hhd70dongle
OBJ := $(NAME).o hhd70.o c1101lib.o util.o
LIBS := led lufa-descriptor-usbserial
-RESET_FUNC := ../../tools/atmega324u_usbhid/reset
+#RESET_FUNC := ../../tools/atmega324u_usbhid/reset
EXTERNAL_LIBS := lufa
diff --git a/software/hhd70dongle/c1101lib.c b/software/hhd70dongle/c1101lib.c
index 47a446a..b0eed03 100644
--- a/software/hhd70dongle/c1101lib.c
+++ b/software/hhd70dongle/c1101lib.c
@@ -140,11 +140,12 @@ void c1101_spi_dump_registers_to_usb(void)
hhd70_c1101_wait_chip_rdy();
if (c1101_spi_write_byte_ok_get_status(0xC0) < 0)
return;
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"dump all 46 registers:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"dump all 46 registers:\r\n");
for (c=0; c<47; c++)
{
debug_sprint_int16hex(debug_sb, hhd70_spi_read_byte());
CDC_Device_SendString(&VirtualSerial_CDC_Interface, debug_sb);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "\r\n");
}
hhd70_spi_cs_disable();
}
@@ -317,13 +318,13 @@ void c1101_handleStatusByte(char sb)
if (SPIC1101_SB_RXFIFO_OVERFLOW(sb))
{
c1101_spi_strobe_command(SPIC1101_ADDR_SFRX);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX fifo flushed");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX fifo flushed\r\n");
}
//on TXFifo Overflow, Flush TX Fifo
if (SPIC1101_SB_TXFIFO_OVERFLOW(sb))
{
c1101_spi_strobe_command(SPIC1101_ADDR_SFTX);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX fifo flushed");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX fifo flushed\r\n");
}
}
@@ -336,9 +337,10 @@ char c1101_getStatus(void)
hhd70_spi_cs_disable();
//debug start
char debug_sb[6];
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 status:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 status:\r\n");
debug_sprint_int16hex(debug_sb, sb);
CDC_Device_SendString(&VirtualSerial_CDC_Interface,debug_sb);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
//debug end
c1101_handleStatusByte(sb);
return sb;
@@ -351,9 +353,10 @@ char c1101_getMARCState(void)
sb &= 0x1F;
//debug start
char debug_sb[6];
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 MARCSate:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 MARCSate:\r\n");
debug_sprint_int16hex(debug_sb, sb);
CDC_Device_SendString(&VirtualSerial_CDC_Interface,debug_sb);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
//debug end
return sb;
}
@@ -463,8 +466,9 @@ void c1101_recieveData(void)
num_leave_in_fifo = (recv_data[0] - num_recv_total < 64)? 0 : 1;
} while (num_recv > 0);
recv_data[num_recv_total]=0;
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: Data Recieved:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: Data Recieved: ");
CDC_Device_SendString(&VirtualSerial_CDC_Interface,recv_data);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
c1101_getStatus(); // get status and handle possiblble RX Fifo Overflow
}
diff --git a/software/hhd70dongle/hhd70dongle.c b/software/hhd70dongle/hhd70dongle.c
index 3f7f344..4e5560d 100644
--- a/software/hhd70dongle/hhd70dongle.c
+++ b/software/hhd70dongle/hhd70dongle.c
@@ -30,8 +30,11 @@
*
*/
#include <avr/io.h>
+#include <avr/wdt.h>
#include <util/delay.h>
//#include <avr/stdio.h>
+#include <avr/interrupt.h>
+//#include <avr/power.h>
#include "led.h"
#include "util.h"
@@ -109,47 +112,60 @@ void EVENT_USB_Device_ControlRequest(void)
int main(void)
{
- CPU_PRESCALE(0);
+ MCUSR &= ~(1 << WDRF);
+ wdt_disable(); // FIXME: disable WatchDog for now, but use it later...
+ CPU_PRESCALE(0); //cpu_init
+
led_init();
- hhd70_init();
USB_Init();
+ hhd70_init();
DDRB &= ~(1<<DDB5); // set PB5/ADC12 to INPUT (c1101 temp sensor)
+ sei(); //set enable global interrupt
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"hhd70dongle ready");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"hhd70dongle ready\r\n");
_delay_ms(500);
c1101_init();
hhd70_palna_rxmode();
for(;;)
{
+ int16_t num_bytes_received = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
+ while(num_bytes_received > 0)
+ {
+ int16_t recv_byte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
+ num_bytes_received--;
+ if (recv_byte >= 0 && (char) recv_byte == 'r')
+ {
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface, "resetting\r\n");
+ reset();
+ }
+ }
+
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
- USB_USBTask();
-
+ USB_USBTask();
+
c1101_spi_strobe_command(SPIC1101_ADDR_SRX); // enter RX - Mode
_delay_ms(1000);
- /*
- usb_rawhid_recv(read_buffer,20);
- if (read_buffer[0] == 'r')
- reset();
- */
+
if (hhd70_rx_data_available() == 1)
{
led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"RX: GDO2 pin HIGH\r\n");
CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:");
debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
c1101_recieveData();
led_off();
}
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rssi:\r\n");
debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RSSI));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 tx bytes:\r\n");
debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_TXBYTES));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"c1101 rx bytes:\r\n");
debug_sprint_int16hex(write_buffer, c1101_spi_read_register(SPIC1101_ADDR_RXBYTES));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer);
c1101_spi_dump_registers_to_usb();
@@ -161,22 +177,24 @@ int main(void)
write_buffer[5]=':';
adc_on();
_delay_ms(250);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp c1101: ");
debug_sprint_int16hex(write_buffer+6, c1101_measureTemp());
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+6);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
_delay_ms(250);
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp atmega:");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"temp atmega: ");
debug_sprint_int16hex(write_buffer+10, adc_read(ADCMUX_ADC12));
CDC_Device_SendString(&VirtualSerial_CDC_Interface,write_buffer+10);
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"\r\n");
adc_off();
_delay_ms(250);
led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: String");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: String\r\n");
c1101_transmitData("OE6EOF test mur.sat GFSK r:9k6 fdev:3mhz 1234567890123456789012345678901234567890 End of Test",93);
led_off();
_delay_ms(100);
led_on();
- CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps");
+ CDC_Device_SendString(&VirtualSerial_CDC_Interface,"TX Data: Temps\r\n");
c1101_transmitData((char*) write_buffer,14);
led_off();
}