Arduino Leonardo - Bootloader COM Port | MATLAB/Simulink keine Verbindung

Hej Leute,

im Rahmen meiner Bachelorarbeit habe ich ein eigenes Board entwickelt mit einem ATmega32U4 Chip drauf. Auf den ATmega wurde der Arduino Leonardo Bootloader auch erfolgreich aufgespielt.
Jedoch soll das Board am Ende in Simulink verwendet werden und mithilfe des Arduino Packages dort von den Studierenden programmiert werden. Wieso über Simulink programmieren? Nun, die Studierenden sollen ein Regelsystem auslegen und es ist eine Forderung meines Betreuers dies über Simulink zu machen.

Zum Problem: Mein eigen entwickeltes Board lässt sich einwandfrei in der Arduino IDE bespielen und verwenden. Die Beispielsketches lassen sich also ganz gewöhnlich draufflashen.
In der Simulink Umgebung hingegen schlägt der Upload permanent Fehl. Dasselbe Verhalten tritt auch bei einem Referenzboard, welches ich über Amazon bestellt hatte auf.
Das Problem liegt darin, dass MATLAB sowie Simulink den COM Port des Leonardo nicht richtig identifizieren können. In Matlab selbst genügt es dafür einfach den COM Port mit anzugeben wie beispielsweise so:

>> arduino('/dev/cu.usbmodem111401', 'Leonardo')

ans = 

  arduino with properties:

                  Port: '/dev/cu.usbmodem111401'
                 Board: 'Leonardo'
         AvailablePins: {'D0-D13', 'A0-A5'}
  AvailableDigitalPins: {'D0-D13', 'A0-A5'}
      AvailablePWMPins: {'D3', 'D5-D6', 'D9-D11', 'D13'}
   AvailableAnalogPins: {'A0-A5', 'D4', 'D6', 'D8-D10', 'D12'}
    AvailableI2CBusIDs: [0]
AvailableSerialPortIDs: [1]
             Libraries: {'I2C', 'SPI', 'Servo'}
Show all properties

Versuche ich das ganze ohne angegeben Port:

>> arduino()

erhalte ich folgende Fehlermeldung:

Index exceeds the number of array elements. Index must not exceed 13.

Über Simulink kann man das ganze ebenfalls auch manuell eingeben:

Dort tritt dann am Ende jedoch ebenso folgende Fehlermeldung auf:

Error:The following error occurred during deployment to your hardware board: 
Index exceeds the number of array elements. Index must not exceed 13.

Allerdings muss bei dem Arduino Leonardo Board im Gegensatz zum Beispielsweise Arduino Mega der Host COM Port und Bootloader COM Port getrennt voneinander eingegeben werden. Ich steh dazu auch mit dem MATLAB Support im Kontakt nur leider haben die dafür bisher auch keine richtige Lösung gefunden. Ich erinnere mich jedoch dunkel, dass bei dem Leonardo beim Upload intern ein virtueller COM Port aufgemacht wird, wenn der Sketch aufgespielt wird. Korrigiert mich gerne wenn ich da falsch liege.

Jedenfalls wollte ich parallel zum MATLAB Support hier nochmal fragen, ob wer dafür eine Lösungsidee in petto hat oder was man noch austesten könnte.

Mein Betriebssystem ist nen macOS mit M1 Mac Mini. Windows kann ich erst im Laufe der nächsten Woche austesten. Laut Support ist unter macOS die Problematik mit der COM Port Erkennung wohl nicht gänzlich unbekannt, aber die passende Codezeile wurde im Package selbst schon mit der Alternative ausgetauscht. Eventuell stimmt auch nicht die Default Baudrate für das Downloaden des Sketches?

Dann wirst Du es doppelt schwer haben, davon abgesehen, das mathlab/simulink-Nutzung hier ebenfalls wohl eher im promillebereich liegen wird.
Ich hätte mich durchgewühlt...
This example shows how to use Simulink® Support Package for Arduino® Hardware to run a Simulink model on Arduino board.

Den Link kenne ich, dennoch danke. Das Problem tritt halt leider nur beim Arduino Leonardo auf. Auf meinen Arduino Mega läuft alles ohne Probleme.

Das ist leider auch meine Befürchtung, aber da hier ja doch sehr viele Experten was die Arduino Boards angeht unterwegs sind dachte ich ich probiere trotzdem mein Glück. Eventuell kennt ja jemand besser die Besonderheiten mit dem Leonardo und dem Uploadpoart.

Ein Ansatz wäre noch
## Board Specific Issues

Das mit dem btn drücken zum hochladen kenn ich vom micro wenn DTR nicht ausgelöst wird....

Du wirst aber nicht umhin kommen, einen COM-Port anzugeben.
Denn wenn Du keinen angibst, zaehlt er offensichtlich intern eine elementeliste durch und meint bei 13 Schluss machen zu müssen, weil es keine Elemente mehr gibt.
(Reine Meinung - ich hab weder Mac, noch mathlab...)

Ja das sollte ja prinzipiell auch nicht das Problem sein. In MATLAB, btw. nicht mathlab was ich auch lange dachte, funktioniert es ja auch einwandfrei mit dem Leonardo. Was Simulink da für Kunststücke dann probiert ist mir ein absolutes Rätsel. Der Einrichtungsassistent in Simulink selbst lädt zu allem Überfluss auch den Blink Sketch problemlos hoch...

Dabei hast du dich auf diesen Part

Alternatively, you can also try pressing and holding the reset button on the board while clicking Upload in Arduino IDE. When IDE displays the 'Uploading...' message, release the reset button and make sure that the upload was successful.

Once reset, the Leonardo serial port appears correctly on Windows.

bezogen?

Jupp.
Wenn da auf dem seriellen Port nur gesendet wird, ohne das da ein Reset durchgeführt wird, dann startet der bootloader nicht. Was dazu führt, das der Arduino sich doof stellt...

Hmm verstehe ich grade nicht so richtig. Wobei soll denn dabei ein Reset ausgeführt werden oder wird der Reset softwaremäßig während dem Upload durchgeführt?

Jedenfalls bricht die Arduino IDE direkt ab, wenn mich gedrücktem Reset Button auf Upload klicke. Wobei ich auch unsicher bin ob das wirklich für mein Problem hilft, denn dort steht ja eigentlich die Problematik gilt für Windows Maschinen.

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