Forum: Mikrocontroller und Digitale Elektronik Dynamische Struct, CAN Hausbus Taster zuweisung


von Jens B. (jayb)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

Jens Brücken schrieb:

> 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

Bit?

Wie legst du mit nur EINEM Bit eine Tasten Nummer fest.
Oder meintest du Byte?

von Karl H. (kbuchegg)


Lesenswert?

Jens Brücken schrieb:

> 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.

Dann brauchts auch nicht dynamisch zu sein.
Du definierst dir eine Struktur für 1 Telegramm (weil es ja sowieso 
immer den gleichen Aufbau hat) und legst dir ein entsprechend 
dimensioniertes Array davon an.

von Karl H. (kbuchegg)


Lesenswert?

> (Telegramm zufühgen,ändern & löschen).

Da musst du noch etwas Hinrschmalz investieren.
Wie änderst du ein bestimmtes Telegramm, wenn du es nur über die 
Tastennummer ansprechen kannst und du zu jeder Tastennummer mehrere 
mögliche Kandidaten hast?

von Jens B. (jayb)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Bit?
>
>
>
> Wie legst du mit nur EINEM Bit eine Tasten Nummer fest.
>
> Oder meintest du Byte?

Ja sry ich meinte Byte

Karl Heinz Buchegger schrieb:
>> (Telegramm zufühgen,ändern & löschen).
>
>
>
> Da musst du noch etwas Hinrschmalz investieren.
>
> Wie änderst du ein bestimmtes Telegramm, wenn du es nur über die
>
> Tastennummer ansprechen kannst und du zu jeder Tastennummer mehrere
>
> mögliche Kandidaten hast?

ja ich gebe zu in bin in der Anfangsphase meiner überlegungen..
hatte mir das so überlegt das geschaut wird ob unter dieser Tastennummer 
schon son ein Telegramm hinterlegt ist und wenn ja ob dies gelöscht oder 
so beibehalten soll...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.