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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.