MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

icon
Avatar
haraldh
Posts: 39
Hallo !

wem geht es genauso.....

ich beobachte bei meinen arduinos das pins nicht aktivierbar sind. es kommt auch vor das nach einem update die zuvor funktionierenden pins am arduino,dann nicht mehr funktionieren. es ist meistens die verwendung als taster.
neuerliches löschen und späteres aufspielen als taster wieder ,bring auch keine verändern des problems
da ich nun bereits 15 arduinos in verwendung habe ,und bei fast allen das gleiche symptom entsteht frage ich euch was ist bei den arduinos los.......
hat von euch wer eine idee dazu............
lg haraldh
2018-09-25 12:17
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hi

Ich vermute du hast dein Projekt schon länger da du ja schon ne Zeit da bist.
Sebastian hat mit 7.5 die Länge der Devicenames reduziert ( Und ich vermute mal das dies nicht Abwärtskompatibel war.... Sprich alte Megas vor 7.5 habe die namen noch... Also nur neu erstellte Namen fallen unter das Limit)

Dein problem wurde bereits mehrfach gemeldet und wie ich (wir) es verstehen läuft der RAM des Megas über wenn die Namen der Devices zu lange sind oder es spinnt wenn man Sonderzeichen verwendet.

Meine Empfehlung zum Testen.... Ändere mal bei einen Problematischen Mega ALLE Dateinamen so das sie maximal 8 Zeichen haben und nur aus A-Z und 0-9 bestehen...
Ich persönlich verwende nicht mal Leerzeichen oder Binde und Unterstrich .... und schon gar keine Sonderzeichen !"§$%&/ oder ÄÜÖ.

Damit du nicht stunden verschwendest.... Teste das bei EINEN Mega.... Dann siehst du ob es was bringt. Bei eigentlich allen anderen Usern war DAS die lösung !
Good Luck !
2018-09-25 12:59
Avatar
Hannes
From: Austria
Posts: 164
Supporter
Hallo Pizmann82,

Betrifft das nur die Dateinamen in der Config vom Mega selbst, also bei der Pin - Zuweisung oder auch die Namen in der Config wo die Funktionen erstellt werden auch?
Danke
www.modellbau-technik.at
hannes.dobersberger@modellbau-technik.at
2018-09-25 13:19
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
In der Theorie nur die Devices auf dem Mega..... Denn nur die müssen AUF dem Mega gespeichert werden ( und dort ist der RAM eben sehr begrenzt)
In Mobiflight "sollte" das kein Problem sein...
ABER: Ich persönlich denke stets konservativ..... Folgerlich sind auch die Confignamen in MF bei meinen Testprojekten stets Kurz und ohne Leer- oder Sonderzeichen.
Good Luck !
2018-09-25 15:20
Avatar
haraldh
Posts: 39
hallo zusammen !!

ich meine mit meinem thema, die zuweisung auf dem arduino als taster led oder encoder,

dort lasse ich alles so wie es von der software vorgegeben wird. denn auch dort sind wir schon draufgekommen, das es einen begrenzten speicher gibt.

gibt es noch immer eine begrenzung auf 40 schalter, oder led ,so wie es in der doku beschrieben wird............

lg haraldh
2018-09-25 20:19
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
LED ist noch bei 40.... schalter ging auf 50 mit 7.4 wenn ich mich recht erinnere.
Good Luck !
2018-09-26 00:12
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Du erinnerst dich korrekt!
Grüße,
Stephan (Time: UTC+2)
2018-09-26 11:17
Avatar
haraldh
Posts: 39
hallo !!

soda ich denke mal das ichs gefunden habe warum pinzuweisungen in der grundconnfig verschwinden ,oder wieder mal weg sind .

es ist genauso wie im connektor. der speicher läuft voll mit dem text. also ich habe das wort button ganz weggegeben also auf die zahl begrenzt , und output und encoder auf drei

buchstaben gekürzt. im moment schauts so aus als wenn ok wäre . ich habe drei arduinos, für zwei fmc, komplett voll gemacht. also 148 pins belegt. jetzt kann ich alle pins


problemlos verwenden.

wem es genauso geht bitte probieren und hier eine rückmeldung geben.

lg haraldh
2018-09-26 21:45
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hi Harald,

soweit mir bekannt, wurden die Bezeichnungen in V7.5 auf 16 Zeichen begrenzt. Pizman benutzt nicht mehr als 8 Zeichen und hat dafür sein eigenes System entwickelt.

Super, wenn es durch das Kürzen der Bezeichnungen jetzt einwandfrei läuft.
Grüße,
Stephan (Time: UTC+2)
2018-09-26 22:17
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
HHhm....

Ich würde das ganze aber noch nicht als "erledigt" abspeichern.

Harald meinte ja (wenn ich es wörtlich nehme) das er die Vorgegeben "Namen" verwendet hat.
Er hat also wie es aussieht nicht wie andere user den Button z.b. "Hauptschalter_MCP-Bla 1245-XYZ" genannt sondern nur wie von MF vorgeschalgen "Button1"

"Button 1" enthält keine Sonderzeichen und ist klar unter 16 Zeichen ( Sogar unter meinen 8 Zeichen)

Wenn er trotzdem noch Probleme hatte dann sehe ich 2 Möglichkeiten.

1. Es hängt tatsächlich am Leerzeichen ( Der MF Standardname ist "Button LEERZEICHEN X"
Wenn er also den Namen in "1" ändert, verkürzt er nicht nur sondern entfernt auch daswomöglich problematische "Space"

2. Wir haben ein deutlich größeres Speicherproblem als angenommen.
Ich kenne mich mit Firmware wenig aus.... Werden in besagten RAM nur nur die Devicenames und Pins gespeichert ODER reden wir hier auch von der restlichen Firmware ?
Falls auch die Firmware dort liegt könnte womöglich mit 7.5 was dazugekommen sein das Platz braucht und so den Speicher nochmal deutlich einschränkt !

***********
@ Harald.
Vielleicht hast du Lust den "Punkt 1" ein für alle mal zu ergründen ( Da du ja klar das Problem belegen kannst)
Ändere mal nicht von "Button 1" zu "1" sondern gehe mal nur sicher das auf einen Mega kein Device länger als 16 Zeichen ist UND das keine Leerzeichen drin sind. .... Also mach mal aus "Button 1" eben "Button1"
Alternativ kannst du auch nen gegentest machen und du nennst deine "1" z.b. in "B 1" um.... So das zwichen B und 1 ein Leerzeichen ist.
Auf Deutsch.... Prüfe ob Leerzeichen was ändern (enn sie bei allen Devices sind und nicht nur wenigen)

Falls du das machst bitte teil uns hier in dem Topic das Ergebnis mit !
Good Luck !
2018-09-27 05:42
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Also von der Logik her sollte es (auch einem Arduino) egal sein, welche Zeichen in einem Namen verwendet werden.

Jedem Zeichen ist ein Zeichencode von 0x00 bis 0xFF zugeordnet, wobei 0x00 eine Sonderfunktion hat und eine Zeichenkette als beendet markiert. Somit dürften alle verbleibenden 255 Zeichen verwendbar sein.

Eine weitere Einschränkung sollte dahingehend bestehen, daß sich bei Device- und Confignamen die verwendbaren Zeichen auf die druckbaren, also sichtbaren Zeichen, beschränken. Auch bei den sichtbaren Zeichen macht es keinen Sinn, Symbole oder Grafikzeichen zu verwenden, will man die Begriffe nicht sinnentstellen, aber selbst das dürfte, rein logisch betrachtet, keine Einschränkung darstellen. Ausschlaggebend ist hier wiederum auch der verwendete Zeichensatz. Dieser wiederum ist abhängig von den Lädereinstellungen des Windows-Systems. Ein deutscher Zeichensatz beinhaltet andere Zeichen als der englische oder französische Zeichensatz.

Insofern macht es Sinn, sich auf Zeichen zu einigen, die in allen Zeichensätzen identisch sind. Das wäre meines Erachtens der ASCII-Zeichensatz. ASCII steht für American Standard Code for Information Interchange oder auf deutsch für Amerikanischer Standard-Code für den Informationsaustausch. Bezeichnet wird dieser Zeichensatz auch als ISO 8859 oder UNICODE-Zeichensatz.

Er besteht aus den Zeichen: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Dies sind aber nur die "druckbaren" Zeichen und haben den HEX-Code 0x20 bis 0x7E oder dezimal von 32 bis 127. Das sind 95 Zeichen.

Die Verwendung dieser Zeichen sollte somit keine Probleme bei der Benutzung machen. Sebastian müßte diesbezüglich einmal Stellung beziehen.

Nachdem nun der Umfang der verwendbaren Zeichen beschrieben wurde, geht es um deren Verarbeitung.

Bis Version 7.4 gab es hinsichtlich der Bezeichnungen für Devices und Configs keinerlei Einschränkungen. Seit Version 7.5 ist die Länge von Bezeichnungen und Gerätenamen auf 16 Zeichen beschränkt worden. Grund hierfür ist der Speicherbedarf im Arduino MEGA (und sicher auch anderen).

Pro MEGA ist die Anzahl der Devices auf 40 LEDs und/oder 50 Buttons begrenzt. Konnten vorher max. 50 Devices deklariert werden, die theoretisch mit bis zu 255 Zeichen Länge haben durften, entspricht dies einem Speicherplatz von mindestens 256 Bytes x 50 = 12.800 Bytes oder 12,5 kBytes, wenn die Zeichenkette + 1 Byte betragen würde - immer bezogen auf einen MEGA. Mit der Verkürzung der Zeichenketten auf 16 Zeichen werden "nur" noch 850 Bytes oder 0,83 kB an Speicher belegt. Ein enormer Unterschied!

Hinzu kommt, daß die Devices im EEPROM des MEGA abgelegt werden. Die Speichergröße des EEPROM beim MEGA beträgt aber nur 4096 Bytes. Es dürfte jedem sofort klar werden, daß bei einer unbegrenzten Länge (bis 256 Bytes) der Speicherbereich bereits bei 15 Devices erschöpft ist (einige Bytes sind reserviert für den Modulnamen und interne Verwaltung). Das kann also nicht funktionieren!

Mit der Begrenzung auf max. 16 Zeichen pro Devicenamen können also theoretisch 256 Devices dort abgespeichert werden. Da aber nur max. 50 Devices zugelassen werden, begrenzt dies den erforderlichen Speicherplatz auf 850 Bytes zuzüglich der für die Verwaltung notwendigen Bytes. Es verbleibt also noch ein Speicherplatz von 3kB im EEPROM.

Es möge nun jeder einmal nachprüfen, wie lang er seine Devicenamen gemacht hat und ob die 4096 Bytes dabei überschritten sein könnten.

Eine Kürzung der Devicenamen macht also absoluten Sinn!

Fazit: Nicht die verwendeten Zeichen selbst dürften hier das Problem darstellen, sondern die Länge der Einträge in ihrer Gesamtheit.

Sollte ich mit meiner Betrachtung auf dem Holzweg sein, bitte ich um Korrektur. Es wäre nicht das erste Mal, daß ich etwas dazulerne ;)
Grüße,
Stephan (Time: UTC+2)
2018-09-27 11:13
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hi Stephan....

Ich stimme grundsätzlich zu....
"Eigentlich" dürfte das Leerzeichen kein Problem sein da es ja "binär" gesehen auch nur ein Wert ist. Die "Terminating Zero" ist auch kein Faktor da bekanntlich die "Null" im String keine Null ist sondern auch einen Wert hat (30 hex/48 dez) .... Die tatsächliche Null ist dann wirklich ein Byte der 0000 0000 ist.. Aber egal.

Interessant ist dein ansatz die Speichermenge am Maximum zu sehen..... Ich denke Mobiflight braucht nur den Platz, den wir verwenden.
Ich denke kein User hat früher Namen mit 255 zeichen verwendet.... somit können wir das auch nicht pauschalisieren.
Ich kann mir auch jetzt nicht vorstellen das Sebastian pro Device 17 Bytes "reserviert" .... Wenn der Name nur "Test1" ist dann hat er eben auch nur 6 Byte.
Trotzdem bleibt die Frage.... Wenn Harald mit 50 Devices und einen Limit von 16 Stellen ein Problem hat.... Dieses gelöst ist wenn er die Namen nochmal extrem auf 1-2 Stellen reduziert .... DANN ist das Speicherproblem folgerlich so krass das auch 16 Stellen noch zu viel sind.


Denke hier kann nur Sebastian weiterhelfen.... Wir müssten also schlicht wissen.... WAS ist in diesen Speicher im schlimmsten Fall durch MF geladen.... Wieviel Bytes sind im schlechtesten Fall noch Frei .....m Und diese Zahl geteilt durch das maximum von 50 Devices müsste dann die Stellenzahl ergeben die noch ohne Probleme funtkioniert.
Good Luck !
2018-09-27 21:50
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hi,

ich habe das EEPROM schon einige Male ausgelesen. Von 0x00 bis 0x2F wird der vom User festgelegte Modulname abgelegt.
Ab 0x30 folgt die von MF vergebene Seriennummer, die mit 0x00 abgeschlossen wird.
Danach folgen die Devices. Bei einem LCD z.B. mit der Devicetyp in HEX, Adresse, Anzahl Zeichen, Anzahl Zeile und Devicename jeweils mit 0x2E abgeschlossen.
Ein Button z.B. mit Typ 1, Pin 2, Name XY, nächstes Device usw.

Wenn meine Rechnung stimmt, verbleiben etwas mehr als 4000 Bytes für die Devicenamen incl. der dazugehörigen Typen-, Pin- aller für die Devices notwendigen Angaben.
Wenn ich für ein FMC z.B. 50 Buttons definiere, kann ich theoretisch 4000/50=75 Zeichen + 5 Verwaltungsbytes, also 80 Zeichen hinterlegen.

75 Zeichen sind m. E. viel zu viel. Bei max. 16 Zeichen für einen Devicenamen + 5 Verwaltungsbytes wären dies 21 Bytes * 50 Buttons ca. 1050 Bytes. Verbleiben noch annähernd 3 kB freier Speicher im EEPROM.
Ich denke aber, daß diese Daten ins RAM geholt werden, findet auch hier die eigentliche Verlinkung der Daten zwischen Device und Konfiguration statt.

Wie die Daten RAM-technisch verarbeitet werden, kann ich nicht sagen - dazu müßte Sebastian etwas sagen können. Die obigen Berechnungsbeispiele beziehen sich auch nur auf EINEN Mega, sollte es Auswirkungen auf den Windows-Prozeß haben.
Es stellt sich ja auch die Frage, ob die Fehler im MEGA auftreten oder im Windows-System, also im laufenden Mobiflight-Prozeß. Auch hierzu müßte Sebastian was sagen können.

Die Namen auf 8 oder 12 Zeichen zu verkürzen, halte ich für grenzwertig. 16 sollten reichen. Ich selbst benutzebis zu 25 Zeichen und hatte damit noch keine Probleme. Aber ich habe beim Fliegen bislang "nur" 5 MEGAS aktiv.
Grüße,
Stephan (Time: UTC+2)
2018-09-27 23:24
icon