Forum: Mikrocontroller und Digitale Elektronik Programmierung TI MSP432


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von M. M. (blackcow)


Bewertung
0 lesenswert
nicht lesenswert
Eigentlich komm ich aus der AVR-Ecke, spiele aber nun mit einem MSP432 
Launchpad herum und bin mir nicht ganz sicher wie ich dieses 
programmieren soll. Beispielsweise will ich mit dem Timer_A drei 
PWM-Signale erzeugen. Also mit CCR0 die Frequenz und mit CCR1-3 jeweils 
den Duty-Cycle festlegen. Soweit sogut, nun habe ich aus einem Tutorial 
Initialisierungsfunktionen dieser Art entnommen:
1
/* DriverLib Includes */
2
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
3
4
initTimers(){
5
//Timer_A -> PWM generation
6
const Timer_A_UpModeConfig upConfig = {
7
TIMER_A_CLOCKSOURCE_MCLK,              // MCLK Clock Source = 24MHz
8
TIMER_A_CLOCKSOURCE_DIVIDER_1,         // MCLK/1 = 24MHz
9
2400,                                  // 2400 tick period = 10kHz
10
TIMER_A_TAIE_INTERRUPT_DISABLE,        // Disable Timer interrupt
11
TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE,   // Disable CCR0 interrupt
12
TIMER_A_DO_CLEAR                       // Clear value
13
};
14
Timer_A_configureUpMode(TIMER_A1_BASE, &upConfig);
15
Timer_A_startCounter(TIMER_A1_BASE, TIMER_A_UP_MODE);
16
return;
17
}
18
19
main(){
20
while(1){}
21
}
22
23
// Timer_A PWM ISR
24
void TA1_0_IRQHandler(void){
25
Timer_A_clearCaptureCompareInterrupt(TIMER_A1_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_0);
26
}

Als ich dann im Internet suchte, wie ich die CCR Interrupts einschalten 
kann fand ich vor allem diesen 'Style':
1
/*** Clocks and GPIO set-up would be here and are in the downloadable
2
example, but have not been shown to reduce the code size ***/
3
 
4
  /*** Timer0_A Set-Up ***/
5
    TA0CCR0 |= 1000-1;
6
    TA0CCR1 |= 1;
7
    TA0CCTL1 |= OUTMOD_7;
8
    TA0CTL |= TASSEL_2 + MC_1;
9
 
10
  /*** Timer1_A Set-Up ***/
11
    TA1CCR0 |= 4000-1;
12
    TA1CCTL0 |= CCIE;
13
    TA1CTL |= TASSEL_2 + MC_1;
14
 
15
    _BIS_SR(LPM0_bits + GIE);
16
}
17
 
18
#pragma vector=TIMER1_A0_VECTOR
19
   __interrupt void Timer1_A0 (void) {
20
 
21
    TA0CCR1 += IncDec_PWM*2;
22
 
23
    if( TA0CCR1 > 998 || TA0CCR1 < 2 )
24
       IncDec_PWM = -IncDec_PWM;
25
}

Dort werden die Register direkt beschrieben, so wie ich es bei den 
Atmegas immer mache. Also ohne diese Funktionen. Mir geht's jetzt nicht 
direkt um die PWM, sondern um die Art zu Programmieren. Diese Funktionen 
erscheinen mir eher umständlich und verlagern das Problem vom Wissen der 
Registernamen zum Wissen der richtigen Funktionen. Wobei diese 
Funktionen zwar manchmal bequemer sind, aber eine gute Dokumentation 
habe ich nicht gefunden. Außerdem wird durch den Overhead 
Programmspeicher belegt und der Controller wird langsamer?! Kann mir 
jemand aus der Embedded Ecke sagen wie das bei Profis gehandhabt wird?

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
M. M. schrieb:
> Wobei diese Funktionen zwar manchmal bequemer sind, aber eine gute
> Dokumentation habe ich nicht gefunden.

Die Dokumentation der driverlib findest du im driverlib-Paket. :)

Und so oder so muss man die Hardware selbst verstehen.

> Außerdem wird durch den Overhead Programmspeicher belegt

Der MSP432 hat die driverlib auch im ROM.

> und der Controller wird langsamer?!

Du kannst auch alles inlinen.

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]
  • [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.