Hallo Ihr Lieben,
für mein Endlos-Projekt "Wetterstation" (leider zu wenig Zeit um mal konzentriert an dem Thema zu arbeiten) ensteht gerade ein Rahmenprogramm mit grundlegenden Funktionen, welches in allen Sensoren, die über RS485-Systembus miteinander kommunizieren sollen, als Framework verwendet werden soll.
Da sich die Programmgrößen der einzelnen Slaves sehr unterscheiden werden, möchte ich wahlweise den ATmega8 oder ATmega168 oder ATmega328 einsetzen. Wahlweise auch mit 14,7456 oder 18,432 MHz für ATmega158 und ATmega328.
Wie üblich steck der Teufel im Detail, bzgl. der Timer und manchen Register, wo bei Benutzung unterschiedliche Programmierung notwendig ist.
Nun meine spannende Frage
Es gibt compiler directives wie z.B. "$crystal" oder "$regfile" oder "$hwstack" oder "$swstack" .....
Gibt es eine Möglichkeit oder habt Ihr eine Idee, wie man später diese Compiler-Schalter abfragen kann? Hinterlässt der Compiler im Sourcecode Spuren die ausgelesen werden können?
Wenn es nämlich darum geht, einen Timer Reoad zu machen dann ist das Clock abhängig und es wäre doch sehr schön, wenn man das generisch programmieren könnte
#if $crystal = 14Mhz tues dies $elseif $crystal=18MHz tue das $endif....
Gleiches mit $baud und $regfile etc.
Ich meine, das muss ja dynamisch garnicht funktionieren, denn die Werte stehen zur Compile-Zeit schon fest und es könnte ja fix compiliert werden.
Um es vorweg zu nehmen .... ich experimentiere und suche hier schon eine Weile und habe bisher nichts gefunden. Aber vielleicht habt ihr noch eine Idee.
Bisher habe ich das als Umweg mit Const = blablabla und #if realisiert. Das funktioniert recht gut, nur aber nicht beim $regfile .....
Grüße,
Markus
für mein Endlos-Projekt "Wetterstation" (leider zu wenig Zeit um mal konzentriert an dem Thema zu arbeiten) ensteht gerade ein Rahmenprogramm mit grundlegenden Funktionen, welches in allen Sensoren, die über RS485-Systembus miteinander kommunizieren sollen, als Framework verwendet werden soll.
Da sich die Programmgrößen der einzelnen Slaves sehr unterscheiden werden, möchte ich wahlweise den ATmega8 oder ATmega168 oder ATmega328 einsetzen. Wahlweise auch mit 14,7456 oder 18,432 MHz für ATmega158 und ATmega328.
Wie üblich steck der Teufel im Detail, bzgl. der Timer und manchen Register, wo bei Benutzung unterschiedliche Programmierung notwendig ist.
Nun meine spannende Frage
Es gibt compiler directives wie z.B. "$crystal" oder "$regfile" oder "$hwstack" oder "$swstack" .....
Gibt es eine Möglichkeit oder habt Ihr eine Idee, wie man später diese Compiler-Schalter abfragen kann? Hinterlässt der Compiler im Sourcecode Spuren die ausgelesen werden können?
Wenn es nämlich darum geht, einen Timer Reoad zu machen dann ist das Clock abhängig und es wäre doch sehr schön, wenn man das generisch programmieren könnte
#if $crystal = 14Mhz tues dies $elseif $crystal=18MHz tue das $endif....
Gleiches mit $baud und $regfile etc.
Ich meine, das muss ja dynamisch garnicht funktionieren, denn die Werte stehen zur Compile-Zeit schon fest und es könnte ja fix compiliert werden.
Um es vorweg zu nehmen .... ich experimentiere und suche hier schon eine Weile und habe bisher nichts gefunden. Aber vielleicht habt ihr noch eine Idee.
Bisher habe ich das als Umweg mit Const = blablabla und #if realisiert. Das funktioniert recht gut, nur aber nicht beim $regfile .....
Grüße,
Markus