Karl heinz Buchegger schrieb:
> Bronko Pavel schrieb:
>> Du hast absolut recht. Damit wird das ganze aber zu aufgebläht.
>
> Glaub ich zwar nicht, aber was willst du eigentlich wirklich machen?
>
> Das du hier Casts brauchst
>
1 | > static funcPtr_t MEM_ROM_LOC(*funcList[ABC][DEF]) =
|
2 | > {
|
3 | > {
|
4 | > (funcPtr_t *) s0_ts0
|
5 | > ,(funcPtr_t *) s0_ts1
|
6 | > },
|
7 | >
|
> macht mich stutzig, da sollte eigentlich keiner notwendig sein.
> Auch deine Einführung des Makros MEM_ROM_LOC macht die Sache nicht
> unbedingt übersichtlicher.
>
> Also: Was soll das Ganze eigentlich werden?
Ja das ist mein kleines zeitscheibenbasierte "Betriebssystem". Du kannst
dir das so vorstellen: Jede Zeitscheibe hat bis zu 10 Tasks
(Funktionen). Jeder "State" Besteht aus bis zu 4 Zeitscheiben und dann
gibt es noch 4 States. Das ganze ist über Präprozessorlogik so
zusammengesetz, das nur Speicher für die tatsächliche Anzahl von
Tasks/Timeslices/States kompiliert wird. Natürlich sind
Tasks/Timeslices/States in Ihrer Anzahl variabel, aber o. g. Werte haben
sich bewährt. Das ganze kommt bei mittelgroßen Projekten zum Einsatz. Da
ich den AVR kennenlernen will habe ich damit angefangen es zu portieren
und am Ende HW unabhängig zu machen, deshalb z.B. MEM_ROM_LOC() Macro
usw.. Wenn du sagst das Performance "unnötigerweise" verloren geht, dann
nehm ich halt einen größeren/schnelleren uC (ob ich 3€ oder 5€ zahl ist
daheim Wurst)
... werd versuchen das nach Jörgs Aussage doch ins Flash zu packen...
Gruß
Bronko