Guten Abend,
ich versuche mich schon seit 2 Tagen in Harmony einzuarbeiten und komme
selbst leider nicht weiter.
Ich habe die "tutorials" von Microchip selbstverständlich angeschaut,
aber da wird gezeigt, wie man die Module (Driver) ins Projekt einbindet,
aber nicht, wie man das benutzt.
Zuerst habe ich versucht den PIC ohne Harmony zu programmieren, ich bin
recht schnell immer weiter gekommen. Allerdings weist mich der Compiler
darauf hin, dass plib.h bald nicht mehr unterstützt wird, und man soll
auf Harmony umsteigen.
Leider habe ich auf Deutsch kein einziges Tutorial dazu gefunden :((
Wenn ich etwas einbinde, generiert mir das Ding sehr viel Mist, den man
eigentlich nicht braucht.
Ich habe das Beispielprojekt blinky led genommen, und versucht den Pin
der LED zu ändern. Nach 2,5h habe ich das nicht hinbekommen.
Ich habe einfach die Stelle nicht gefunden, wo die LED dem Pin
zugewiesen wird.
Sehr peinlich und frustrierend. Besonders mit 11 Jahren µC
Programmiererfahrung.
Hatte aber früher andere µC benutzt und möchte gerne nun auf den PIC32
umsteigen.
Ein KLEINER Auszug, was mir Harmony generiert:
Kann doch nicht ernst gemeint sein, oder?
Für LED_ON, OFF, BLINK usw. immer eine neue Funktion, die über mehrere
.c Files verteilt ist, und komplett verschachtelt ist.
Die alten bekannten Befehle mit "TRISB...." versteht Harmony anscheinend
nicht.
Was ist das Problem? Oder ist das normal, dass eine blinkende LED, oder
Funktion "PORTS" in Harmony über 25kb Code erzeugt, ohne was zu machen?
Sorry, bin gerade nur sehr genervt.
Entschuldigt meine Emotionen, bitte :)
Von Vorne nun:
Wo kann ich nachgucken, wie ich ein Pin auf High oder Low schalten kann?
Ich möchte MPLab mit Harmony nutzen. µC ist PIC32MX795F512.
Die diversen Tutorials zeigen, wie man die Driver einbindet.
Das funktioniert natürlich auch.
Harmony erzeugt einen Haufen Code, und sagt "enjoy!".
Das soll Benutzerfreundlich sein und den Zeitaufwand bei der Entwicklung
reduzieren.
Leider habe ich nach 2 Tagen nicht mal geschafft eine LED ein zu
schalten.
Das wird schon sicherlich an mir liegen. Ich habe bestimmt die Vorteile
von Harmony noch nicht entdeckt.
So biete ich jemanden mir das kurz zu erklären.
Vielen Dank
Mitleidgenosse ;-)
ich kann dir leider nicht helfen, habe selbst ein ähnliches Problem.
Ich versuche gerade vom Fujitsu Microcontroller weg zu kommen und habe
mir einen Evalboard und PicKit3 bestellt.
Jetzt liegen die Sachen da, und ich bin etwas ratlos, was ich damit
anstellen soll.
Als Board habe ich dieses ausgesucht:
http://ww1.microchip.com/downloads/en/DeviceDoc/ADB%20for%20PIC32%20User%20Guide.pdf
Wegen USB, Display, RS232 und natürlich Taster + LEDs.
Das Beispielprojekt lässt sich einwandfrei Compilieren und flashen.
Aber dabei soll es ja nicht bleiben ;-)
Habe einen neuen Harmony Projekt erstellt. Die Projekterstellung ist
wirklich easy und mit paar Klicks gemacht.
Jetzt kommen meine Fragen, evtl. wird das dem TE auch helfen:
1.Kann das sein, dass es kein "normales" C ist, was Harmony da verlangt?
Ich habe sehr wohl Erfahrung mit C, und habe schon unzählige
(abgeschlossene) Projekte hinter mir. Mit dem Harmony Gedöns kann ich
irgendwie nichts anfangen. Das 188Mb großes Hilfe-PDF erklärt nicht
wirklich wie hat die Module richtig benutzt.
Wäre gut wenn Jemand seine Erfahrung postet :-)
Vielen Dank schon Mal
Gruß Alexander
Frage 2:
Ist man in der Zukunft (wenn man den Microchip Compiler nutzen will)
immer auf Harmony angewiesen?
Der Code von http://www.rocking-wombat.de/PIC32_Teil1.html funktioniert.
Beim Compilieren bekomme ich die Warnung "#warning The PLIB functions
and macros in this file will be removed from the MPLAB XC32 C/C++
Compiler in future releases"
Das verstehe ich so, dass PLIB nicht mehr nutzbar wird.
Das hilft Euch bei dem Problem zwar nichts, aber ich bin aus diesem
Grund von Microchip Code 'geheilt'.
Tolle Sachen dabei, aber ständig steht man plötzlich an irgendeinem
Punkt an dem es nicht weitergeht, nichts Dokumentiert ist, der Code nie
funktioniert haben kann oder mit der aktuellen Toolchain entgegen aller
Beteuerungen nicht funktioniert.
Das ganze Zeug ist eine riesige Wanderbaustelle.
Egal was man anfasst, wenn man nicht ganz exakt die Eval Boards nimmt
auf denen unverändert der Kram laufen soll wird es schwierig.
Der alles entscheidene Hinweis steht dann entweder versteckt auf 730
Seiten Fliesstext oder ist niemals herauszubekommen.
Es kann sein das man durch den vorgefertigten Code schnell zu
Ergebnissen kommt, es kann aber auch genauso passieren das man nach
vielen Wochen intensiver Arbeit irgendwann ergebnisslos abbrechen muss.
Teilweise ist der Quellcode nicht offen und die kompilierten LIBs,
Module, wie auch immer, funktionieren einfach nicht.
Kryptische Fehlermeldungen oder Funktionsverweigerung ohne die
Möglichkeit daran zu arbeiten.
Diese ganzen Konfigurationstools, zu denen ich Harmony im weitesten
Sinne auch zähle, hat MC immer mal wieder gebaut.
Funktioniert haben die immer nur für ein paar MCUs unter bestimmten
Bedingungen.
Die Arbeit die das gespart hat steckt man dann 10fach rein wenn man
plötzlich doch in dem Codegemurkse rummachen muß weil es in dem eigenen
Fall eben nicht klappt oder die Peripherie die man nutzen will nicht
korrekt initialisiert wird.
Anstatt das zu fixen gibt es dann alle paar Jahre eine tolle neue
Software die nun wirklich alles können soll. Ja, ja ...
Ooooh,
ihr sprecht mir so aus der Seele.
Hab zwar gerade nicht mit Harmony zu tun, sondern mit Silabs, aber auch
dort werden hunderte Zeile Code für das Setzen und nicht Setzen diverser
uC-Bestandteile erzeugt.
Ich sehe das Problem durchaus auch auf meiner Seite.
Ich programmiere einfach (noch) nicht so generisch und habe daher
weniger Funktionen, als vielmehr ein großes Define-Header-Sheet, in
welchem ich den Portpins dann sprechende Namen zuteile und anschließend
mit den Makros arbeite.
Kann man nicht einfach ein Projekt ohne Harmony erstellen?
Da ich mich fast ausschließlich mit 8Bit PICs beschäftige,
habe ich mir mal das Pendant Microchip-Code-Configurator angeschaut.
-> Nein Danke!
Da schreibe ich doch lieber alles gleich selber, als dann 90% von dem
erzeugten Wust, der sich dann auch noch in 'zig Dateien befindet zu
löschen...
Die Funktionen der PLIB liegen zumindest im PIC18 Bereich als Quellcode
vor und man kann sie also "einfach" in sein Projekt kopieren. (Für
kleinere PIC10/12/16 gab es nie eine PLIB)
Volker S. schrieb:> Kann man nicht einfach ein Projekt ohne Harmony erstellen?>
Natürlich kann man PIC32 auch mit XC32 ohne HARMONY programmieren. Habe
bis jetzt alles mit PIC32 auf diese Art gemacht - nicht nur LED blinken
lassen.
XC32 versteht auch die üblichen Schreibweisen für Registerzugriffe wie
z.B. LATBbits.LATB0 .
Hallo zusammen, und danke für die Antworten.
>Natürlich kann man PIC32 auch mit XC32 ohne HARMONY programmieren. Habe>bis jetzt alles mit PIC32 auf diese Art gemacht - nicht nur LED blinken>lassen.
Ich habe gestern mit meinem Evalboard das auch gemacht. Funktioniert.
Dabei wird überall plib.h eingebunden. Die Benutzung ist für mich als
Umsteiger eigentlich verständlich und stellt erst mal kein Problem dar.
Beim Compilieren weist mich der XC32 darauf hin, dass plib.h bald nicht
verfügbar sein wird.
Ohne plib.h bedeutet für mich Harmony, da es eine "eigene plib.h" hat,
die ich nicht verstehe ;-(
>XC32 versteht auch die üblichen Schreibweisen für Registerzugriffe wie>z.B. LATBbits.LATB0 .
Mach das mal in einem Harmony projekt... Das geht nicht.
Alex S. schrieb:>>XC32 versteht auch die üblichen Schreibweisen für Registerzugriffe wie>>z.B. LATBbits.LATB0 .> Mach das mal in einem Harmony projekt... Das geht nicht.
Ntürlich, du muss nur die XC.h einbinden ;-)
Mach es wie ich:
Nimm Harmony nur, wenn du es wirklich braucht, sonst nicht. Ich nehm das
gar nicht her, oder nur für USB oder so. Also für Sachen, die ich gar
nicht verstehen möchte ;-)
Bei PIC32 kann man Ports einfach so setzen:
- Erst mal auf Out drehen:
[c]
TRISAbits.TRISA0 = 0;
[\c]
Dann schalten:
[c]
LATAbits.LATA0 = 0; // LED aus
LATAbits.LATA0 = 1; // LED ein
[\c]
Oder eleganter:
[c]
#define LED0 LATAbits.LATA0
LED0 = 0; //LED aus
LED0 = 1; //LED ein
[\c]
Wenn man jetzt noch die #defines an einer übersichtlichen Stelle alle
zusammenfasst (z.B. in einem eigenen pindefine Header), ist das Projekt
mit wenigen Handgriffen auch noch auf PIC24 oder darunter portierbar.
Man braucht, glaube ich, die xc.h.
Fallweise prüfen, ob der Port analog ist oder auf eine Peripherie
zugeordnet ist.
--> Man muss Harmony nicht verwenden. Harmony und nicht Harmony code
kann man beliebig mischen.
Ich habe es getestet.
S. Anhang
Damit meine ich Folgendes:
Ich benutze gerne die Hilfe Funktion. Zu mindestens anfangs ;-)
Ohne plib.h funktionieren viele Dinge einfach nicht.
Manches geht, manches nicht. Und wenn die Sachen aus der Help nicht
funktionieren, dann ich das nicht gerade motivierend :-(
Hallo Foristen,
ich benutze MPLAB Harmony mit einem PIC32MZ2048ECH144.
Für das Setzen eines Pins funktioniert der Befehl
SYS_PORTS_PinSet(PORTS_ID_0, PORT_CHANNEL_D, PORTS_BIT_POS_7);
Darin wird der Port D Pin 7 auf "High" gesetzt.
In der Harmony Hilfe steht dazu auf Seite 6507
Function
void SYS_PORTS_PinSet
(
PORTS_MODULE_ID index,
PORTS_CHANNEL channel,
PORTS_BIT_POS bitPos
)
Hier ist ein Schreibfehler in der Hilfe enthalten statt PORT_CHANNEL_D
steht da PORTS_CHANNEL ! Ohne Unterstrich und mit PORTS geschrieben!
Die "Harmony" Dokumentation ist sehr unzuverlässig. Einige Beispiele
funktionieren auf meinen StarterKit nicht richtig.
Bin von Microchip Harmony nicht sehr überzeugt. Da ich aber einen
PIC32MZ habe gibt es nur Beispiele dazu nur in Microchip Harmony.
Leider!
Mit freundlichen Grüßen
Hallo zusammen,
also ich stand vor einem ähnlichen Problem:
Aufgrund von Performance musste ich vom PIC18 auf den PIC32 umsteigen.
Da ich in dem Projekt USB und Ethernet einsetzen musste, habe ich mich
also auch mit Harmony (V1.02) auseinander gesetzt.
Es war eine reine Katastrophe......Da blickt man als normaler
C-Programmierer einfach nicht durch.....
Habe dann den Stecker gezogen und bin beim PIC32MX... auf das
eigentlich abgekündigte MLA umgestiegen.....
USB und Ethernet lief nach kurzer Zeit, den Rest der Hardware (SPI usw.)
programmiere ich lieber selber....
Die PLIB muss man bei neueren Compiler Versionen hat nur separat
herunterladen, läuft dann auch weiterhin.
LG Dirk
Hallo Foristen,
beim PIC32MX ist es noch möglich mit MLA noch zu arbeiten, aber bei der
neuen PIC32MZ Reihe ist ein Umstieg meines Wissens nach nicht möglich.
Leider. Diese haben höhere USB Geschwindigkeiten gegenüber der PIC32MX
Reihe.
Neuere Beispiele in Harmony ab (1.6) funktionieren einwandfrei, aber
ältere sind mit unter nicht zu gebrauchen. Das Paradigma hinter Harmony
ist wohl das sich der Programmierer so wenig wie möglich mit der
Hardware des µCs auseinandersetzen soll. Mit scheint es gibt da gewisse
Ähnlichkeiten zum Arduino IDE.
Mit freundlichen Grüßen