Hallo zusammen, ich kämpfe mich nun als Anfänger durch den ganzen Informationsdschungel, um mein Projekt zu verwirklichen. Nachdem ich nun das LCD-Display zum Laufen bekommen habe beschäftige ich mich nun mit der Tasterentprellung. Nachdem ich überlegt habe, was ich brauche und was ich will, bin ich auf die schöne Lösung von Peter Dannegger gestoßen. Da diese sehr umfangreich ist, möchte ich den Code nun auslagern. Dies habe ich schon für den Code des Displays gemacht, allerdings waren das fertige Dateien (von Peter Fleury). Dazu habe ich lcd.c und lcd.h in mein Projekt eingebunden. Doch wie funktioniert das hiermit? http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Daraus kann man doch auch irgendwie eine taster.c und taster.h machen, oder? Danke im Voraus Jochen
Klar. Der Code kommt nach taster.c und in taster.h kommen die Funktionsprototypen, also uint8_t get_key_press(uint8_t key_mask); uint8_t get_key_short(uint8_t key_mask); etc. sowie die für den Gebrauch dieser Funktionen benötigten Defines KEY0 etc. Die Hardwaredefinitionen (welche I/O-Ports genutzt werden etc.) hingegen können in taster.c verbleiben, denn die interessieren höchstwahrscheinlich außerhalb von taster.c nicht. Die Funktion main ist so umzuschreiben, daß sie nur noch die Hardwareinitialisierung enthält (und sollte dann key_init oder so ähnlich heißen).
Hallo, Danke für die schnelle Antwort. Dann werde ich mien Glück mal nach Deinen Angaben versuchen. LG Jochen
@ Jochen S. Bitte berichte dann einmal über deine Ergebnisse. Ich habe das selber schon vesucht, anscheinend auch mit Erfolg. (zumindest keine Fehlermeldungen mehr im AVR Studio). Allerdings erscheint mir mein Vorgehen nicht logisch. (Habe den code leider gerade nicht hier bei der Arbeit) Gruß Thomas
Hallo Thomas, nach ein wenig Fleissarbeit und so manchem blöden Fehler, habe ich hier einen Code, der ganz gut läuft, so wie es momentan aussieht. Dieser besteht aus: tasten.c dort stehen alle Funktionen, die ich einfach aus dem ursprünglichen Quelltext herauskopiert habe. tasten.h Dort sind alle defines und Variablendeklarationen drin. Wichtig sind auch die Prototypen der ganzen Funktionen, die man für die Tastenentprellung nun benötigt. Also jede Funktion, die aus dem ursprünglichen Code herauskopiert und in "tasten.c" eingefügt wird, muss im "tasten.h"-file als Prototyp stehen. tasten_entprellen_v1: hier werden letztendlich die Funktionen aufgerufen und deren Ergebnisse (wenn sie welche zurückgeben) verarbeitet. Gruß Jochen
die LED_* Sachen haben in tasten.h nichts verloren. Genausowenig wie die Variablen key_state, key_press und key_rpt. Die bleiben als File-static Variablen in tasten.c Lies dir das mal durch FAQ Punkt 6: Header File, wie geht das?
Jochen S. schrieb: > Also jede Funktion, die aus dem > ursprünglichen Code herauskopiert und in "tasten.c" eingefügt wird, muss > im "tasten.h"-file als Prototyp stehen. Nein, da müssen nur die Funktionen deklariert werden, die außerhalb von "tasten.c" aufgerufen werden sollen. Funktionen, die nur innerhalb von "tasten.c" verwendet werden, sollten als static deklariert werden, und zwar mit den Prototypen am Anfang von "tasten.c" (zwischen #include-Orgie und Code). Auch sollten in der Headerdatei auch nur die Definitionen aufgeführt werden, die zum Gebrauch der von außen verwendeten Funktionen erforderlich sind, Interna sind entweder in "tasten.c" selbst oder einer zusätzlichen, privaten Headerdatei unterzubringen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.