[WinArm] BasicUSB (bugfix)

OP #364677
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.
1
static uchar AT91F_UDP_IsConfigured(AT91PS_CDC pCdc)
2
{
3
  AT91PS_UDP pUDP = pCdc->pUdp;
4
  AT91_REG isr = pUDP->UDP_ISR;
5

6
  if (isr & AT91C_UDP_ENDBUSRES) {
7
    pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;
8
    // reset all endpoints
9
    pUDP->UDP_RSTEP  = (unsigned int)-1;
10
    pUDP->UDP_RSTEP  = 0;
11
    // Enable the function
12
    pUDP->UDP_FADDR = AT91C_UDP_FEN;
13
    // Configure endpoint 0
14
    pUDP->UDP_CSR[0] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL);
15
//---------------------------------------------------
16
// Meine änderung
17
//---------------------------------------------------
18
    pCdc->currentConfiguration = 0;
19
//---------------------------------------------------
20
  }
21
  else if (isr & AT91C_UDP_EPINT0) {
22
    pUDP->UDP_ICR = AT91C_UDP_EPINT0;
23
    AT91F_CDC_Enumerate(pCdc);
24
  }
25
  return pCdc->currentConfiguration;
26
}
Gast #364679
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.