www.mikrocontroller.net

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


Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.