Forum: Mikrocontroller und Digitale Elektronik LPC1768 + Matlab Hardware Timer nutzen?


von Der Verzweifelte (Gast)


Lesenswert?

Hallo zusammen :)

Ich bin momentan ein bisschen verzweifelt und hoffe, dass mir hier einer 
weiterhelfen kann.

Ich habe folgendes Problem:
Im zuge meines aktuellen Praktikums muss ich 2 Schrittmotoren mit einem 
mbed Lpc1768 über ein Matlab GUI ansteuern.
Hierfür hab ich mir folgende Library von der mbed Seite geladen: 
http://developer.mbed.org/cookbook/Interfacing-with-Matlab
Was ich also nun brauchte waren 2 Rechtecksignale an 2 Pins mit 50% Duty 
Cycle und variierbaren Perioden.

Mein erster Plan war es die PwmOut() Funktion etwas zu entfremden und 
anstatt die Duty-Cycles einfach die Perioden zu verändern.
Leider teilen sich auf dem Lpc1768 alle PWM-Pins die gleiche Periode was 
diese Variante also unnütz machte.

Mein 2. Plan war es dann über einen Matlab timer und nem DigitalOut den 
jeweiligen Pin zu toggeln.
Leider dauert so ein Set/Reset Zugriff über matlab ca 40ms was mir eine 
max. Periode von ca 10Hz ermöglicht.
Ich brauche allerdings um die 70kHz max.

Jetzt ist die einzige Idee die ich noch habe den Hardwaretimer zu nutzen 
(oder den Hardware Ticker über den ich durch meine Internetrecherche 
erfahren hab).
Leider hab ich absolut keine Ahnung wie ich die Register mithilfe von 
Matlab anspreche und finde auch keine Beispielcodes oder ähnliches was 
mir helfen könnte :(

Habe z.B. dieses Tutorial gefunden 
http://developer.mbed.org/media/uploads/robt/mbed_course_notes_-_timers_and_interrupts.pdf
Leider ist es nur C++ Code den man so nicht umsetzen kann (alleine 
"Ticker" ist Matlab völlig unbekannt)...
Weiterhin hab ich mir auch die M-files zu den Library Funktionen wie 
PwmOut oder DigitalOut angeguckt (die müssen ja irgendwie die Hardware 
setzen) aber auch hier Blick ich nicht wirklich durch.
Meine einzige Vermutung bis jetzt ist, dass ich vielleicht die 
RPCFunction() Funktion nutzen müsste.
Aber die Tutorials die ich dazu finde versteh ich leider auch nicht.

Jetzt also meine Frage:
Könnte mir irgendwer erklären wie ich so nen Hardware Timer mit 
Interrupt in Matlab initialisiere?
Oder generell wie ich in die Register schreibe?
Bei C war das alles viel einfacher man musste nur die library ranhängen 
und konnte die Register mit Registername = zu_setzende_bits; direkt 
ansprechen...

Ich wäre über Hilfe und Rätschläge wirklich sehr dankbar da ich noch 
nicht so lange mit Matlab arbeite (die Tutorials im Internet für Matlab 
+ mbed mehr als rar sind) und mit dem Projekt so nicht weiter komme.

Mit freundlichen Grüßen

Der Verzweifelte

von W.S. (Gast)


Lesenswert?

Tja, da wird dir wohl nur die Alternative offenstehen, entweder 
weiterhin zu verzweifeln oder dich um eine passende Programmierung (aus 
deiner Hand) für den µC zu kümmern.

Matlab läuft doch auf dem PC, gelle? Und zwischen PC und dem LPC1768 
müßte irgend eine Strippe verlaufen, über welche sich beide Geräte 
miteinander verständigen können - ja?
Und welche?
Und was kann die Firmware im µC?
Und gibt es ein Übertragungsprotokoll?
Und hast du es gelesen?

Oder..
sollst du eine Firmware für den LPC1768 schreiben, mittels derer man 
irgendwelchen Schnickschnack von Matlab auf den Ports des µC stattfinden 
lassen kann?

W.S

von Hellmut K. (hkohlsdorf)


Lesenswert?

Kauf dir ein LPCXpresso1769, bei Watterott für ein Apple und ein Ei zu 
bekommen und lade dir die IDE von NXP herunter, kostenlos und hilft. 
Zusätzlich könnte es interessant sein LPCOpen zu verwenden, so heisst 
neuerdings CMSIS bei NXP. Unter den Beispielprogrammen findest du auch 
die Verwendung der PWM!

Auch interessant könnte es sein den PC über Ethernet mit dem LPCXpresso 
zu verbinden, wegen der Geschwindigkeit!

: Bearbeitet durch User
von temp (Gast)


Lesenswert?

Hellmut Kohlsdorf schrieb:
> Kauf dir ein LPCXpresso1769, bei Watterott für ein Apple und ein Ei zu
> bekommen und lade dir die IDE von NXP herunter, kostenlos und hilft.

Wenn du ein Apple bei Wattenrot dafür hinblätterst, verzichten die sogar 
großzügig auf das Ei...

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.