AT91SAM7

Gast #575780
Lesenswert?
• ▲
▼
Hallo NG,

zunächst mal danke, an alle die mir bei den erstern Schritten mit meinem 
AT91SAM7256 Entwicklerboard geholfen haben. Greetings to: @Greg, 
@gerhard, @romanua and to all others...

Jetzt klappt das auch mit dem Samba und SRAM, nachdem ich als 
Linkereinstellungen die at91SAM7S256_64KRAM.xcl verwendet habe.

Allerdings ist mir etwas noch nicht ganz klar. Ich habe mir das mit den 
Ein-/Ausgängen eigentlich so vorgestellt:

z.B.:
1.) Pin17 auf Ausgang
2.) Pin17 auf High -> LED an
3.) Pin17 auf Low  -> LED aus

Allerdings verstehe ich leider nicht so ganz, warum das High und Low 
setzten des Pin17 an 2 verschiedenen Adressen (Offset 0x34 & 0x30) 
erfolgt und was es mit den Offsets 0x00 & 0x10 auf sich hat.

ldr r0, =0xFFFFF400

ldr r1, =100000000000000000b
str r1, [r0,#0x0]

ldr r1, =100000000000000000b
str r1, [r0,#0x10]

ldr r1, =100000000000000000b
str r1, [r0,#0x34]

ldr r1, =100000000000000000b
str r1, [r0,#0x30]

Wäre nett, wenn jemand erläutern könnte, was es mit den Adressen auf 
sich hat.

Vielen Dank!
Peter
Gast #575803
Lesenswert?
• ▲
▼
@peter
das setzen und löschen von bits erfolgt beim at91sam (und bei allen 
anderen arm's die ich kenne) immer über 2 adressen da damit aus 
verschiedenen programmteilen auf die port's bzw. sonstigen register der 
div. peripherals mit nur einem befehl zugegriffen werden kann (stichwort 
"atomic function").
wenn du es genauer wissen möchtest dann empfehle ich dir wieder mal 
deinen blick ins datasheet.

gruss
gerhard
Gast #575822
Lesenswert?
• ▲
▼
Hallo Gerhard,

bedeutet das dann, in meinem Beispiel, dass...

ldr r0, =0xFFFFF400

ldr r1, =100000000000000000b
str r1, [r0,#0x34]
...Pin17 auf High setzt?

ldr r1, =100000000000000000b
str r1, [r0,#0x30]
...Pin17 auf Low setzt?

Für was sind dann noch diese Beiden hier:?

ldr r1, =100000000000000000b
str r1, [r0,#0x0]

ldr r1, =100000000000000000b
str r1, [r0,#0x10]

MfG
Peter
Gast #575837
Lesenswert?
• ▲
▼
Nach der Optimierung hast du folgendes:

//Basis Adresse der PIO Registergruppe laden.
//Die eigentlichen register sind dann relative dieser Adresse an 
gesprochen
ldr r0, =0xFFFFF400

//Maske fuer PIOA17 Laden
ldr r1, =100000000000000000b

//PIOA17 als IO (in Gegenteil zu Peripherie ) einstellen
str r1, [r0,#0x0]

//PIOA17 als OUT einstellen (in Gegenteil zu IN)
str r1, [r0,#0x10]

//PIOA17 auf Low ziehen
str r1, [r0,#0x34]


// PIOA17 auf High ziehen
str r1, [r0,#0x30]



Peter, am Datenblatt Lesen kommst Du nicht vorbei. Schau Dir p. 234 an. 
Da steht alles.

mfg
Gast #575923
Lesenswert?
• ▲
▼
>Peter, am Datenblatt Lesen kommst Du nicht vorbei. Schau Dir p. 234 an.
>Da steht alles.

Ok. Allerdings habe ich schon wieder ein Problem. Auf arm.com haben die 
scheinbar die Seite umgestellt. Könnte mir jemand einen Link zum 
Datenblatt schicken?

Vielen Dank!
Peter

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.