Nano Every vs. Mfrc522 (aktuelle Board SW 1.8.5 kompiliert nicht)

Hallo ihr Lieben,

Ich habe ein Problem mit meinem Nano Every (megaavr) und der Mfrc522 Bibliothek.
Wenn ich mit der neuesten Version des Boards 1.8.5 kompiliere erhalte ich diverse cast Fehlermeldungen. Wenn ich statt dessen die Version 1.8.4 nutze läuft es sauber durch.

Kann das jemand von euch bestätigen?

Wenn ja, Ist das ein Problem in der megaavr Bibliothek oder in mfrc522?

Reproduzierbar? Ja!
Im es nachzuvollziehen erstellt einfach ein leeres Projekt und bindet mfrc522.h ein. Wenn man nun für megaavr (Nano every) kompiliert gibt es die Fehlermeldungen.

Wer kann mir hier weiterhelfen?

Jens

Ich hab Mitte letzten Jahres mit der damals aktuellen BSP (Board Support Package) Version alle wichtigen libraries getestet und Fehler reportet. Am Ende lief es. Wenn es jetzt nicht mehr läuft würde ich auf Arduino zugehen und den Fehler dort reporten. Die RFID Library ist relativ unmaintained, da wirst du vermutlich Probleme haben was zu bewirken (es sei denn du machst es selber). Aber versuchen kannst du es auch dort.

Ansonsten gilt was in der #hardware FAQ FAQ steht:

  • Brandneu (Stand 06/2019) erschienen ist der Arduino Nano Every . Dieser hat u.a. mehr Program Memory ( 48KB ) und ist daher sehr attraktiv. Es kommt hier der ATmega4809 zum Einsatz, welcher auf der megaAVR Architektur basiert. Er ist eigentlich 1:1 Pin-Kompatibel mit dem dem regulären Arduino Nano, allerdings ist der Library Support für den neuen Chip noch sehr dünn! Die wichtigsten Libraries für den TonUINO laufen im Prinzip schon und man könnte die offizielle TonUINO Firmware auf dem Arduino Every nutzen. Wer also schon etwas Erfahrung hat kann das gerne probieren, allen Einsteigern rate ich momentan allerdings noch dringend zum „classic“ Arduino Nano.

Hi Stephan,

Danke für die schnelle Antwort!

Wohin wende ich mich hier?
Ein spezieller Github-Account?

Wenn das Problem in der RFID Library liegt, werde ich da mal schauen. Aktuell vermute ich eher ein Problem auf Arduino-Seite, da es ja mit der Version 1.8.4 noch läuft - mit der Version 1.8.5 aber nicht mehr.
Kann man bei Arduino die Changes an den Packages nachvollziehen - d.h. gibt es da ein offizielles Repo?

Viele Grüße
Jens

Hi Stephan,

ich habs jetzt schon gefunden.
Wahrscheinlich auch die Ursache des Problems:

Das gleiche Problem wurde auch schon mal reported - allerdings nicht als solches erkannt:

Mal schauen, ob facchinm auf meinen Kommentar reagiert. Ansonsten mache ich einen neuen Issue auf.

Vielen Dank nochmal
Jens

2 Like

Ein kurzes Update meinerseits.

Es gibt einen offenen Issue zu diesem Problem auf GitHub:

Es war dort recht ruhig, aber es scheint nun wieder anzulaufen.
Ursache scheint eine in 1.8.5 eingeführte Vereinfachung zu sein.

Eine einfache Lösung ist auch schon verfügbar.
So dass ich hoffe, dass mit dem nächsten Release alles wieder funktioniert.

In der Zwischenzeit kann man sich folgendermassen behelfen:

  1. Anpassung der Arduino.h im megaAVR-specific file:
    (Auf meinem Mac in: ~/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.5/cores/arduino/Arduino.h)
    #undef F #define F(str) (str)
    to
    #undef F #define F(str) ((const __FlashStringHelper*)(str))
    (#undef und #define gehören untereinander, leider wird im code der line break ignoriert )

oder

  1. Aktuell mit der Version 1.8.4 kompilieren :slight_smile:

Viele Grüße
Jens

2 Like