In der Tast.h hast du "#define TAST_1 ( PIN 0)" geschrieben. Sollte das nich eher so sein "#define TAST_1 PC0" ? Klammer entfernen und statt PIN 0 PC0 schreiben.
MfG Hannes
Werbung
In der Tast.h hast du "#define TAST_1 ( PIN 0)" geschrieben. Sollte das nich eher so sein "#define TAST_1 PC0" ? Klammer entfernen und statt PIN 0 PC0 schreiben.
MfG Hannes
Geändert von 021aet04 (29.05.2012 um 09:57 Uhr)
Das hängt mit dem "#define PIN 1<<" zusammen, somit ergibt ein ( PIN 0) ein (1<<0) = 1.
Deine Schreibweise ist natürlich eleganter, aber meine funktioniert auch(Tut sie auch bei einigen anderen Bibliotheken die ich geschrieben hab)
[EDIT]
Ich hab nochmal nachgeguckt, deine Schreibweise geht nicht, weil (aus iom32.h):
Somit würde nur gehen:Code:/* PORTC */ #define PC7 7 #define PC6 6 #define PC5 5 #define PC4 4 #define PC3 3 #define PC2 2 #define PC1 1 #define PC0 0
( PIN PC0) bzw. (1<<PC0)
Aber das ändert auch nichts an dem Problem^^
Geändert von -schumi- (29.05.2012 um 09:35 Uhr)
Dann hast du selbst einen Fehler eingebaut. Du müsstest dann z.B. " PIN TAST_1 " schreiben. Du hast in der C-Datei nur TAST_1 bzw _2 geschrieben ohne PIN.
Dein Aufbau ist sehr kompliziert. Du hast auch geschrieben z.B. "#define TAST_PORT PORTC". Verwendest du den Port nur für die Taster?
MfG Hannes
Ne, an dem Port hängt auch noch ein LCD, das funzt super. [EDIT] Das LCD wird aber vor den Tasten initialisiert, also das macht nicht wieder alles kaputt[/EDIT]Verwendest du den Port nur für die Taster?
ich nimm jetz mal als Beispiel:Dann hast du selbst einen Fehler eingebaut. Du müsstest dann z.B. " PIN TAST_1 " schreiben. Du hast in der C-Datei nur TAST_1 bzw _2 geschrieben ohne PIN.
Mit "#define TAST_PORT PORTC" ergibt das:Code:TAST_PORT |= TAST_1 | TAST_2;
#define TAST_1 ( PIN 0)Code:PORTC |= TAST_1 | TAST_2;
#define TAST_2 ( PIN 1)Code:PORTC |= ( PIN 0) | TAST_2;
#define PIN 1<<Code:PORTC |= ( PIN 0) | ( PIN 1);
Müsste doch gehen??Code:PORTC |= ( 1<< 0) | ( 1<< 1);
Geändert von -schumi- (29.05.2012 um 09:41 Uhr)
Damit habe ich nur gemeint das du an dem Port bestimmt nicht nur 2 Tasten angeschlossen hast. Da du auch noch ein LCD angeschlossen hast passt der Name des Ports eigentlich nicht (LCD ist keine TasteVerwendest du den Port nur für die Taster?
Ne, an dem Port hängt auch noch ein LCD, das funzt super. [EDIT] Das LCD wird aber vor den Tasten initialisiert, also das macht nicht wieder alles kaputt[/EDIT]). Wenn du nur Tasten/Schalter/o.Ä angeschlossen hättest würde der Name passen.
So wie du es geschrieben hast sollte es funktionieren wenn, du hast recht. Hast du schon mit "PORTC |= (1<<PC0);" versucht? Eventuell übersetzt der Compiler das irgendwie nicht richtig.
Zur Leichteren Lesbarkeit könntest du auch "#define TAST_1 (1<<PC0)" schreiben.
PS: Die Ports sind Standartmäßig als Eingang definiert.
MfG Hannes
Das LCD hat ja auch wieder seine eigene Bibliothek![]()
Code:#define LCD_DDR DDRC #define LCD_PORT PORTC #define LCD_PIN PINC #define LCD_EN ( PIN 3) #define LCD_RS ( PIN 2) #define LCD_D0 ( PIN 4) #define LCD_D1 ( PIN 5) #define LCD_D2 ( PIN 6) #define LCD_D3 ( PIN 7)Jep. Habs auch schon mit "PORTC |= 0b00000011" versucht (in der Tast.c), hat aber auch nicht geholfen...Hast du schon mit "PORTC |= (1<<PC0);" versucht?
Ich weisPS: Die Ports sind Standartmäßig als Eingang definiert.Schadet aber trotzdem nicht das nochmal explizit ins Programm zu schreiben^^
Lesezeichen