mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster an AT91SAM7


Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo NG,

wie kann ich denn eine der beiden Taste auf meinem AT91SAM7256 abfragen?

bis jetzt versuche ich:

  ldr r0, =0xFFFFF400

taste  ldr  r1, [r0, #0x08]
  and   r1, r1, #10000000000000000000b
  cmp  r1, #10000000000000000000b
  bne  taste

Leider tut sich nichts. Es sollte halt eine der beiden Tasten (an PA19 
oder PA20) abgefragt werden...

Verständnisfrage: Sind automatisch alle PINS, die nicht über 0xFFFFF410 
auf Ausgang gesetzt sind, auf Input? Wenn nicht -> wie kann man denn 
dann PINS für die Eingabe konfigurieren?

Vielen Dank für jeden Hinweis!
Peter

Autor: Tobias Rohde (tobiasrohde)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach einem Reset, sind bei den AT91 alle PIOs als Eingänge mit aktivem 
Pullups konfiguriert.

Warum benutzt du keinen Compiler?

Grüße

Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Warum benutzt du keinen Compiler?

Ich weiß nicht, ich mache so viel den ganzen Tag mit irgendwelchen 
Hochsprachen. Irgendwie vergisst man bei all den GHz was da eigentlich 
für eine Leistung dahinter steckt. Auf dem ARM möchte ich mich halt ein 
bischen abreagieren. Ausgabe klappt jetzt schon ganz gut.

Ein kleines Beispiel für das Warten auf einen Tastendruck würde mich 
sehr freuen.

Grüße,
Peter

Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt habe ich im Manual gesehen, dass ich wahrscheinlich an der 
falschen Stelle nach Änderungen an den Pins suche. Gefunden habe ich:

0x003C Pin Data Status Register(3) PIO_PDSR Read-only

aber funktionieren tuts trotzdem nicht. Kann mir jemand sagen, was ich 
falsch mache?

  ldr r0, =0xFFFFF400

taste  ldr  r1, [r0, #0x3c]
  and   r1, r1, #10000000000000000000b
  cmp  r1, #10000000000000000000b
  bne  taste

Autor: Greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

hast du daran gedacht, dem PIO den Takt zuzuführen?
Ich weiß das Register nicht aus dem Kopf, aber dort kannst du den Takt 
für den PIO (USB, etc.) freischalten.

Nach einem Reset ist das Bit 0 -> kein Takt.


Gruß,
Greg.

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>hast du daran gedacht, dem PIO den Takt zuzuführen?
>Ich weiß das Register nicht aus dem Kopf, aber dort kannst du den Takt
>für den PIO (USB, etc.) freischalten.

>Nach einem Reset ist das Bit 0 -> kein Takt.

Für was ist der Takt genau notwendig?
Benötigt man den Takt nur für Input?
Gilt der Takt für alle Pins, oder kann man das festlegen?

...Weil dia Ausgabe auf meine LEDs funktioniert ja bereits...

Danke!

Autor: Greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

der Takt wird für das gesamte PIO-Modul geschaltet.
Ich schalte stets den Takt zu, wenn ich auf das PIO-modul zugreifen 
will.


Gruß,
Greg.

Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo NG,

jetzt habe ich wieder mal alles mögliche probiert. Aber leider klappt es 
immer noch nicht.

Im Manual-PDF (AT91 ARM Thumb-based Microcontrollers) habe ich auf
Seite 81 (Kap 15.5) genau das gefunden, was ich machen will. Kann mir 
mal bitte jemand verraten, wie ich die Beispiele oben mit der Tabelle 
darunter in Verbindung sehen darf? Ich denke, dann könnte ich wieder ein 
paar Schritte weiterkommen...

Vielen Dank!
Peter

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

du brauchst zwingend einen Takt im PIO Block sonst werden keine Eingänge 
eingelesen. Ausgänge funktionieren dagegen. Das ganze hängt damit 
zusammen das man in schnellen Logikdesigns alle internen Signale 
synchron zum Takt haben will weshalb Eingangssignale mit einem FF 
synchronisiert werden und dazu brauchts eben einen Takt -> PMC

Matthias

Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>synchronisiert werden und dazu brauchts eben einen Takt -> PMC

Ok, verstehe ich das richtig - Du meinst den 
Power-Management-Controller?

Da gibt es mehrere Clocks... welche muss ich mir denn genauer anschauen?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

es geht um die Peripheral Clocks. Wenn du das Register das diese 
aktiviert auf 0xFFFFFFFF setzt werden alle Peripheriegeräte mit Takt 
versorgt. Nicht optimal sollte aber erstmal helfen.

Matthias

Autor: Peter Pippinger (axis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias

hey, das ist ja total GENIAL! Die Taste tuts! Habe am Anfang noch:

  ldr r0, =0xFFFFFC00

  ldr r1, =0xFFFFFFFF
  str r1, [r0, #0x10]

hinzugefügt. Und das klappt! VIELEN DANK!

Eine Frage hätte ich aber noch: wenn 0xFFFFFFFF in 0xFFFFFC00 nicht so 
optimal ist - was wäre denn dann Optimal?

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ein Schuß in's Blaue:
0x4

Gruß,

Dominic

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.