Forum: Mikrocontroller und Digitale Elektronik HyperTerminal erkennt virtuellen COM Port nicht


von Thorben (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Thorben (Gast)


Lesenswert?

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

von Thorben (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.