mikrocontroller.net

Forum: Compiler & IDEs [WinArm] BasicUSB (bugfix)


Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte da Probleme mit der isConfigured-Funktion, die unter anderem dazu
verwendet wird um zu schauen, ob ein Device initialisiert ist oder
nicht. Falls nicht, wird es initialisiert und es wird die aktuelle
Configuration zurückgegeben (derzeit default 1)

Nach einem BUS-Reset, durch abgestecktes Gerät, gibt die Funktion aber
immer noch 1 zurück, was mir ein Haufen Probleme bereitet hat, weil das
Programm dann nicht erkannt hat, dass es vom Bus getrennt wurde und
weiterhin in einer Schleife hing, wie Read und Write. Ich hab deshalb
in der Funktion eingebaut, dass pCdc->currentConfiguration auf 0
gesetzt wird, wenn das Gerät vom Bus getrennt wird. Dann wird
ordnungsgemäß das Read und Write abgebrochen, wenn es abgesteckt wird.
static uchar AT91F_UDP_IsConfigured(AT91PS_CDC pCdc)
{
  AT91PS_UDP pUDP = pCdc->pUdp;
  AT91_REG isr = pUDP->UDP_ISR;

  if (isr & AT91C_UDP_ENDBUSRES) {
    pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;
    // reset all endpoints
    pUDP->UDP_RSTEP  = (unsigned int)-1;
    pUDP->UDP_RSTEP  = 0;
    // Enable the function
    pUDP->UDP_FADDR = AT91C_UDP_FEN;
    // Configure endpoint 0
    pUDP->UDP_CSR[0] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL);
//---------------------------------------------------
// Meine änderung
//---------------------------------------------------
    pCdc->currentConfiguration = 0;
//---------------------------------------------------
  }
  else if (isr & AT91C_UDP_EPINT0) {
    pUDP->UDP_ICR = AT91C_UDP_EPINT0;
    AT91F_CDC_Enumerate(pCdc);
  }
  return pCdc->currentConfiguration;
}

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergessen: cdc_enumerate.c des BasicUSB-Beispiels für die
SAM7S-Controller. Ist im WinARM Paket dabei.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlerbericht an Atmel wuerde mehr bringen als in diesem Forum. Der Code
stammt von Atmel und wurde nur minimal an WinARM angepasst. Die
Mitarbeiter von Atmel Rousset lesen wahrscheinlich kein
deutschsprachiges Forum. e-mail an at91(a t)atmel(d o t)com oder evtl.
ins Forum auf at91.com

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.