Hallo zusammen,
ich möchte meinen Spaghetticode aufteilen und ein C&H-File für das
ET-TFT320240 Rev3.2 Touchdisplay erstellen um es später in Projekte zu
includieren. Ich benutze AVR-GCC fürs Coden, das Display wird von einem
Atmega2561 im 8Bit Modus gesteuert.
Verkauf:
http://www.steitec.net/Displays/TFT-240x320-Touch-3-2.html
Forum Threads:
Beitrag "LCD 240x320 color + touch screen module"
Der Code war auf der mitgelieferten CD drauf ...
Bisher hatte ich alles in einer grossen C-Datei aber so langsam wirds
unüberschaubar. Die Reihenfolge des laufenden Codes ist genauso wie
gepostet.
Die Datei inkl. WatchDog Erweiterungen sieht etwas gekürzt
folgendermassen aus:
die Funktionen delay_ms weiss ich nicht wo/wie ich es auslagern soll:
macht irgendwie nur probleme;
../TFT.c:56: warning: implicit declaration of function '_delay_ms'
Ich habe jetzt mal angefangen auszulagern:
- Die ganzen Display Funktionen (Unterprogramme) in eine TFT.c Datei
- Die Funktionsprototypen, Farb Defines in eine TFT.h Datei
- Den Font in eine Font.c Datei inkl #include <avr/pgmspace.h> Header
der Font wird dann vermutlich in die TFT.c oder TFT.h Datei includiert.
Leider meckert mir der Compiler bei der EEPROM Struktur die sich jetzt
in der Main.h befindet.-für so einen lufthackn wie mich völlig
unverständlich:
../Main.h:164: error: expected '=', ',', ';', 'asm' or '__attribute__'
before 'EEMEM'
dazu noch die Warnungen:
../TFT.c:56: warning: implicit declaration of function '_delay_ms'
../Main.c:152: warning: implicit declaration of function 'delay_ms'
../Main.c:206: warning: implicit declaration of function 'init_port'
Vlt kann mir jemand ein Tip geben wie die Delay_ms & Init_port Funktion
ausgelagert werden muss. Ich wollt sie in das TFT.c oder TFT.h file
kopieren. -beides geht irgendwie nich so auf Anhieb.
Grundsätzlich steh ich grad wie der Ochs vorm Berg und wäre wirklich
dankbar für einen Schubser in die richtige Richtung.
Axxo: C-Skill =NOOB, hab auch grad kein Geld fürn C-Buch^^
Vielen Dank im Vorraus
lufthackn
Vorn Nachn schrieb:> Axxo: C-Skill =NOOB, hab auch grad kein Geld fürn C-Buch^^
Faule Ausrede für nicht lernen wollen; das gibt es auch alles im
Internet.
Vorn Nachn schrieb:> Leider meckert mir der Compiler bei der EEPROM Struktur die sich jetzt> in der Main.h befindet.-für so einen lufthackn wie mich völlig> unverständlich:> ../Main.h:164: error: expected '=', ',', ';', 'asm' or '__attribute__'> before 'EEMEM'>> dazu noch die Warnungen:> ../TFT.c:56: warning: implicit declaration of function '_delay_ms'> ../Main.c:152: warning: implicit declaration of function 'delay_ms'> ../Main.c:206: warning: implicit declaration of function 'init_port'
Da fehlen dir halt in Main.h noch die #include für EEMEM und _delay...
Und sonst: http://www.wachtler.de/ck/16_Aufteilung_mehrere_Quell.html
hallo,
vielen dank für die lehrreiche seite herr wachtler.
es läuft endlich und die lösung war so einfach...
da hätt ich mir auch das posten des codes echt sparen können. - lol
lufthackn
Vorn Nachn schrieb:> hallo,>> vielen dank für die lehrreiche seite herr wachtler.> es läuft endlich und die lösung war so einfach...> da hätt ich mir auch das posten des codes echt sparen können. - lol
Häng mal deine c und h Files als Attachment an.
Da sind sicher noch einige Unsauberkeiten übrig geblieben.
Ehe du das postest, geh noch mal dein h-File durch und überleg bei jedem
einzelnen Teil: Muss jemand, der dieses Modul benutzt, diese Information
wirklich wissen? Speziell bei Variablen ist es der falsche Weg, einfach
alle Variablen ins Header File zu packen. Ganz im Gegenteil, die meisten
werden als static Variablen im C File landen. Genauso wie einige
Hilfsfunktionen nicht im Header File auftauchen werden, sondern als
static Funktionen im C-File residieren werden.
Hallo,
CPU Frequenz Header Datei;
kann man eigentlich auch den Chip in einer Header einstellen?
-dann müsst ich nicht in den Projekt-Optionen den Chip manuell
einstellen.
"f_cpu.h" Datei;
Die Header Datei für das main modul,
"main.h" Datei;
1
#ifndef MAIN_H
2
#define MAIN_H
3
4
#define extern
5
#include"f_cpu.h"
6
#undef extern
7
8
#endif
In der Main wird die 3 Stufige Kalibrierung aufgerufen.
Anschliesend gibts ne Font Demo und ein Zeichenfeld zum Checken der
Kalibrierungsdaten. Ich nutze das Display über einen 8Bit Port
Interface, auf der mitgelieferten CD gibts auch Anschlussdiagramme für
SPI oder 16Bit.
"main.c" Datei:
Hab die f_cpu.h ausversehen nochmal mit hochgeladen;
Also die Projekt Dateien sind:
Source Files;
main.c
ettft240320tp3_2_rev_b.c
Header Files;
main.h
f_cpu.h
ettft240320tp3_2_rev_b.h
ettft240320tp3_2_rev_b_font.h
Bei gleicher Beschaltung muss nur noch die f_cpu an den Chip Takt
angepasst werden. Deshalb auch die Frage ob ich in dieser Header gleich
den Chip einstellen kann. Das wär saupraktisch., dann würd ich die in
cpu.h umbenennen.
grüße
Vorn Nachn schrieb:> Deshalb auch die Frage ob ich in dieser Header gleich> den Chip einstellen kann.
nein, weil der gcc per -m...-Aufruf den Controller wissen muß,
um den richtigen Code zu erzeugen.
Meines Wissen gibt es keine Möglichkeit, das im Quelltext zu
verdrahten.