From 14d0743d8be9c09b33a7e21a625d3465b229c1fc Mon Sep 17 00:00:00 2001 From: Matthias Merz Date: Sat, 11 Dec 2010 00:38:05 +0100 Subject: [PATCH 1/2] spi.c fix output of warning for wrong baudrate * do crude cpp-calculation for case when we want to warn --- firmware/shared/spi.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/firmware/shared/spi.c b/firmware/shared/spi.c index ca39c0b..e2dc977 100644 --- a/firmware/shared/spi.c +++ b/firmware/shared/spi.c @@ -45,9 +45,18 @@ void spi_init(){ return d-1; // the -1 because minimum divisor is /2 } + /* do pseudo-calculation in preprocessor, to get warnings + * we right-shift 8 times; if result >0, d will be >7 + * so output warning in that case + */ +#define D_VAL (F_CPU / SPI_BAUDRATE) +#if ((D_VAL >> 8) > 0 ) +#warning "spi baudrate too slow, cannot be set" +#endif + d = spi_clock_divisor(); if(d>7){ - #warning "spi baudrate too slow, cannot be set" + // warning was (hopefully) output previously by cpp d=7; } From 7e9ad1e109910403ceea74d1c99d268680bd902d Mon Sep 17 00:00:00 2001 From: Dario Ernst Date: Sat, 11 Dec 2010 01:07:17 +0100 Subject: [PATCH 2/2] maybe fixed usb --- cmdline/read-temp.c | 56 +++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/cmdline/read-temp.c b/cmdline/read-temp.c index 93bc4ad..fb81b3a 100644 --- a/cmdline/read-temp.c +++ b/cmdline/read-temp.c @@ -24,7 +24,7 @@ respectively. #include /* this is libusb */ #include "opendevice.h" /* common code moved to separate module */ -#include "../firmware/usbdrv/usbconfig.h" /* device's VID/PID and names */ +#include "../firmware/masterchip/usbdrv/usbconfig.h" /* device's VID/PID and names */ int main(int argc, char **argv) { @@ -67,25 +67,41 @@ int cnt, vid, pid; int rxValue, rxIndex; int value = 0, index = 0; - /* int i=0; */ - /* cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 100, value, index, buffer, sizeof(buffer), 5000); */ - /* if(cnt < 0){ */ - /* fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); */ - /* } */ - /* rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); */ - /* rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); */ - /* fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); */ - /* fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); */ - - /* cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 101, value, index, buffer, sizeof(buffer), 5000); */ - /* if(cnt < 0){ */ - /* fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); */ - /* } */ - /* rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); */ - /* rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); */ - /* fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); */ - /* fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); */ - + if(strcasecmp(argv[1], "temp") == 0) { + int i=0; + cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 100, value, index, buffer, sizeof(buffer), 5000); + if(cnt < 0){ + fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); + } + rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); + rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); + fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); + fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); + + cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 101, value, index, buffer, sizeof(buffer), 5000); + if(cnt < 0){ + fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); + } + rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); + rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); + fprintf(stderr, "%3d.%02d*C ", rxValue/100, rxValue%100); + fprintf(stderr, "%3d.%02d*C \n", rxIndex/100, rxIndex%100); + } else { + int opcode, addr, value; + int i=0; + sscanf(argv, "%i %i %i", &opcode, &addr, &value); + cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, opcode, addr, value, buffer, sizeof(buffer), 5000); + if(cnt < 0){ + fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror()); + } + rxValue = ((int)buffer[1] & 0xff) | (((int)buffer[0] & 0xff) << 8); + rxIndex = ((int)buffer[3] & 0xff) | (((int)buffer[2] & 0xff) << 8); + + fprintf(stderr, "request = 0x%04x", opcode); + fprintf(stderr, "rxValue = 0x%04x value = 0x%04x\n", rxValue, addr); + fprintf(stderr, "rxIndex = 0x%04x index = 0x%04x\n", rxIndex, value); + + }