Guten Tag
Ich plane an einem CAN Hausbus.
Jetzt steh ich vor dem Problem das ich verschiedenen Tasten nicht nur
eine sondern auch mehrere CAN Telegramme hinterlegen will und diese
durch eine bestimmte CAN Nachricht auch verändern kann (Telegramm
zufühgen,ändern & löschen).
Mein Gedanke ist einen Speicherbereich im eeprom zu reservieren für die
Telegramme. Das wenn ich z.b. Taste 12 drücke alle Telegramme die im
Speicher sind ,für Taste 12, gesendet werden.
Aufbau Speicherzelle eeprom
z.b.
Speicherzelle 0x051
Bit : 0 1 2 3 4 5 6 7 8
Daten: TastenNr | BoT | TxDrive | DoT | PID | SID | Wert0 | Wert1 |
Wert2
Beim Controllerstart ließt dieser in der init phase den komplette eeprom
Speicherbereich aus und legt diese Daten in ein dynamische struct,
dieser sich an die größe der im eeprom gespeicherten Tasteneinträge
anpasst, dazu wird im eeprom z.b. auf Speicherzelle 0x050 die
Gesamtzahl der Gespeicherten Tastentelegrammspeicherplätze eingetragen
(Dieser wird nach dem lesen des eepromspeicherbereich eingetragen).
Für den fall das ein Tastentelegramm per CAN Telegramm gelöscht wird,
wird im struct, bzw direkt danach im eeprom die Tastennummer des
Telegramm einfach auf 0x00 gesetzt. Dadurch wird gekennzeichnet das
diese Zelle frei ist.(diese wird beim Zählen der
Tastentelegrammspeicherplätze nicht mitgezählt, jedoch wird diese
Speicherzelle in einem anderen struct festgehalten, das diese frei ist).
Ich lese häufig das von Dynamischen struct bei Controllern abzuraten
ist, da der Speicher zu klein sein. Dazu gibts aber eine obergrenze an
speicherbaren Telegrammen z.b max 255.
was haltet ihr so vom groben Konzept?
gibts vielleicht besser möglichkeiten?
vielen dank für eure meinungen