From c6372acb382783abce5d302d0f7bb310982c7fb5 Mon Sep 17 00:00:00 2001 From: Bernhard Tittelbach Date: Fri, 22 Jun 2012 00:25:06 +0000 Subject: lufa works git-svn-id: https://svn.spreadspace.org/mur.sat@546 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/hhd70dongle/Makefile | 2 +- software/hhd70dongle/c1101lib.c | 16 ++++++----- software/hhd70dongle/hhd70dongle.c | 54 +++++++++++++++++++++++++------------- 3 files changed, 47 insertions(+), 25 deletions(-) (limited to 'software/hhd70dongle') 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 +#include #include //#include +#include +//#include #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< 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(); } -- cgit v1.2.3