Hallo! ich würde gerne eine eigene lib mit register definitionen usw schreiben. also ähnlich den at91sam7xxxx.h files. ich kenn das von anderen compilern (CVAVR)in etwa so: .equ PORTA 0x55 .equ TIMSK 0x10 ich hab jetz das selbe einfach mit keil versucht, bekomm abe immer die fehlermeldung "unexpected identifier" in jeder zeile. Hat jemand erfahrung mit dem erstellen solcher bibliotheken oder eine ahnung was hier falsch sein könnte?
Du willst eine Headerdatei schreiben, keine Library. Und in eine Headerdatei, die für einen C-Compiler gedacht ist, kommen C-Anweisungen bzw. Definitionen. Was Du da zitierst, sind Assembleranweisungen, und mit denen kann der C-Compiler nichts anfangen. Sieh Dir als Beispiel doch einfach mal eine der mit Deinem Compiler mitgelieferten Headerdateien an - das sind Textdateien, die kann man mit einem Texteditor bearbeiten.
Danke für deine Antwort. ich will eine headerdatei erstellen - stimmt. Ich hab mir die at91sam7x256.h natürlich angesehen, aber ich würde gerne ohne structs und pointer arbeiten. mir würde es gefallen, wenn ich auf "altmodische" art weiterarbeiten könnte - d.h.: die registeraddressen per #define zuweisen - also etwa so: #define PIOA_PER 0x0000FFFF funktoiniert nur so nicht - da ich das ganze im sourcecode wie folgt verwenden möchte: PIOA_PER = 0xFFFFFFFF; also dem register PIOA_PER den wert 0xFFFFFFFF zuweisen.
Also eben doch mit "pointer".
>#define PIOA_PER 0x0000FFFF
soll ja eine Speicheradresse sein, auf die du zugreifen möchtest.
Also ein Zeiger auf einen 32bit Wert:
(unsigned long *)0x0000FFFF
Um auf den Inhalt zuzugreifen, dereferenzierst du den noch:
*(unsigned long *)0x0000FFFF
und erhälst:
1 | #define PIOA_PER (*(unsigned long*)0x0000FFFF)
|
Wobei ich allerdings, ohne den SAM7 näher zu kennen, bezweifele dass 0x0000FFFF die Adresse des Registers ist, das du ansprechen möchtest. Eher ein Offset, oder?
Grad interessehalber mal nachgeschaut: http://www.keil.com/dd/docs/arm/atmel/sam7x/at91sam7x256.h Da steht doch alles drin.
1 | #define AT91C_PIOA_PER ((AT91_REG *) 0xFFFFF400) // (PIOA) PIO Enable Register
|
Wenn du da direkt draufschreiben möchtest, dann mach das so:
1 | *AT91C_PIOA_PER = 0xFFFFFFFF; |
super dank dir! ich versuch jetz mal so eine ehaderdatei zu schreiben - ich vermute allerdings stark, dass ich noch weitere fragen haben werde. :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.