Trotz "Define" kommt "undeclared(fist use in this function)

Gast #5214244
Lesenswert?

Hallo zusammen,

ich habe 3 Datein (Defines.h, Defines.c, Main.c).
Ich möchte meinen Ports und Pins Namen geben, um dann mit diesen Namen 
statt PORTC oder PC0 etc. weiterzuarbeiten.

Defines.h
1
#define Disp_DDR DDRC
2
#define Pin_BF PC7
3

4
void uc_Init(void);

Defines.c
[c]
void uc_Init(void){
Disp_DDR |= (1<<Pin_BF);}
[\c]

Main.c
[c]
#include <stdint.h>
#include <avr/io.h>

int main(void)
{uc_Init();}
[\c]

Ich will also nur Pin7 von PortC als Ausgang definieren.
Beim compilieren bekomme ich aber immer folgenden Fehler:
'DDRC' undeclared (first use in this function)
'PC7' undeclared (first use in this function)

Ich benutzte das AVR Studio 5 und will einen Atmega8515 verwenden.
Ich hoffe ihr könnt weiterhelfen.
Gast #5214264
Lesenswert?

Oh, da habe ich wohl etwas vergessen...
Der Fehler kommt trotzdem noch. Als Update:

Defines.h
1
#define Disp_DDR DDRC
2
#define Pin_BF PC7
3

4
void uc_Init(void);

Defines.c
1
#include "Defines.h"
2
void uc_Init(void){
3
Disp_DDR |= (1<<Pin_BF);}

Main.c
1
#include <avr/io.h>
2
#include <stdint.h>
3
#include "Defines.h"
4
int main(void)
5
{uc_Init();}
#5214278
Lesenswert?

Noobie schrieb:
> Ich möchte den Atmega 8515 verwendet und habe dies auch im AVR Studio
> eingestllt. Dieser hat ein DDRC und PC7

Das ist sicherlich richtig, aber dass kann der C-Compiler nicht wissen. 
An dem "define" liegt es bestimmt nicht. Den Rat von Harry L. würde ich 
befolgen.

Hintergrund: Durch das "define" werden sämtliche vorkommende Symbole 
"Disp_DDR" durch "DDRC" ersetzt. D.h., überall wo du Disp_DDR verwendest 
steht jetzt DDRC. Damit der Compiler weiß, was er damit machen soll, 
muss das Symbol DDRC ebenfalls durch irgendwas definiert sein. Das wird 
dann sicherlich in der avr/io.h stehen. Wenn du die mit einem Editor 
öffnest wirst du sicherlich dort die Definition von DDRC finden. Lässt 
du diese "include" weg, gibt der Compiler dir die Fehlermeldung.
Gast #5214280
Lesenswert?

@Noobie

Harry hat die Lösung schon genannt, denke ich.

Du musst berücksichtigen, dass jede C-Datei für sich übersetzt wird und 
die Fehlermeldung genau und vollständig anschauen. Sie enthält 
Information darüber bei welchem Vorgang und welcher Datei der Fehler 
auftritt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren