AVR & g++
Verfasst: Fr Okt 19, 2018 10:06 am
Hallo Profies,
ich habe folgende Idee, jedoch keine Ahnung, wie sich das umsetzen lässt.
Ich arbeite öfter mit den 8-Bit AVR µC. Alle diese Controller besitzen den identischen Rechenkern, der mit unterschiedlicher weiterer interner "Periferie" ausgestattet wird.
Beispiel: Ich habe einen ATmega168, der drei unabhängige Timer besitzt. Zwei davon sind nahezu identisch in der Funktion und einer ist ein 16-Bit Timer.
Ziel:
Ich möchte gerne die Funktionen der Timer in C++ in der Art nutzen, sodass ich eine Art Timer-Klasse habe, die ich beim Instantiieren - wie auch immer - konfiguriere (auf den speziellen Timer) und später im Code nutzen kann. Will ich einen weiteren Timer nutzen, so muss ich nur eine weitere Klasse instantiieren und konfigurieren.
Die Konfiguration zunächst statisch gehalten, um dem Compiler Möglichkeiten zur Optimierung zu lassen.
Frage:
Wie setzt man das um? Es gibt ja viele von diesen ATmegas (z.B. ATmega64, ATtiny, usw.), die alle irgendwie innen gleich funktionieren. Z.B. eine Klasse für RS232, I2C und natürlich die Timer ließen sich bestimmt entsprechend realisieren. Unterschiede ergeben sich nur in der Benamsung der entsprechenden Register (die sich in der Dokumentation und in Beispiel C-Code finden lässt).
Vielen Dank, dass Ihr mich an Eurer Weisheit teilhaben lasst.
Viele Grüße,
Lev
ich habe folgende Idee, jedoch keine Ahnung, wie sich das umsetzen lässt.
Ich arbeite öfter mit den 8-Bit AVR µC. Alle diese Controller besitzen den identischen Rechenkern, der mit unterschiedlicher weiterer interner "Periferie" ausgestattet wird.
Beispiel: Ich habe einen ATmega168, der drei unabhängige Timer besitzt. Zwei davon sind nahezu identisch in der Funktion und einer ist ein 16-Bit Timer.
Ziel:
Ich möchte gerne die Funktionen der Timer in C++ in der Art nutzen, sodass ich eine Art Timer-Klasse habe, die ich beim Instantiieren - wie auch immer - konfiguriere (auf den speziellen Timer) und später im Code nutzen kann. Will ich einen weiteren Timer nutzen, so muss ich nur eine weitere Klasse instantiieren und konfigurieren.
Die Konfiguration zunächst statisch gehalten, um dem Compiler Möglichkeiten zur Optimierung zu lassen.
Frage:
Wie setzt man das um? Es gibt ja viele von diesen ATmegas (z.B. ATmega64, ATtiny, usw.), die alle irgendwie innen gleich funktionieren. Z.B. eine Klasse für RS232, I2C und natürlich die Timer ließen sich bestimmt entsprechend realisieren. Unterschiede ergeben sich nur in der Benamsung der entsprechenden Register (die sich in der Dokumentation und in Beispiel C-Code finden lässt).
Vielen Dank, dass Ihr mich an Eurer Weisheit teilhaben lasst.
Viele Grüße,
Lev