Ich benutzt ein Beispielprogramm von Atmel, dass einen virtuellen ComPort erstellt, um über USB Daten wie die RS232 an den PC sendet. Wenn ich jetzt im SourceCode einen Wert einlese erkennt das Terminal den COM nicht mehr und andere Programme(HTerm) erkennen zwar den Port, können aber nicht connecten. Wenn ich den Befehl wieder rausnehme, funktioniert die Verbindung wieder. Könnten das evtl. Timing-Probleme sein? oder vielleicht damit: ich bekomme eine Warnung beim compilieren "../cdc_task.c:69: warning: statement with no effect" statement=Initialiesierung des ADC wenn die dann nicht ausgeführt wird, ist wohl das der Fehler. In anderen Projekten hat die Initialisierung so funktioniert!? Ich hoffe jemand kann mir helfen! MfG Thorben
> ich bekomme eine Warnung beim compilieren > "../cdc_task.c:69: warning: statement with no effect" > > statement=Initialiesierung des ADC Aha. Wie wäre es mit etwas Quelltext? > wenn die dann nicht ausgeführt wird, ist wohl das der Fehler. Kann sein, muss aber nicht. > In anderen > Projekten hat die Initialisierung so funktioniert!? Das ist nicht anzunehmen, die Compilerwarnung ist recht eindeutig.
Hier der Quelltext des Hauptprogramms: //_____ I N C L U D E S _________________________________________________ #include "config.h" #include "conf_usb.h" #include "cdc_task.h" #include "lib_mcu\usb\usb_drv.h" #include "usb_descriptors.h" #include "modules\usb\device_chap9\usb_standard_request.h" #include "usb_specific_request.h" #include "lib_mcu/uart/uart_lib.h" #include "uart_usb_lib.h" #include <stdio.h> #include "lib_mcu/adc/adc_drv.h" #include "lib_board/stk_525/stk_525.h" //_____ M A C R O S ______________________________________________________ //_____ D E F I N I T I O N S ____________________________________________ //_____ D E C L A R A T I O N S __________________________________________ volatile U8 cpt_sof; extern U8 rx_counter; extern U8 tx_counter; S_line_coding line_coding; void cdc_task_init(void) { uart_init(); Leds_init(); Joy_init(); Hwb_button_init(); Usb_enable_sof_interrupt(); init_adc; #ifdef AVRGCC fdevopen(uart_usb_putchar,uart_usb_getchar); //for printf redirection #endif } void cdc_task(void) { U16 adc_val; char adc_string[16]; if(Is_device_enumerated()) //Enumeration processs OK ? { if(cpt_sof>=NB_MS_BEFORE_FLUSH && tx_counter!=0 ) //Flush buffer in Timeout { cpt_sof=0; uart_usb_flush(); } if (uart_test_hit()) //Something on USART ? { uart_usb_putchar(uart_getchar()); // Loop back, USART to USB Led0_toggle(); } if (Uart_tx_ready()) //USART free ? { if (uart_usb_test_hit()) // Something received from the USB ? { while (rx_counter) { uart_putchar(uart_usb_getchar()); // loop back USB to USART Led3_toggle(); } } } adc_val=Get_adc_pot_val(); // adc_val=(U16)((adc_val*((U32)5000))/1024); // itoa(adc_val,adc_string,10); if ( cpt_sof>=REPEAT_KEY_PRESSED) //Debounce joystick events { if (Is_joy_select()) printf ("Selekt Pressed !\r\n"); if (Is_joy_right()) printf ("Right Pressed !\r\n"); if (Is_joy_left()) printf ("Left Pressed !\r\n"); if (Is_joy_down()) printf ("Down Pressed !\r\n"); if (Is_joy_up()) printf ("Up Pressed !\r\n"); if(Is_hwb()) printf("Hello from AT90USBXXX !\r\n"); } } } void sof_action() { cpt_sof++; } Die Kommentare sind etwas verschoben, aber ich hoffe es geht auch so. Es ist auch noch die Kommunikation UART-USB implementiert, die ich aber noch rausnehmen werde. Gruß Thprben
Fehler gefunden..jedenfalls ist jetzt die Warnung weg und die Kommunikation funktioniert wieder. Mal sehen ob er mir die ADC-Werte anzeigt... Hinter init_adc hat "()" gefehlt..auch komisch, sonst erkennt er die Funktion gar nicht, wenn die Klammern fehlen. Ist das eigentlich erlaubt den Code hier zu posten? Ist ja von Atmel! Aber ich glaub mit dem Teil kann man eh nicht viel anfangen! MfG Thorben
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.