'DDRA' undeclared (first use in this function)

OP #4327941
Lesenswert?
• ▲
▼
Hallo alle

Ich habe mir eine Hardware aufgestellt mit der ich das Programmieren der 
Schnittstellen übel will. Nun wollte ich mal einen Ausgang setzt damit 
ich sehen kann ob das Programmieren auch wirklich korrekt von statten 
geht.
Jetzt Reklamiert mein Controller aber immer. Er erkennt den Befehl DDRA 
oder auch DDRB nicht.

'DDRA' undeclared (first use in this function)

Dies ist die Fehler Meldung die er raus gibt. Als ich Herrn Google frage 
was das Problem ist, sagte er mir ich soll überprüfen ob ich den Chip 
richtig definiert habe. Dies ist also nicht Fall. Und das <avr/io.h> 
habe ich auch includet.

Weis jemand von euch was ich falsch mache oder eben nicht mache?

Danke und Gruss
#4327962
Lesenswert?
• ▲
▼
Was schreibst du denn da für ein Durcheinander?

Welchen Controller nutzt du?
Wie sieht deine Entwicklungsumgebung aus?
Wie sieht dein Quellcode aus?

Dein Controller "reklamiert" gar nichts.. eher eines deiner Programme in 
der benutzten Toolchain (Compiler, Linker).

Gruß
Dennis
OP #4327963
Lesenswert?
• ▲
▼
Ich Arbeite neuerdings mit dem Atmel Studio 7. Ich benutzte den 
Atxmega128A3U.

Mein Programm (wen man das so nennen kann) sieht momentan vollendender 
Massen aus:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>

#define MCU = AVR_ATXMEGA128A3U
#define F_CPU 4000000UL


int main(void)
{
    DDRA = 0xFF;
    while (1)
    {
    }
}
Gast #4327966
Lesenswert?
• ▲
▼
Basil K. schrieb:
> Mein Programm (wen man das so nennen kann) sieht momentan vollendender
> Massen aus:

wenn du die CPU erst nach der io.h festlegst bringt das recht wenig.


MCU und F_CPU sollten nicht in einer Quelldatei stehen, das sollte in 
den Projekteinstellungen hinterlegt werden.
Moderator Persönliche Seite #4327967
Lesenswert?
• ▲
▼
Basil K. schrieb:
> Ich Arbeite neuerdings mit dem Atmel Studio 7. Ich benutzte den
> Atxmega128A3U.

Dann solltest du dir mal im Datenblatt deines Controllers ansehen,
wie die Peripherieblöcke dort aufgebaut sind.

Auch wenn ein Xmega im Kern ein AVR ist, die Peripherie ist völlig
anders als bei den alten AVRs.  Ein „DDRA“ gibt es da einfach mal
nicht.

> #define MCU = AVR_ATXMEGA128A3U

Mit der Programmiersprache C solltest du auch noch ein wenig üben.

Diese Zeile schadet zwar gewiss nichts – aber sie ist auch völlig
nutzlos.
#4327992
Lesenswert?
• ▲
▼
Beim XMega sind es:

PORTA.DIR (Richtung)
PORTA.OUT (Ausgabe)
PORTA.IN  (Einlesen)

Dann noch einige Spezialitäten, die ich mittlerweile klasse finde:
PORTA.DIRSET = 0x00110000 (setzt nur Bits 4 und 5, andere bleiben 
gleich)
PORTA.DIRCLR = 0x00110000 (Löscht nur Bits 4 und 5, andere bleiben 
gleich)

Dementsprechend noch für die Ausgabe:
PORTA.OUTSET
PORTA.OUTCLR

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