Forum: Mikrocontroller und Digitale Elektronik Sinus PWM mit 25 kHz lässt sich nicht kompilieren


von Frank (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute,

ich benötige mal eure Hilfe. Ich verwende ein Piccolo Launchpad von TI. 
Der Prozessor ist F28027.

Bisher habe ich eine Sinus PWM mit 50Hz Grundfrequenz und 20 kHz 
Schaltfrequenz erfolgreich programmiert. Auch habe ich eine Sinus PWM 
mit 50 Grundfrequenz und 25 kHz Schaltfrequenz erfolgreich programmiert. 
Nun möchte ich die Schaltfrequenz auf 25 kHz anheben und plötzlich lässt 
sich mein Code nicht mehr fehlerfrei compilieren.

Da ich in Sachen uC und DSP Programmierung recht unerfahren bin, möchte 
ich um eure Hilfe bitten. Mir scheint, als ob die Tabelle mit 500 Werten 
zu groß ist. Kann das der Grund sein?

Im Anhang findet ihr sowohl den Hauptcode als auch die LookUp Tabelle 
vom Sinus.

Aus der Fehlermeldung werde ich absolut nicht schlau bzw. habe keinen 
blassen Schimmer, wie ich sie zu deuten habe. Daher einfach mal ein 
Screenshot.


Ich danke euch.

von klausy (Gast)


Lesenswert?

versuch mal so was: #pragma DATA_SECTION(sineLookup, "Ramlocation")

von Frank (Gast)


Lesenswert?

klausy schrieb:
> versuch mal so was: #pragma DATA_SECTION(sineLookup,
> "Ramlocation")

Hi,
ich kann dir nicht ganz folgen. Wo genau soll ich das einfügen?

von Frank (Gast)


Lesenswert?

Es klappt :) Ich danke dir!

von klausy (Gast)


Lesenswert?

Am besten hinter #include "sineLookupFile.h"
allerdigs ist Ramlocation nur ein Platzhalter, du musst natürlich eine 
Datasection aus deinem Linkercomandfile nehmen...

von Frank (Gast)


Lesenswert?

klausy schrieb:
> allerdigs ist Ramlocation nur ein Platzhalter, du musst natürlich eine
> Datasection aus deinem Linkercomandfile nehmen...

Magst du das bitte noch einmal ein wenig ausführen? Wie gesagt, bin ich 
in Sachen uC Programmierung nicht so sehr bewandert, weshalb ich aus den 
Beschreibungen im Internet nicht wirklich schlau werde.

von klausy (Gast)


Lesenswert?

In deinem Linkercomandfile, das du als bild gepostet hast kannst du dir 
einen Speicherbereich definieren...
Dort steht irgendwo sowas wie: PAGE 1 :   /* Data Memory */
und dann zb. :
RAMM0       : origin = 0x...., length = 0x... /* on-chip RAM block M0 */
kenne deinen controller nicht so genau, aber wahrscheinlich auch
RAML4       : origin = 0x..., length = 0x.... /* on-chip RAM block L1 */

Dann könntest du zb. schreiben:  Sine_Ram      : > RAML4,     PAGE = 1
Und dann entsprechend #pragma DATA_SECTION(sineLookup,> "Sine_Ram")

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.