www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FX2 Standalone betrieb


Autor: Tom A. (thomas_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe das High Speed Interface Module von Braintechnology.de.

Mein Module bootet aus dem EEPROM und meldet sich problemlos an.

Jetzt möchte ich es autonom betreiben. Hierzu habe ich eine externe 
Spannungsversorgung angeschlossen und die Spannung vom USB Port 
unterbrochen.

Wenn ich nun die Spannung anschalte (USB Host verbindung besteht) meldet 
sich das gerät wie gehabt an.

Wenn ich jetzt aber das Module vom USB Port trenne stoppt der µC die 
Arbeit.

Kann es sein, dass das USB device in eine Art standby geht? Wenn ja wie 
kann ich das unterdrücken?

Ein weiteres Problem ist, dass wenn ich das Gerät wieder anschließe, das 
es nicht mehr richtig erkannt wird. Es erscheint "Unbekanntes Gerät" im 
Geräe-Manager. Muss ich meiner FW, auch die ganze enumeration 
beibringen? Beim erstenmal funktioniert es doch auch?

Vielen dank für die Ideen schonmal.

Grüße Thomas

Autor: Tom A. (thomas_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
   // clear the Sleep flag.
   Sleep = FALSE;

   // Task Dispatcher
   while(TRUE)               // Main Loop
   {
      if(GotSUD)            // Wait for SUDAV
      {
         SetupCommand();          // Implement setup command
           GotSUD = FALSE;            // Clear SUDAV flag
      }

      // Poll User Device
      // NOTE: Idle mode stops the processor clock.  There are only two
      // ways out of idle mode, the WAKEUP pin, and detection of the USB
      // resume state on the USB bus.  The timers will stop and the
      // processor will not wake up on any other interrupts.
      if (Sleep)
          {
          if(TD_Suspend())
              { 
              Sleep = FALSE;            // Clear the "go to sleep" flag.  Do it here to prevent any race condition between wakeup and the next sleep.
              do
                  {
                    EZUSB_Susp();         // Place processor in idle mode.
                  }
                while(!Rwuen && EZUSB_EXTWAKEUP());
                // Must continue to go back into suspend if the host has disabled remote wakeup
                // *and* the wakeup was caused by the external wakeup pin.
                
             // 8051 activity will resume here due to USB bus or Wakeup# pin activity.
             EZUSB_Resume();   // If source is the Wakeup# pin, signal the host to Resume.      
             TD_Resume();
              }   
          }
      TD_Poll();
   }


Das steckt doch alles da drin oder nicht?
         SetupCommand();
für die richtige anmeldung am host und
            Sleep = FALSE;
Damit das Modul, wenn der USB stecker gezogen wird nicht in den Sleep 
Modus geht oder nicht?

Autor: Christian R. (supachris)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nee, das ist was anderes. Du musst die Self-Powered Application Note 
beachten. Da musst du VBus pollen und entsprechend das DISCON Bit setzen 
und rücksetzen. Wir machen das auch so und der FX2 arbeitet auch bei 
abgezogenem USB Kabel. Pollt zwar bei uns nur VBUs und ob das FPGA 
fertig gebootet ist, aber er arbeitet. Wenn du das mit dem Discon Bit 
richtig machst, meldet der sich auch korrekt an beim Wieder-Anstecken.

Autor: Tom A. (thomas_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, also so funktioniert es:

Das Device ist natürlcih jetzt self powerd.
   Selfpwr = TRUE;            // Enable self powered 

Damit beim abstöpseln des USB ports das device nicht in den Sleep modus 
geht muss dies unterbunden werden
      if (FALSE)
          {
          if(TD_Suspend())
              { 
              Sleep = FALSE;            // Clear the "go to sleep" flag.  Do it here to prevent any race condition between wakeup and the next sleep.
              do
                  {
                    EZUSB_Susp();         // Place processor in idle mode.
                  }
                while(!Rwuen && EZUSB_EXTWAKEUP());
                // Must continue to go back into suspend if the host has disabled remote wakeup
                // *and* the wakeup was caused by the external wakeup pin.
                
             // 8051 activity will resume here due to USB bus or Wakeup# pin activity.
             EZUSB_Resume();   // If source is the Wakeup# pin, signal the host to Resume.      
             TD_Resume();
              }   
          }


Oder einfach rauslöschen und dann funktioniert alles wunderbar ;)

Grüße Tomtom

Autor: Tom A. (thomas_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh... mist ich hab erst jetzt deinen Eintrag gelesen.

mh... Dann würde das Device aber ja trotzdem in den sleep modus gehen. 
Also den zweiten Teil den ich gepostet habe muss man aufjedenfall 
rauswerfen.
   Selfpwr = TRUE;            // Enable self powered 
hat wirklich keinen Einfluss darauf.

So wie ich es beschrieben habe funktioniert es aufjedenfall auch. 
Natürlich schafft die von dir erklärte Lösung mehr Sicherheit.

Ich muss mal schauen, welche der beiden Lösungen ich jetzt verwenden 
werde, da es bei mir hier eigentlich recht zuverlässig läuft.

Grüße tom

Autor: Tom A. (thomas_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, alles klar habs so implementiert und klappt problem los. Danke für 
den Tipp.

Grüße Tom

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.