www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7


Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den zwei Adressen bringt Geschwindigkeit. Beim AVR musst du, um 
ein Bit zu ändern:

- Register lesen
- Maske laden
- beide verknüpfen
- Register schreiben

Beim SAM7:

- Maske laden
- Register schreiben

Gruß
Jörn

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu langsam ;)

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, folks!

mir ist gerade beim Duschen die Idee gekommen: schau auf atmel.com. 
Nicht auf arm.com.

Also: noch ist nicht Hopfen und Malz verloren :-)

MfG
Peter

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>schau auf atmel.com

genau

mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.