MobaTools um Board erweitern

Die Frage geht wahrscheinlich am ehesten an @Microbahner:
Die Mobatools arbeiten nicht mit meinem Lieblinsboard, dem LGT8F328P... Deshalb möchte ich versuchen die Mobatools um das Board zu ergänzen.
Nach einem Blick in die Lib. habe ich gesehen dass Du für jedes Bord einen Ordner angelegt hast. Damit ich (vieleicht) nicht alles durchackern muss: reicht es sich auf den Ordnerinhalt zu konzentrieren oder müssen andere Files auch ergänzt werden ?

Kommt drauf an ... und hängt sicher auch vom Aufbau des verwendeten Boards/MCU ab.
Bisher habe ich mich noch nicht mit dem LGT8F328P beschäftigt. Kann also auch nicht sagen, wie groß die Unterschiede - speziell bei den MobaTools relevanten Teilen - sind. Meine Zielgruppe sind derzeit eher die 32-Bit MCU's :wink:
Je nachdem wie groß letztendlich die Unterschiede zum originalen 386P sind, kann man das komplett in die 386P Version integrieren, oder man richtet ein neues boardspezifisches Verzeichnis an. Ich vermute mal, dass man die für alle geltenden Files eher nicht verändern müsste.
Vielleicht muss man auch garnicht viel ändern, sondern nur die Abfragen zur MCU entsprechend ergänzen. Der ATmega2560 und der ATmega386P werden auch mit der gleichen MCU-Software (Ordner avr) abgedeckt. Das gilt allerdings sicher nur, wenn die Registernamen im verwendeten Core identisch zum AVR-Core sind.

Die MobaTools sind erst die zweite Lib. die nicht gleich funktioniert, ich unterstelle deshalb, dass der Unterschied nicht sooo groß ist. Ich mag die Teile einfach.
"Unterstellen" ist aber immer so eine Sache... :wink: Auf alle Fälle haben die LGT einen Timer (16 bit) mehr.
Der Unterschied bei den Timern ist wohl auch der Grund weshalb die MobaTools auf dem LGT nicht funktionieren. Die Arduino IDE wirft beim kompilieren eines Sketches (minimumStepper) auch keinen Fehler aus, Hochladen geht auch, aber der Sketch lässt nur die LED an Pin 13 Schnell blinken.
Kompiliere ich den Sketch allerdings mit PlatformIO (VScode) bekomme ich eine Warnung:

In function 'TIMER3_COMPB_vect':
.pio/libdeps/lgt8f328p-LQFP48/MobaTools/src/avr/MoToAVR.cpp:18:1: warning: 'TIMER3_COMPB_vect' appears to be a misspelled 'signal' handler, missing '__vector' prefix [-Wmisspelled-isr]
 ISR ( TIMERx_COMPB_vect) {

Dort werd' ich wohl ansetzen müssen..

Vielleicht hilft dies dabei.

:smiley: das kenn ich, - ich such' wo ich bei den Mobatools ansetzen muss... :wink:

Hmm... Kannst ja mal testen was passiert wenn du die Lib auf Timer 1 zwingst.

Mal eine andere Frage: Weist Du eigentlich, welche boardspezifischen Defines der LGT8F328P spezifische Core setzt? Die MobaTools fragen diese defines recht oft ab, um die relevanten Code-Teile auszuwählen.
Ich geh' mal davon aus, dass man für den Prozessor einen eigenen Core braucht.

Da bin ich gerade dabei das DaBla. zum LGT durchzuforsten... Zugegeben, das ist noch schwere Kost für mich. :slight_smile:

Ich hab Gestern Abend auch mal probiert das basicStepper Beispiel für einen STM32...C6 und C8 zu kompilieren, - bei beiden bekomme ich die Meldung "Bord nicht Unterstützt"

@Rintin: Heute Abend mal gucken...

Da wirst Du im Datenblatt nicht fündig werden. Diese defines werden vom jeweiligen Core festgelegt, und man kann daran das ausgewählte Board und den Core erkennen. Bei UNO und dem avr Core sind das z.B.: ARDUINO_ARCH_AVR und ARDUINO_AVR_UNO
Bei anderen Cores gibt es teilweise noch wesentlich mehr. Diese defines stehen aber nirgendwo in einer source-Datei, sondern sie werden dem Compiler beim Aufruf per -D Optionsparameter mitgegeben.

Dann hast Du vermutlich nicht den unterstützten Core geladen. Da werden dann auch nicht die abgefragten defines gesetzt. Die MobaTools setzen da den - im Vergleich zum STM-Core - deutlich schlankeren Core von Roger Clark voraus.
Vielleicht sollte ich die Meldung noch ändern in "Bord oder Core nicht unterstützt"

Das lässt sich einfach erreichen, indem im MobaTools. h in dieser Zeile:

	//#define NO_TIMER3             // never use Timer 3

das Kommentarzeichen entfernt wird.

1 Like

Zumindest werden mal die #defines
__LGT8FX8P__ und __LGT8F__ verwendet.

Ich habe mir jetzt mal einen LGT8-Core installiert. Die Warnung bekommst Du in der Arduino IDE auch, Du musst nur alle Warnungen in den Voreinstellungen aktivieren. Standardmäßig ist das bei Der Arduino-IDE leider nicht der Fall.

Verbiete ich ihm, den Timer 3 zu nutzen (s.o.) kompiliert er ohne Warnung. Ob's dann funktioniert kann ich mangels HW natürlich nicht testen.
Da der ATmega386 gar keinen Timer 3 hat, kann es natürlich sein, dass der Timer 3 des LGT8F328P nicht kompatibel zum Timer 1 ist. ( Der Timer 3 beim ATMega2560 ist vollständig kompatibel zu Timer 1, aber der ist ja auch aus der gleichen Familie )

Kannst das mal testen. Wenn es dann funtioniert, werde ich einen Bugfix machen, damit er beim LGT8F328P die Finger vom Timer 3 lässt.

Habe ich, - ist mit das Erste was ich mach' wenn ich eine IDE neu installiere und hab es sogar extra deshalb noch mal kontrolliert ob wirklich...

Ja, mit Timer3 disabled funktioniert es.

Hast den LGT8F mit 16 oder 32 MHz betrieben? Ich weis nicht, wie der bei 32MHz den Timer 1 verwendet. Das ist ja nicht kompatibel zum ATmega386. Bei 32MHz bekomme ich zusätzliche Warnungen bei meinen internen Berechnungen für die Timer-Tics. Da läuft wohl was über.
32MHz, Vorteiler 8 -> 4Tics/µs -> 80000 Tics für 20ms: Überlauf! Da müsste man dann wohl doch mehr ändern, wenn man den LGT8F mit 32MHz betreiben will.

Mit 16 MHz, hatte ich schon vor dem Wechsel zu Timer1 so gesetzt.

In der ISR Vector Tabelle sehe ich zumindest keine Comparator Einträge für Timer3.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.