PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anpassung einer Atmel AppNote an GCC



Dirk
19.07.2008, 16:22
Hallo Leute,

bei der Anpassung einer Atmel AppNote (C-Code mit IAR EWAAVR 4.11A Compiler) an AVR-GCC habe ich 2 Fragen:

1. Es wird die <inavr.h> includiert. Ist das in GCC die <avr/interrupt.h> ?

2. Als Compiler-Anweisungen kommen solche vor:
#if defined(abc) | defined(def) | defined(ghi)
In GCC kenne ich nur:
#ifdef(abc) und das ODER scheint da nicht zu gehen, oder gibt's da etwas anderes?

Gruß Dirk

sternst
19.07.2008, 16:38
1. Es wird die <inavr.h> includiert. Ist das in GCC die <avr/interrupt.h> ?
Ich kenne den IAR nicht, es würde mich aber schon sehr wundern, wenn es bei den Header-Dateien immer 1:1-Entsprechungen gäbe. Portiere den Code und inkludiere dann das, was du für den neuen Code brauchst. Werden dort Interrupts verwendet, dann inkludiere <avr/interrupt.h>. Wenn nicht, dann nicht.


2. Als Compiler-Anweisungen kommen solche vor:
#if defined(abc) | defined(def) | defined(ghi)
Die Zeile funktioniert genau so auch mit dem gcc.

SprinterSB
19.07.2008, 17:55
Hallo Leute,

2. Als Compiler-Anweisungen kommen solche vor:
#if defined(abc) | defined(def) | defined(ghi)
In GCC kenne ich nur:
#ifdef(abc) und das ODER scheint da nicht zu gehen, oder gibt's da etwas anderes?

Gruß Dirk

im Zweifelsfalle


#if defined(abc) || defined(def) || defined(ghi)

Ebenso gehen ! und && und runde Klammern

Dirk
19.07.2008, 18:13
@Stefan:

Portiere den Code und inkludiere dann das, was du für den neuen Code brauchst.
Ok, werde ich versuchen. Aktuell fehlen mir die USI-Register. Gibt's die nur in der uC-Def-Datei (z.B. beim ATtiny 26) oder auch allgemein in einer (nicht uC-spezifischen) Lib?

@SprinterSB:
Danke, habs hingekriegt.

Gruß Dirk

sternst
19.07.2008, 18:56
Ok, werde ich versuchen. Aktuell fehlen mir die USI-Register. Gibt's die nur in der uC-Def-Datei (z.B. beim ATtiny 26) oder auch allgemein in einer (nicht uC-spezifischen) Lib?
Spezifische Registerdefinitionen sind nur in den Header-Dateien derjenigen µCs, die diese Register auch haben. Du bindest die aber nicht selber direkt ein, sondern immer nur <avr/io.h> und setzt mcu passend.