Hardware Multiplikation Fehler

OP #2979254
Lesenswert?
• ▲
▼
Hallo zusammen.
Um 4 LEDs zu dimmen möchte ich die Werte Value1-4 für eine PWM(TimerA0 
und TimerA1 Cont Mode bis 65535-1) multiplizieren. Value1-4 können im 
Wertebereich von 0-250 sein. daher möchte ich diese Multiplizieren, um 
ihn an den Zählzyklus der TimerA0 und TimerA1 anzupassen.
Ich hoffe ihr versteht was ich meine.
Funktioniert wie es soll:
1
  TA0CCR1 = Value[1]*262;
2
  TA0CCR2 = Value[2];
3
  TA1CCR1 = Value[3];
4
  TA1CCR2 = Value[4];
Fehlermeldung:
1
  TA0CCR1 = Value[1]*262;
2
  TA0CCR2 = Value[2]*262; //zusätzlich
3
  TA1CCR1 = Value[3]*262; //eingetragene
4
  TA1CCR2 = Value[4]*262; //Multiplikationen


Das Problem was ich habe ist, dass mir CCS5 bei einer PWM alles super 
compiliert und es auch normal funktiert. Sobald aber 2-4 
Multiplikationen eingefügt werden, kommt die Fehlermeldung:
#10010 errors encountered during linking; "program.out" not built
#10099-D program will not fit into

Desweiteren steht neben der Zeile mit der Multiplikation:
#1533-D (ULP6.1) Detected use of multiplication on a device that has no 
hardware multiplier

Ich verstehe da nicht, dass es bei einer Multiplikation funktioniert, 
aber bei mehreren nicht mehr. Kann mir da jmd helfen?

uC: MSP430G2153


LG und nochn frohes Neues ;)
OP #2980468
Lesenswert?
• ▲
▼
Hallo Läubi,
vielen Dank für den Tipp.
Scheinbar liegt es tatsächlih daran. Kaum habe ich mal 4 Zeilen aus dem 
Code genommen, wird compiliert.

Nur so als kleine Nebenfrage, ob jemand da schon Erfahrung gemacht hat:
Kann es tatsächlich sein, dass die Lizensierung (Code Size limited) 
schon erreicht ist bzw. ausgeschöpft, nach ca. 200 Zeilen Code?

Weil dann ist die Überlegung eine volle Lizens zu kaufen.

Lg
Gast #2980503
Lesenswert?
• ▲
▼
>TA0CCR1 = Value[1]*262;

Versuch doch mal folgendes:
1
  uint16_t u16Src = Value[1];
2
  uint16_t u16Res = 0;
3

4
  u16Res += (u16Src << 8 );  // 262 = 256 + 4 + 2
5
  u16Res += (u16Src << 2 );
6
  u16Res +=  u16Src;
7
  u16Res +=  u16Src;
8

9
  TA0CCR1 = u16Res;

Vielleicht macht der Compiler das ohne Multiplikation

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.