Servus,
ich habe eine lcd hd44780 lib für GPIO und I2C in C geschrieben
(stm32f1). Jetzt möchte ich möglichst die Funktionen nicht doppelt
schreiben, sondern elegand programmieren, damit der Code besser wartbar
ist.
Geht das überhaubt so? Sollte ich alle #defines überschreiben? Oder
jemand ein Tipp wie ich das elegant lösen kann. Vielleicht mithilfe
"weak"...
Vielen Dank.
PS: Die GPIO lib ist von CooCox. Die I2C lib habe ich mit DMA gelösst.
Diese funktioniert einbahnfrei.
Hallo aSma>>
habe gerade deinen Beitrag gefunden.
besteht die Möglichkeit das du dein Projekt veröffentlichst ?
habe gerade ein Problem, das mein Display nicht so will wie ich möchte
:)
würde gerne von deinen Projekt lernen
Gruß
Ich habe dasselbe "Problem" mit meinem SainsMart I2C RGB LCD Keypad.
In C habe ich es durch normierte Schnittstellen gelöst.
Das Fleury LCD Source hat die Daten über Funktionen weitergegeben an
einen "Driver".
Der Driver existiert für normale IO, für I2C GPIO Varianten und serielle
Ansteuerung.
Seit ein paar Tagen beschäftige ich mich sehr intensiv mit C++
Das hat mich mein Konzept der driver überdenken lassen.
Jetzt schreibe ich gerade einiges um auf C++.
Es ist super modular und funktioniert klasse!
Jede Hardware ist ein Objekt.
Besteht die Hardware aus verschiedenen Teilen, gibt es einfach objekte
für die Teilaufgaben.
Zb. das SainsMart RGB-LCD-Keypad hat ja ein normales hd44780 display und
einen MCP23017 I2C Gpio. So besteht die Hardware aus mehreren Objekten
die alle nur genau ihren Teil beitragen und direkt miteinander
kommunizieren.
Dabei weiss das MCP23017 Objekt nicht, was es steuert. Und das hd44780
Objekt weiss nicht, dass sein LCD über I2C angeschlossen ist. Das I2C
GPIO sieht "nach oben" aus wie ein normeles IO. Alles gebuffert und
gleiche IO in IO gruppen geführt, damit man die I2C zugriffe minimiert.
@wg (Gast)
Sry, leider kann ich dir nicht meinen Code aushändigen, wegen
jugendlichen Leichtsinn.
Ein paar Codesegmente kann ich keinen Urheber mehr zuordnen. Ich habe
einfach jegliche Kommentare früher immer gleich gelöscht. Heute verwende
ich nur freien Code, also nix mit GPL usw, da brauche ich kein Balast
mit mir zu führen.
Sonst hier auf der homepage gibt es für den avr genügend libs, die viel
besser dokumentiert sind als meine.
Bei Entwicklung vom Code ohnen logic analyzer kommt man nicht weit.
Wenn du Hilfe brauchst für deinen Code, dann stell einfach hier rein und
dir wird geholfen.
mfg