mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 USB HID und Timer


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das Phytec nanomodul Stm32F103 mit zugehöriger Basisplatine und 
programmiere mit Keil uvision4.
Ich möchte ein Programm schreiben, welches eine Kommunikation des 
Microcontrollers mit dem PC über USB ermöglicht und gleichzeitig noch 
mehrere ADC-Kanäle auslesen und eine PWM erzeugen kann.

Die einzelnen Programmteile laufen einzeln einwandfrei, also das USB HID 
Programm von Keil läuft einwandfrei, genauso wie eine PWM mit Timer 1 
oder das Auslesen der ADCs.
Versuche ich die Programmteile aber nun zu verbinden funktioniert der 
USB nicht mehr (Meldung: USB Gerät kann nicht erkannt werden).
Der einzige Timer der zusammen mit dem USB Programm funktioniert ist 
Timer 8. Sobald ich einen anderen Timer aktivieren möchte funktioniert 
der USB nicht mehr. Es reicht aus das Enable Bit des Timers zu setzen 
ohne dass irgendein anderes Register gesetzt wurde um den USB 
lahmzulegen.

Hat von euch jemand eine Idee an was das hängen kann??
Ich wäre euch sehr dankbar für eure Hilfe.

Gruß Tobias

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Deine Ausführung ist ein wenig dürftig.

Bein den STM32-Viechern musst Du für allen Mist irgendeinen Clock 
enablen. Ev. schaltest Du bei einer Zuweisung einen anderen Takt aus?

Gruß
Frank

Autor: STM32User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schaust du hier:

https://my.st.com/public/STe2ecommunities/mcu/List...

Timer 1 schaltet den Ausgang PA11 USBDM ab, wenn er nicht richtig
konfiguriert wurde.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also hier habe ich mal meine Konfiguration der Timer, bin extra noch 
einmal alles durchgegangen konnte aber keine Fehler finden.
Mittlerweile benutze ich auch das USB-Programm von STM, es ergeben sich 
aber die gleichen Fehler.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);  //Erlauben der 
Clock
    TIM1->RCR = 0x0000;
      TIM1->PSC = 0x0047;                               // set prescaler
      TIM1->ARR = 0x03E7;                               // set 
auto-reload
    TIM1->CCR1  = 0x00F0;                            //    0x02EE 
//
      TIM1->CCMR1 |= 0x00F0;                           //
      //TIM1->CCMR2 = 0x0000;                           //
      TIM1->CCER  |= 0x0005;                            // set 
capture/compare enable register
      TIM1->SMCR  |= 0x0040;                            // set slave 
mode control register
      TIM1->BDTR  |= 0xC000;                            // set break and 
dead-time register

      TIM1->CR1 = 0x0005;                               // set command 
register 1
      TIM1->CR2 = 0x0040;                               // set command 
register 2
                           // interrupts used
      TIM1->DIER |= 0x0003;                             // enable 
interrupt
      NVIC->ISER[0] |= (1 << (TIM1_UP_IRQChannel & 0x1F));  // enable 
interrupt

      TIM1->CR1 |= 0x0001;                              // enable timer

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, 
ENABLE);
    GPIOA->CRH = 0x0000000B;              //PA 8  auf Alternate 
Function, 50Mhz
    GPIOB->CRH = 0x00B00000;

Ich habe mittlerweile auch einmal versucht den Timer zu remappen.
Dabei passiert aber dann am Ausgang entweder garnichts wenn ich 
folgenden Programmtext nehme:

GPIO_PinRemapConfig( GPIO_FullRemap_TIM1, ENABLE );

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    GPIOE->CRH =0x000000BB;

oder ich habe auf dem negierten Ausgang 3,3 V und auf dem normalen 
Ausgang 0V wenn ich folgenden Programmtext benutze:

GPIO_PinRemapConfig( GPIO_FullRemap_TIM1, ENABLE );

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    GPIOE->CRH =|0x000000BB;

Irgendwo muss da ja etwas sein das mir entweder den Timer oder die 
Ausgangspins verändert, das muss aber dann schon im ursprünglichen 
stm-Programm für USB oder im ursprünglichen Keil-Programm für die 
USB-HID vorhanden sein.

Leider finde ich den Punkt einfach nicht.
So langsam verliere ich den Durchblick

Gruß Tobias

Autor: STM32User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,

benutze bitte die Funktionen aus der STM32 Library, dann kann dir 
bestimmt
weiter geholfen werden.

Gruß

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.