STM32F334 HR Timer Reset event from other Timer

OP #3979985
Lesenswert?
• ▲
▼
Hallo,

mein Ziel es ist mit dem HRTimer 4 Signale zu generieren. Dies möchte 
ich aber mit voller Auflösung alle 1 kHz machen.

Meine Idee war den HRTimer im one shot mode, non retriggerable laufen zu 
lassen und per TIM2 über die external Events das Update von TIM2 als 
reset für den HRTIM zu verwenden.

Die Erzeugung der Signale in der HRTIM funktioniert. Auch der one shot 
mode funktioniert (getriggert per Software über Timer Reset Flag).

Jetzt habe den Reset über External Event Channel 2, Source 3 
konfiguriert welches dem TIM2_TRGO Signal entspricht. TIM2 initialisiere 
ich im Master Mode und MMS=010, sodass ein update event das TRGO Signal 
generiert.

Funktioniert leider nicht. Auch wenn ich den Trigger per Software 
auslöse (TIM2->EGR |= TIM_EGR_TG) erzeugt der HRTIM keine Signale.
1
    __TIM2_CLK_ENABLE();
2

3
    // generate TRGO on update
4
    TIM2->CR2 = TIM_CR2_MMS_1;
5
    TIM2->PSC = 1;
6
    TIM2->ARR = 72000;    
7
    TIM2->EGR = TIM_EGR_UG;
8
    
9
    // enable Timer2
10
    TIM2->CR1 |= TIM_CR1_CEN;
11
    
12
            
13
    HRTIM_Minimal_Config();
14
    
15
    // enbale TimerA in one shot non retriggerable mode with preload enable
16
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].TIMxCR = HRTIM_TIMCR_PREEN;
17
    
18
    // reset on external event channel 2, source 3 -> TIM2_TRGO
19
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].RSTxR = HRTIM_RSTR_EXTEVNT2;    
20
    HRTIM1->sCommonRegs.EECR1 = HRTIM_EECR1_EE2SRC_1;
21
    
22
    // set period and compare registers
23
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].PERxR = 0xF000;
24
    
25
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].CMP1xR = 0x0001;    
26
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].CMP2xR = 0x5000;    
27
    
28
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].CMP1xR = 0x4000;    
29
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].CMP2xR = 0x8000;
30

31
    // set set and reset conditions
32
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].SETx1R = HRTIM_SET1R_CMP1;
33
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].RSTx1R = HRTIM_RST1R_CMP2;
34

35
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].SETx2R = HRTIM_SET1R_CMP3;
36
    HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_A].RSTx2R = HRTIM_RST1R_CMP4;
37
    
38
    /* Enable TA1 and TA2 outputs */
39
    HRTIM1->sCommonRegs.OENR = HRTIM_OENR_TA1OEN + HRTIM_OENR_TA2OEN;     
40
  
41
    // start master timer and timer A
42
    HRTIM1->sMasterRegs.MCR |= HRTIM_MCR_MCEN + HRTIM_MCR_TACEN;
43
    
44
    GPIO_HRTIM_outputs_Config();

Ich muss gestehen ich bin noch recht neu in der Welt der ARM und bin mir 
sicher irgendwo was vergessen zu haben, leider finde ich nicht wo...

Vielen Dank für eure Hilfe!

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.