'DDRA' undeclared (first use in this function)

OP #4327941
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
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
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
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
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.
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.